- better error handling logic on crashes

- translate scenario to correct file on players system
This commit is contained in:
Mark Vejvoda 2012-03-29 00:43:03 +00:00
parent 433f4e84ce
commit c13e0ef788
2 changed files with 19 additions and 8 deletions

View File

@ -3786,6 +3786,12 @@ void Game::loadGame(string name,Program *programPtr,bool isMasterserverMode) {
GameSettings newGameSettingsReplay;
newGameSettingsReplay.loadGame(gameNode);
//printf("Loading scenario [%s]\n",newGameSettingsReplay.getScenarioDir().c_str());
if(newGameSettingsReplay.getScenarioDir() != "" && fileExists(newGameSettingsReplay.getScenarioDir()) == false) {
newGameSettingsReplay.setScenarioDir(Scenario::getScenarioPath(Config::getInstance().getPathListForType(ptScenarios),newGameSettingsReplay.getScenario()));
//printf("Loading scenario #2 [%s]\n",newGameSettingsReplay.getScenarioDir().c_str());
}
//GameSettings newGameSettings;
//newGameSettings.loadGame(gameNode);
@ -3840,6 +3846,12 @@ void Game::loadGame(string name,Program *programPtr,bool isMasterserverMode) {
XmlNode *gameNode = rootNode->getChild("Game");
GameSettings newGameSettings;
newGameSettings.loadGame(gameNode);
//printf("Loading scenario [%s]\n",newGameSettings.getScenarioDir().c_str());
if(newGameSettings.getScenarioDir() != "" && fileExists(newGameSettings.getScenarioDir()) == false) {
newGameSettings.setScenarioDir(Scenario::getScenarioPath(Config::getInstance().getPathListForType(ptScenarios),newGameSettings.getScenario()));
//printf("Loading scenario #2 [%s]\n",newGameSettings.getScenarioDir().c_str());
}
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("Game settings loaded\n");

View File

@ -3380,16 +3380,16 @@ int glestMain(int argc, char** argv) {
//parse command line
if(hasCommandArgument(argc, argv,GAME_ARGS[GAME_ARG_SERVER]) == true) {
gameInitialized = true;
program->initServer(mainWindow,false,true);
gameInitialized = true;
}
else if(hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_MASTERSERVER_MODE])) == true) {
gameInitialized = true;
program->initServer(mainWindow,false,true,true);
gameInitialized = true;
}
else if(hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_AUTOSTART_LASTGAME])) == true) {
gameInitialized = true;
program->initServer(mainWindow,true,false);
gameInitialized = true;
}
else if(hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_AUTOSTART_LAST_SAVED_GAME])) == true) {
string fileName = "";
@ -3429,8 +3429,8 @@ int glestMain(int argc, char** argv) {
}
}
}
gameInitialized = true;
program->initSavedGame(mainWindow,false,fileName);
gameInitialized = true;
}
else if(hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_PREVIEW_MAP])) == true) {
int foundParamIndIndex = -1;
@ -3481,8 +3481,8 @@ int glestMain(int argc, char** argv) {
gameSettings->setEnableServerControlledAI(config.getBool("ServerControlledAI","true"));
gameSettings->setNetworkFramePeriod(config.getInt("NetworkSendFrameCount","20"));
gameInitialized = true;
program->initServer(mainWindow,gameSettings);
gameInitialized = true;
}
else {
printf("\nInvalid map name specified on commandline [%s] map [%s]\n\n",argv[foundParamIndIndex],(paramPartTokens.size() >= 2 ? paramPartTokens[1].c_str() : NULL));
@ -3503,8 +3503,8 @@ int glestMain(int argc, char** argv) {
if(paramPartTokens.size() >= 2 && paramPartTokens[1].length() > 0) {
string autoConnectServer = paramPartTokens[1];
gameInitialized = true;
program->initClient(mainWindow, autoConnectServer);
gameInitialized = true;
}
else {
@ -3527,8 +3527,8 @@ int glestMain(int argc, char** argv) {
if(paramPartTokens.size() >= 2 && paramPartTokens[1].length() > 0) {
string autoloadScenarioName = paramPartTokens[1];
gameInitialized = true;
program->initScenario(mainWindow, autoloadScenarioName);
gameInitialized = true;
}
else {
printf("\nInvalid scenario name specified on commandline [%s] scenario [%s]\n\n",argv[foundParamIndIndex],(paramPartTokens.size() >= 2 ? paramPartTokens[1].c_str() : NULL));
@ -3538,7 +3538,6 @@ int glestMain(int argc, char** argv) {
}
}
else {
gameInitialized = true;
program->initNormal(mainWindow);
}