Fixes Atlas losing map settings if random map generation failed. Refs #1398.
This was SVN commit r11835.
This commit is contained in:
parent
56269b2489
commit
3efbd0ab25
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user