void play_game(void *data) { View *view = static_cast<View *>(data); // TODO: find out why this doesn't work /*if(view->game.network_client.connected()) return;*/ if(!view->game.network_client.connected()) { view->game.Connect(); } else { View::LoadState::LoginBox(view); } } void View::LoadState::MainMenu(View *view) { shared_ptr<Window> main_window(new Window(sdl_rect(0, 0, 640, 480))); int bg_id = std::rand() % 7; bg_id += 130; std::string fn = "gfx/gui/0/" + Variant(bg_id).GetString() + ".bmp"; SDL_Texture *menu_background = view->texture_loader->LoadTexture(fn, view->renderer, false); main_window->background = menu_background; SDL_Texture *button_set = view->texture_loader->LoadTexture("gfx/gui/0/113.bmp", view->Renderer()); SDL_Rect rect; rect.x = 25; rect.y = 280; rect.w = 180; rect.h = 40; shared_ptr<Button> button(new Button(rect, button_set, 0)); main_window->AddChild(button); rect.y += rect.h; button.reset(new Button(rect, button_set, 1)); button->RegisterFunction(BUTTON_EVENT_CLICK, play_game, view); main_window->AddChild(button); rect.y += rect.h; button.reset(new Button(rect, button_set, 2)); main_window->AddChild(button); rect.y += rect.h; button.reset(new Button(rect, button_set, 3)); button->RegisterFunction(BUTTON_EVENT_CLICK, exit_game, view); main_window->AddChild(button); view->gui.AddChild(main_window, "main_window"); }