1
1
forked from 0ad/0ad

Fixes Atlas losing map settings if random map generation failed. Refs #1398.

This was SVN commit r11835.
This commit is contained in:
historic_bruno 2012-05-10 23:11:42 +00:00
parent 56269b2489
commit 3efbd0ab25

View File

@ -88,6 +88,7 @@ public:
MapSettingsControl(wxWindow* parent, ScenarioEditor& scenarioEditor);
void CreateWidgets();
void ReadFromEngine();
void SetMapSettings(const AtObj& obj);
AtObj UpdateSettingsObject();
private:
void SendToEngine();
@ -210,6 +211,14 @@ void MapSettingsControl::ReadFromEngine()
}
}
void MapSettingsControl::SetMapSettings(const AtObj& obj)
{
m_MapSettings = obj;
m_MapSettings.NotifyObservers();
SendToEngine();
}
AtObj MapSettingsControl::UpdateSettingsObject()
{
// map name
@ -504,12 +513,17 @@ void MapSidebar::OnRandomGenerate(wxCommandEvent& WXUNUSED(evt))
wxString scriptName(settings["Script"]);
// Copy the old map settings, so we don't lose them if the map generation fails
AtObj oldSettings = settings;
AtlasMessage::qGenerateMap qry((std::wstring)scriptName.wc_str(), json);
qry.Post();
if (qry.status < 0)
{
// Display error message and revert to old map settings
wxLogError(_("Random map script '%ls' failed"), scriptName.wc_str());
m_MapSettingsCtrl->SetMapSettings(oldSettings);
}
m_ScenarioEditor.NotifyOnMapReload();