autorefresh

direct create game ( not completly finished yet )
This commit is contained in:
Titus Tscharntke
2010-05-15 18:40:58 +00:00
parent 0f6605fc4a
commit 6548c42d38
2 changed files with 45 additions and 3 deletions

View File

@@ -16,6 +16,7 @@
#include "core_data.h" #include "core_data.h"
#include "config.h" #include "config.h"
#include "menu_state_connected_game.h" #include "menu_state_connected_game.h"
#include "menu_state_custom_game.h"
#include "menu_state_root.h" #include "menu_state_root.h"
#include "metrics.h" #include "metrics.h"
#include "network_manager.h" #include "network_manager.h"
@@ -64,7 +65,7 @@ ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex)
ipAddressLabel.setText(masterServerInfo->getIpAddress()); ipAddressLabel.setText(masterServerInfo->getIpAddress());
//game setup info: //game setup info:
i+=70; i+=100;
techLabel.init(i,startOffset-lineOffset); techLabel.init(i,startOffset-lineOffset);
techLabel.setText(masterServerInfo->getTech()); techLabel.setText(masterServerInfo->getTech());
@@ -126,19 +127,34 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen
{ {
Lang &lang= Lang::getInstance(); Lang &lang= Lang::getInstance();
autoRefreshTime=0;
mainMessageBox.init(lang.get("Ok")); mainMessageBox.init(lang.get("Ok"));
mainMessageBox.setEnabled(false); mainMessageBox.setEnabled(false);
lastRefreshTimer= time(NULL);
mainMessageBoxState=0; mainMessageBoxState=0;
// header // header
labelTitle.init(330, 700); labelTitle.init(330, 700);
labelTitle.setText(lang.get("AvailableServers")); labelTitle.setText(lang.get("AvailableServers"));
buttonRefresh.init(450, 70, 150); // bottom
buttonReturn.init(150, 70, 150);
buttonReturn.init(50, 70, 150);
buttonCreateGame.init(300, 70, 150);
buttonRefresh.init(550, 70, 150);
buttonRefresh.setText(lang.get("RefreshList")); buttonRefresh.setText(lang.get("RefreshList"));
buttonReturn.setText(lang.get("Return")); 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().end();
NetworkManager::getInstance().init(nrClient); NetworkManager::getInstance().init(nrClient);
@@ -191,6 +207,16 @@ void MenuStateMasterserver::mouseClick(int x, int y, MouseButton mouseButton){
BaseThread::shutdownAndWait(updateFromMasterserverThread); BaseThread::shutdownAndWait(updateFromMasterserverThread);
mainMenu->setState(new MenuStateRoot(program, mainMenu)); 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{ else{
for(int i=0; i<serverLines.size(); ++i){ for(int i=0; i<serverLines.size(); ++i){
if(serverLines[i]->buttonMouseClick(x, y)){ if(serverLines[i]->buttonMouseClick(x, y)){
@@ -208,6 +234,9 @@ void MenuStateMasterserver::mouseMove(int x, int y, const MouseState *ms){
} }
buttonRefresh.mouseMove(x, y); buttonRefresh.mouseMove(x, y);
buttonReturn.mouseMove(x, y); buttonReturn.mouseMove(x, y);
buttonCreateGame.mouseMove(x, y);
listBoxAutoRefresh.mouseMove(x, y);
for(int i=0; i<serverLines.size(); ++i){ for(int i=0; i<serverLines.size(); ++i){
serverLines[i]->buttonMouseMove(x, y); serverLines[i]->buttonMouseMove(x, y);
} }
@@ -224,6 +253,10 @@ void MenuStateMasterserver::render(){
renderer.renderButton(&buttonRefresh); renderer.renderButton(&buttonRefresh);
renderer.renderButton(&buttonReturn); renderer.renderButton(&buttonReturn);
renderer.renderLabel(&labelTitle); renderer.renderLabel(&labelTitle);
renderer.renderLabel(&labelAutoRefresh);
renderer.renderButton(&buttonCreateGame);
renderer.renderListBox(&listBoxAutoRefresh);
for(int i=0; i<serverLines.size(); ++i){ for(int i=0; i<serverLines.size(); ++i){
serverLines[i]->render(); serverLines[i]->render();
} }
@@ -231,6 +264,10 @@ void MenuStateMasterserver::render(){
} }
void MenuStateMasterserver::update(){ void MenuStateMasterserver::update(){
if(autoRefreshTime!=0 && difftime(time(NULL),lastRefreshTimer) >= autoRefreshTime ){
needUpdateFromServer = true;
lastRefreshTimer= time(NULL);
}
} }
void MenuStateMasterserver::simpleTask() { void MenuStateMasterserver::simpleTask() {

View File

@@ -68,6 +68,9 @@ class MenuStateMasterserver : public MenuState, public SimpleTaskCallbackInterfa
private: private:
GraphicButton buttonRefresh; GraphicButton buttonRefresh;
GraphicButton buttonReturn; GraphicButton buttonReturn;
GraphicButton buttonCreateGame;
GraphicLabel labelAutoRefresh;
GraphicListBox listBoxAutoRefresh;
GraphicLabel labelTitle; GraphicLabel labelTitle;
ServerLines serverLines; ServerLines serverLines;
@@ -75,6 +78,8 @@ private:
int mainMessageBoxState; int mainMessageBoxState;
bool needUpdateFromServer; bool needUpdateFromServer;
int autoRefreshTime;
time_t lastRefreshTimer;
SimpleTaskThread *updateFromMasterserverThread; SimpleTaskThread *updateFromMasterserverThread;
public: public: