Host_Game instead of Custom_Game in Lan_Game/Internet_Game

This commit is contained in:
Titus Tscharntke 2011-10-30 22:23:57 +00:00
parent 0f6e8ba928
commit 9bc8ecb2c8
6 changed files with 47 additions and 14 deletions

View File

@ -199,7 +199,7 @@ void Program::initServer(WindowGl *window, bool autostart,bool openNetworkSlots,
init(window); init(window);
mainMenu= new MainMenu(this); mainMenu= new MainMenu(this);
setState(mainMenu); setState(mainMenu);
mainMenu->setState(new MenuStateCustomGame(this, mainMenu, openNetworkSlots, false, autostart, NULL, masterserverMode)); mainMenu->setState(new MenuStateCustomGame(this, mainMenu, openNetworkSlots, pNewGame, autostart, NULL, masterserverMode));
} }
void Program::initServer(WindowGl *window, GameSettings *settings) { void Program::initServer(WindowGl *window, GameSettings *settings) {
@ -208,7 +208,7 @@ void Program::initServer(WindowGl *window, GameSettings *settings) {
init(window); init(window);
mainMenu= new MainMenu(this); mainMenu= new MainMenu(this);
setState(mainMenu); setState(mainMenu);
mainMenu->setState(new MenuStateCustomGame(this, mainMenu, false, false, true, settings)); mainMenu->setState(new MenuStateCustomGame(this, mainMenu, false, pNewGame, true, settings));
} }
void Program::initClient(WindowGl *window, const Ip &serverIp) { void Program::initClient(WindowGl *window, const Ip &serverIp) {

View File

@ -15,6 +15,7 @@
#include "config.h" #include "config.h"
#include "menu_state_new_game.h" #include "menu_state_new_game.h"
#include "menu_state_masterserver.h" #include "menu_state_masterserver.h"
#include "menu_state_join_game.h"
#include "metrics.h" #include "metrics.h"
#include "network_manager.h" #include "network_manager.h"
#include "network_message.h" #include "network_message.h"
@ -47,7 +48,7 @@ struct FormatString {
// ===================================================== // =====================================================
MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu, MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
bool openNetworkSlots,bool parentMenuIsMasterserver, bool autostart, bool openNetworkSlots,ParentMenuState parentMenuState, bool autostart,
GameSettings *settings, bool masterserverMode) : GameSettings *settings, bool masterserverMode) :
MenuState(program, mainMenu, "new-game") MenuState(program, mainMenu, "new-game")
{ {
@ -58,6 +59,7 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
this->lastMasterServerSettingsUpdateCount = 0; this->lastMasterServerSettingsUpdateCount = 0;
this->masterserverModeMinimalResources = true; this->masterserverModeMinimalResources = true;
this->parentMenuState=parentMenuState;
//printf("this->masterserverMode = %d [%d]\n",this->masterserverMode,masterserverMode); //printf("this->masterserverMode = %d [%d]\n",this->masterserverMode,masterserverMode);
@ -124,8 +126,6 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
parentMenuIsMs=parentMenuIsMasterserver;
needToSetChangedGameSettings = false; needToSetChangedGameSettings = false;
needToRepublishToMasterserver = false; needToRepublishToMasterserver = false;
needToBroadcastServerSettings = false; needToBroadcastServerSettings = false;
@ -375,7 +375,7 @@ MenuStateCustomGame::MenuStateCustomGame(Program *program, MainMenu *mainMenu,
listBoxPublishServer.init(50, networkPos, 100); listBoxPublishServer.init(50, networkPos, 100);
listBoxPublishServer.pushBackItem(lang.get("Yes")); listBoxPublishServer.pushBackItem(lang.get("Yes"));
listBoxPublishServer.pushBackItem(lang.get("No")); listBoxPublishServer.pushBackItem(lang.get("No"));
if(openNetworkSlots) { if(openNetworkSlots && parentMenuState!=pLanGame) {
listBoxPublishServer.setSelectedItemIndex(0); listBoxPublishServer.setSelectedItemIndex(0);
} }
else { else {
@ -867,8 +867,7 @@ void MenuStateCustomGame::returnToParentMenu() {
needToBroadcastServerSettings = false; needToBroadcastServerSettings = false;
needToRepublishToMasterserver = false; needToRepublishToMasterserver = false;
lastNetworkPing = time(NULL); lastNetworkPing = time(NULL);
bool returnToMasterServerMenu = parentMenuIsMs; ParentMenuState parentMenuState = this->parentMenuState;
/* /*
if(publishToMasterserverThread != NULL && if(publishToMasterserverThread != NULL &&
publishToMasterserverThread->canShutdown() == true && publishToMasterserverThread->canShutdown() == true &&
@ -882,11 +881,16 @@ void MenuStateCustomGame::returnToParentMenu() {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
forceWaitForShutdown = false; forceWaitForShutdown = false;
if(returnToMasterServerMenu) { if(parentMenuState==pMasterServer) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
cleanup(); cleanup();
mainMenu->setState(new MenuStateMasterserver(program, mainMenu)); mainMenu->setState(new MenuStateMasterserver(program, mainMenu));
} }
else if(parentMenuState==pLanGame) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
cleanup();
mainMenu->setState(new MenuStateJoinGame(program, mainMenu));
}
else { else {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
cleanup(); cleanup();

View File

@ -25,6 +25,12 @@ namespace Glest { namespace Game {
class SwitchSetupRequest; class SwitchSetupRequest;
class ServerInterface; class ServerInterface;
enum ParentMenuState {
pNewGame,
pMasterServer,
pLanGame
};
// =============================== // ===============================
// class MenuStateCustomGame // class MenuStateCustomGame
// =============================== // ===============================
@ -120,7 +126,7 @@ private:
std::map<string,string> publishToServerInfo; std::map<string,string> publishToServerInfo;
SimpleTaskThread *publishToMasterserverThread; SimpleTaskThread *publishToMasterserverThread;
bool parentMenuIsMs; ParentMenuState parentMenuState;
int soundConnectionCount; int soundConnectionCount;
bool showMasterserverError; bool showMasterserverError;
@ -174,7 +180,7 @@ private:
public: public:
MenuStateCustomGame(Program *program, MainMenu *mainMenu , MenuStateCustomGame(Program *program, MainMenu *mainMenu ,
bool openNetworkSlots= false, bool parentMenuIsMasterserver=false, bool openNetworkSlots= false, ParentMenuState parentMenuState=pNewGame,
bool autostart=false,GameSettings *settings=NULL,bool masterserverMode=false); bool autostart=false,GameSettings *settings=NULL,bool masterserverMode=false);
virtual ~MenuStateCustomGame(); virtual ~MenuStateCustomGame();

View File

@ -17,6 +17,7 @@
#include "core_data.h" #include "core_data.h"
#include "config.h" #include "config.h"
#include "menu_state_new_game.h" #include "menu_state_new_game.h"
#include "menu_state_custom_game.h"
#include "metrics.h" #include "metrics.h"
#include "network_manager.h" #include "network_manager.h"
#include "network_message.h" #include "network_message.h"
@ -74,6 +75,10 @@ MenuStateJoinGame::MenuStateJoinGame(Program *program, MainMenu *mainMenu, bool
buttonConnect.init(450, 300, 125); buttonConnect.init(450, 300, 125);
buttonConnect.setText(lang.get("Connect")); buttonConnect.setText(lang.get("Connect"));
buttonCreateGame.registerGraphicComponent(containerName,"buttonCreateGame");
buttonCreateGame.init(450, 250, 125);
buttonCreateGame.setText(lang.get("HostGame"));
buttonAutoFindServers.registerGraphicComponent(containerName,"buttonAutoFindServers"); buttonAutoFindServers.registerGraphicComponent(containerName,"buttonAutoFindServers");
buttonAutoFindServers.init(595, 300, 125); buttonAutoFindServers.init(595, 300, 125);
buttonAutoFindServers.setText(lang.get("FindLANGames")); buttonAutoFindServers.setText(lang.get("FindLANGames"));
@ -162,6 +167,7 @@ void MenuStateJoinGame::reloadUI() {
buttonReturn.setText(lang.get("Return")); buttonReturn.setText(lang.get("Return"));
buttonConnect.setText(lang.get("Connect")); buttonConnect.setText(lang.get("Connect"));
buttonCreateGame.setText(lang.get("HostGame"));
buttonAutoFindServers.setText(lang.get("FindLANGames")); buttonAutoFindServers.setText(lang.get("FindLANGames"));
labelServerType.setText(lang.get("ServerType") + ":"); labelServerType.setText(lang.get("ServerType") + ":");
@ -295,6 +301,18 @@ void MenuStateJoinGame::mouseClick(int x, int y, MouseButton mouseButton) {
connectToServer(); connectToServer();
} }
} }
else if(buttonCreateGame.mouseClick(x, y)){
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
soundRenderer.playFx(coreData.getClickSoundB());
clientInterface->stopServerDiscovery();
if(clientInterface->getSocket() != NULL) {
clientInterface->close();
}
abortAutoFind = true;
mainMenu->setState(new MenuStateCustomGame(program, mainMenu,true,pLanGame));
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
}
else if(buttonAutoFindServers.mouseClick(x, y) && buttonAutoFindServers.getEnabled() == true) { else if(buttonAutoFindServers.mouseClick(x, y) && buttonAutoFindServers.getEnabled() == true) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
@ -308,6 +326,7 @@ void MenuStateJoinGame::mouseClick(int x, int y, MouseButton mouseButton) {
buttonAutoFindServers.setEnabled(false); buttonAutoFindServers.setEnabled(false);
buttonConnect.setEnabled(false); buttonConnect.setEnabled(false);
buttonCreateGame.setEnabled(false);
clientInterface->discoverServers(this); clientInterface->discoverServers(this);
} }
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
@ -345,6 +364,8 @@ void MenuStateJoinGame::render(){
renderer.renderLabel(&labelServerPort); renderer.renderLabel(&labelServerPort);
renderer.renderLabel(&labelServerPortLabel); renderer.renderLabel(&labelServerPortLabel);
renderer.renderButton(&buttonConnect); renderer.renderButton(&buttonConnect);
renderer.renderButton(&buttonCreateGame);
renderer.renderButton(&buttonAutoFindServers); renderer.renderButton(&buttonAutoFindServers);
renderer.renderListBox(&listBoxServerType); renderer.renderListBox(&listBoxServerType);

View File

@ -40,6 +40,8 @@ private:
GraphicButton buttonReturn; GraphicButton buttonReturn;
GraphicButton buttonConnect; GraphicButton buttonConnect;
GraphicButton buttonAutoFindServers; GraphicButton buttonAutoFindServers;
GraphicButton buttonCreateGame;
GraphicLabel labelServer; GraphicLabel labelServer;
GraphicLabel labelServerType; GraphicLabel labelServerType;
GraphicLabel labelServerIp; GraphicLabel labelServerIp;

View File

@ -215,7 +215,7 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen
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")); buttonCreateGame.setText(lang.get("HostGame"));
labelAutoRefresh.setText(lang.get("AutoRefreshRate")); labelAutoRefresh.setText(lang.get("AutoRefreshRate"));
labelAutoRefresh.registerGraphicComponent(containerName,"labelAutoRefresh"); labelAutoRefresh.registerGraphicComponent(containerName,"labelAutoRefresh");
@ -358,7 +358,7 @@ void MenuStateMasterserver::reloadUI() {
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")); buttonCreateGame.setText(lang.get("HostGame"));
labelAutoRefresh.setText(lang.get("AutoRefreshRate")); labelAutoRefresh.setText(lang.get("AutoRefreshRate"));
ircOnlinePeopleLabel.setText(lang.get("IRCPeopleOnline")); ircOnlinePeopleLabel.setText(lang.get("IRCPeopleOnline"));
@ -531,7 +531,7 @@ void MenuStateMasterserver::mouseClick(int x, int y, MouseButton mouseButton){
cleanup(); cleanup();
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
mainMenu->setState(new MenuStateCustomGame(program, mainMenu,true,true)); mainMenu->setState(new MenuStateCustomGame(program, mainMenu,true,pMasterServer));
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",__FILE__,__FUNCTION__,__LINE__);
} }