From 6548c42d385d50118b54321af6974df8343d78cf Mon Sep 17 00:00:00 2001 From: Titus Tscharntke Date: Sat, 15 May 2010 18:40:58 +0000 Subject: [PATCH] autorefresh direct create game ( not completly finished yet ) --- .../menu/menu_state_masterserver.cpp | 43 +++++++++++++++++-- .../glest_game/menu/menu_state_masterserver.h | 5 +++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/source/glest_game/menu/menu_state_masterserver.cpp b/source/glest_game/menu/menu_state_masterserver.cpp index 00825d46e..c9b74b77f 100644 --- a/source/glest_game/menu/menu_state_masterserver.cpp +++ b/source/glest_game/menu/menu_state_masterserver.cpp @@ -16,6 +16,7 @@ #include "core_data.h" #include "config.h" #include "menu_state_connected_game.h" +#include "menu_state_custom_game.h" #include "menu_state_root.h" #include "metrics.h" #include "network_manager.h" @@ -64,7 +65,7 @@ ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex) ipAddressLabel.setText(masterServerInfo->getIpAddress()); //game setup info: - i+=70; + i+=100; techLabel.init(i,startOffset-lineOffset); techLabel.setText(masterServerInfo->getTech()); @@ -125,20 +126,35 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen MenuState(program, mainMenu, "root") //← set on masterserver { Lang &lang= Lang::getInstance(); + + autoRefreshTime=0; mainMessageBox.init(lang.get("Ok")); mainMessageBox.setEnabled(false); + lastRefreshTimer= time(NULL); mainMessageBoxState=0; // header labelTitle.init(330, 700); labelTitle.setText(lang.get("AvailableServers")); - buttonRefresh.init(450, 70, 150); - buttonReturn.init(150, 70, 150); + // bottom + + buttonReturn.init(50, 70, 150); + buttonCreateGame.init(300, 70, 150); + buttonRefresh.init(550, 70, 150); buttonRefresh.setText(lang.get("RefreshList")); buttonReturn.setText(lang.get("Return")); + buttonCreateGame.setText(lang.get("CustomGame")); + labelAutoRefresh.setText(lang.get("AutoRefreshRate")); + labelAutoRefresh.init(800,100); + listBoxAutoRefresh.init(800,70); + listBoxAutoRefresh.pushBackItem(lang.get("off")); + listBoxAutoRefresh.pushBackItem("1"); + listBoxAutoRefresh.pushBackItem("2"); + listBoxAutoRefresh.pushBackItem("3"); + listBoxAutoRefresh.setSelectedItemIndex(0); NetworkManager::getInstance().end(); NetworkManager::getInstance().init(nrClient); @@ -191,6 +207,16 @@ void MenuStateMasterserver::mouseClick(int x, int y, MouseButton mouseButton){ BaseThread::shutdownAndWait(updateFromMasterserverThread); mainMenu->setState(new MenuStateRoot(program, mainMenu)); } + else if(buttonCreateGame.mouseClick(x, y)){ + soundRenderer.playFx(coreData.getClickSoundB()); + + BaseThread::shutdownAndWait(updateFromMasterserverThread); + mainMenu->setState(new MenuStateCustomGame(program, mainMenu)); + } + else if(listBoxAutoRefresh.mouseClick(x, y)){ + soundRenderer.playFx(coreData.getClickSoundA()); + autoRefreshTime=10*listBoxAutoRefresh.getSelectedItemIndex(); + } else{ for(int i=0; ibuttonMouseClick(x, y)){ @@ -208,6 +234,9 @@ void MenuStateMasterserver::mouseMove(int x, int y, const MouseState *ms){ } buttonRefresh.mouseMove(x, y); buttonReturn.mouseMove(x, y); + buttonCreateGame.mouseMove(x, y); + listBoxAutoRefresh.mouseMove(x, y); + for(int i=0; ibuttonMouseMove(x, y); } @@ -224,6 +253,10 @@ void MenuStateMasterserver::render(){ renderer.renderButton(&buttonRefresh); renderer.renderButton(&buttonReturn); renderer.renderLabel(&labelTitle); + renderer.renderLabel(&labelAutoRefresh); + renderer.renderButton(&buttonCreateGame); + renderer.renderListBox(&listBoxAutoRefresh); + for(int i=0; irender(); } @@ -231,6 +264,10 @@ void MenuStateMasterserver::render(){ } void MenuStateMasterserver::update(){ + if(autoRefreshTime!=0 && difftime(time(NULL),lastRefreshTimer) >= autoRefreshTime ){ + needUpdateFromServer = true; + lastRefreshTimer= time(NULL); + } } void MenuStateMasterserver::simpleTask() { diff --git a/source/glest_game/menu/menu_state_masterserver.h b/source/glest_game/menu/menu_state_masterserver.h index b2f9b922c..bc8108469 100644 --- a/source/glest_game/menu/menu_state_masterserver.h +++ b/source/glest_game/menu/menu_state_masterserver.h @@ -68,6 +68,9 @@ class MenuStateMasterserver : public MenuState, public SimpleTaskCallbackInterfa private: GraphicButton buttonRefresh; GraphicButton buttonReturn; + GraphicButton buttonCreateGame; + GraphicLabel labelAutoRefresh; + GraphicListBox listBoxAutoRefresh; GraphicLabel labelTitle; ServerLines serverLines; @@ -75,6 +78,8 @@ private: int mainMessageBoxState; bool needUpdateFromServer; + int autoRefreshTime; + time_t lastRefreshTimer; SimpleTaskThread *updateFromMasterserverThread; public: