bugfix load setup

This commit is contained in:
titiger 2019-10-17 23:16:16 +02:00
parent cc9c001736
commit 476c398c0c
3 changed files with 45 additions and 9 deletions

View File

@ -334,6 +334,7 @@ public:
void pushBackItem(string item, string translated_item=""); void pushBackItem(string item, string translated_item="");
void clearItems(); void clearItems();
vector<string> & getItems() {return items;}
void setItems(const vector<string> &items, const vector<string> translated_items=vector<string>()); void setItems(const vector<string> &items, const vector<string> translated_items=vector<string>());
void setSelectedItemIndex(int index, bool errorOnMissing=true); void setSelectedItemIndex(int index, bool errorOnMissing=true);
void setSelectedItem(string item, bool errorOnMissing=true); void setSelectedItem(string item, bool errorOnMissing=true);
@ -399,6 +400,7 @@ public:
void clearItems(); void clearItems();
GraphicButton* createButton(string item); GraphicButton* createButton(string item);
vector<string> & getItems() {return items;}
void setItems(const vector<string> &items, const vector<string> translated_items=vector<string>()); void setItems(const vector<string> &items, const vector<string> translated_items=vector<string>());
void setSelectedItemIndex(int index, bool errorOnMissing=true); void setSelectedItemIndex(int index, bool errorOnMissing=true);
void setSelectedItem(string item, bool errorOnMissing=true); void setSelectedItem(string item, bool errorOnMissing=true);

View File

@ -475,7 +475,7 @@ MenuStateConnectedGame::MenuStateConnectedGame(Program *program, MainMenu *mainM
labelInfo.setFont3D(CoreData::getInstance().getMenuFontBig3D()); labelInfo.setFont3D(CoreData::getInstance().getMenuFontBig3D());
labelWaitingForPlayers.registerGraphicComponent(containerName,"labelInfo"); labelWaitingForPlayers.registerGraphicComponent(containerName,"labelInfo");
labelWaitingForPlayers.init(30, 100); labelWaitingForPlayers.init(0, networkHeadPos-25);
labelWaitingForPlayers.setText(""); labelWaitingForPlayers.setText("");
labelWaitingForPlayers.setFont(CoreData::getInstance().getMenuFontBig()); labelWaitingForPlayers.setFont(CoreData::getInstance().getMenuFontBig());
labelWaitingForPlayers.setFont3D(CoreData::getInstance().getMenuFontBig3D()); labelWaitingForPlayers.setFont3D(CoreData::getInstance().getMenuFontBig3D());
@ -1946,8 +1946,8 @@ void MenuStateConnectedGame::mouseClickAdmin(int x, int y, MouseButton mouseButt
setupName=replaceAll(setupName,"\\","_"); setupName=replaceAll(setupName,"\\","_");
} }
if( setupName!= lang.getString(LAST_SETUP_STRING)) { if( setupName!= lang.getString(LAST_SETUP_STRING)) {
string filename=setupName+".mgg"; string filename=SETUPS_DIR+setupName+".mgg";
saveGameSettings(SETUPS_DIR+filename); saveGameSettings(filename);
console.addLine("--> " +filename); console.addLine("--> " +filename);
loadSavedSetupNames(); loadSavedSetupNames();
comboBoxLoadSetup.setItems(savedSetupFilenames); comboBoxLoadSetup.setItems(savedSetupFilenames);
@ -1961,8 +1961,11 @@ void MenuStateConnectedGame::mouseClickAdmin(int x, int y, MouseButton mouseButt
if( setupName== lang.getString(LAST_SETUP_STRING)){ if( setupName== lang.getString(LAST_SETUP_STRING)){
fileNameToLoad=HEADLESS_SAVED_SETUP_FILENAME; fileNameToLoad=HEADLESS_SAVED_SETUP_FILENAME;
} }
if(loadGameSettings(fileNameToLoad)) if(loadGameSettings(fileNameToLoad)){
console.addLine("<-- " +setupName+".mgg"); console.addLine("<-- " +fileNameToLoad);
needToBroadcastServerSettings=true;
broadcastServerSettingsDelayTimer=time(NULL);
}
} }
} }
else if ( buttonDeleteSetup.mouseClick(x, y)){ else if ( buttonDeleteSetup.mouseClick(x, y)){
@ -5442,14 +5445,30 @@ bool MenuStateConnectedGame::loadGameSettings(const std::string &fileName) {
ClientInterface* clientInterface= networkManager.getClientInterface(); ClientInterface* clientInterface= networkManager.getClientInterface();
GameSettings gameSettings = *clientInterface->getGameSettings(); GameSettings gameSettings = *clientInterface->getGameSettings();
bool result=CoreData::getInstance().loadGameSettingsFromFile(fileName,&gameSettings); bool result=CoreData::getInstance().loadGameSettingsFromFile(fileName,&gameSettings);
if(result==false) if(result==false){
console.addLine("Cannot load '"+fileName+"'");
return false; return false;
}
if(gameSettings.getMap() == "") { if(gameSettings.getMap() == "") {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__); if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
copyToGameSettings(&gameSettings); copyToGameSettings(&gameSettings);
} }
vector<string> mapsV=formattedPlayerSortedMaps[0];
if(std::find(mapsV.begin(), mapsV.end(), gameSettings.getMap()) == mapsV.end()) {
console.addLine("Cannot load '"+fileName+"', map unknown ("+gameSettings.getMap()+")");
return false;// map unknown
}
if(std::find(tilesetFiles.begin(), tilesetFiles.end(), gameSettings.getTileset()) == tilesetFiles.end()) {
console.addLine("Cannot load '"+fileName+"', tileset unknown ("+gameSettings.getTileset()+")");
return false;// tileset unknown
}
if(std::find(techTreeFiles.begin(), techTreeFiles.end(), gameSettings.getTech()) == techTreeFiles.end()) {
console.addLine("Cannot load '"+fileName+"', techtree unknown ("+gameSettings.getTech()+")");
return false;// techtree unknown
}
setupUIFromGameSettings(&gameSettings, false); setupUIFromGameSettings(&gameSettings, false);
needToBroadcastServerSettings=true; needToBroadcastServerSettings=true;

View File

@ -1264,8 +1264,8 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton) {
setupName=replaceAll(setupName,"\\","_"); setupName=replaceAll(setupName,"\\","_");
} }
if( setupName!= lang.getString(LAST_SETUP_STRING)) { if( setupName!= lang.getString(LAST_SETUP_STRING)) {
string filename=setupName+".mgg"; string filename=SETUPS_DIR+setupName+".mgg";
saveGameSettings(SETUPS_DIR+filename); saveGameSettings(filename);
console.addLine("--> " +filename); console.addLine("--> " +filename);
loadSavedSetupNames(); loadSavedSetupNames();
comboBoxLoadSetup.setItems(savedSetupFilenames); comboBoxLoadSetup.setItems(savedSetupFilenames);
@ -1280,7 +1280,7 @@ void MenuStateCustomGame::mouseClick(int x, int y, MouseButton mouseButton) {
fileNameToLoad=SAVED_SETUP_FILENAME; fileNameToLoad=SAVED_SETUP_FILENAME;
} }
if(loadGameSettings(fileNameToLoad)) if(loadGameSettings(fileNameToLoad))
console.addLine("<-- " +setupName+".mgg"); console.addLine("<-- " +fileNameToLoad);
} }
} }
else if ( buttonDeleteSetup.mouseClick(x, y)){ else if ( buttonDeleteSetup.mouseClick(x, y)){
@ -4136,6 +4136,21 @@ bool MenuStateCustomGame::loadGameSettingsFromFile(GameSettings *gameSettings,st
} }
} }
} }
vector<string> mapsV=formattedPlayerSortedMaps[0];
if(std::find(mapsV.begin(), mapsV.end(), gameSettings->getMap()) == mapsV.end()) {
console.addLine("Cannot load '"+fileName+"', map unknown ("+gameSettings->getMap()+")");
return false;// map unknown
}
if(std::find(tilesetFiles.begin(), tilesetFiles.end(), gameSettings->getTileset()) == tilesetFiles.end()) {
console.addLine("Cannot load '"+fileName+"', tileset unknown ("+gameSettings->getTileset()+")");
return false;// tileset unknown
}
if(std::find(techTreeFiles.begin(), techTreeFiles.end(), gameSettings->getTech()) == techTreeFiles.end()) {
console.addLine("Cannot load '"+fileName+"', techtree unknown ("+gameSettings->getTech()+")");
return false;// techtree unknown
}
setupUIFromGameSettings(*gameSettings); setupUIFromGameSettings(*gameSettings);
} }
catch(const exception &ex) { catch(const exception &ex) {