forked from 0ad/0ad
Fixes bug in Atlas player panel (AtIter definition must be checked before incrementing).
This was SVN commit r10102.
This commit is contained in:
parent
dace16913f
commit
29dc9c3094
@ -527,12 +527,18 @@ void PlayerSettingsControl::CreateWidgets()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create player pages
|
// Create player pages
|
||||||
AtIter player = m_PlayerDefaults["item"];
|
AtIter playerDefs = m_PlayerDefaults["item"];
|
||||||
++player; // Skip gaia
|
if (playerDefs.defined())
|
||||||
for (size_t i = 0; i < MAX_NUM_PLAYERS; ++i, ++player)
|
++playerDefs; // Skip gaia
|
||||||
|
|
||||||
|
for (size_t i = 0; i < MAX_NUM_PLAYERS; ++i)
|
||||||
{
|
{
|
||||||
// Create new player tab and get controls
|
// Create new player tab and get controls
|
||||||
PlayerPageControls controls = m_Players->AddPlayer(wxString(player["Name"]), i);
|
wxString name(_("Unknown"));
|
||||||
|
if (playerDefs["Name"].defined())
|
||||||
|
name = playerDefs["Name"];
|
||||||
|
|
||||||
|
PlayerPageControls controls = m_Players->AddPlayer(name, i);
|
||||||
m_PlayerControls.push_back(controls);
|
m_PlayerControls.push_back(controls);
|
||||||
|
|
||||||
// Populate civ choice box
|
// Populate civ choice box
|
||||||
@ -547,6 +553,10 @@ void PlayerSettingsControl::CreateWidgets()
|
|||||||
for (size_t j = 0; j < ais.Count(); ++j)
|
for (size_t j = 0; j < ais.Count(); ++j)
|
||||||
aiChoice->Append(ais[j]->GetName(), new wxStringClientData(ais[j]->GetID()));
|
aiChoice->Append(ais[j]->GetName(), new wxStringClientData(ais[j]->GetID()));
|
||||||
aiChoice->SetSelection(0);
|
aiChoice->SetSelection(0);
|
||||||
|
|
||||||
|
// Only increment AtIters if they are defined
|
||||||
|
if (playerDefs.defined())
|
||||||
|
++playerDefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_InGUIUpdate = false;
|
m_InGUIUpdate = false;
|
||||||
@ -590,25 +600,26 @@ void PlayerSettingsControl::ReadFromEngine()
|
|||||||
|
|
||||||
// To prevent recursion, don't handle GUI events right now
|
// To prevent recursion, don't handle GUI events right now
|
||||||
m_InGUIUpdate = true;
|
m_InGUIUpdate = true;
|
||||||
|
|
||||||
// Update player controls with player data
|
|
||||||
AtIter playerDefs = m_PlayerDefaults["item"];
|
|
||||||
++playerDefs; // skip gaia
|
|
||||||
|
|
||||||
wxDynamicCast(FindWindow(ID_NumPlayers), wxSpinCtrl)->SetValue(m_NumPlayers);
|
wxDynamicCast(FindWindow(ID_NumPlayers), wxSpinCtrl)->SetValue(m_NumPlayers);
|
||||||
|
|
||||||
// Remove / add extra player pages as needed
|
// Remove / add extra player pages as needed
|
||||||
m_Players->ResizePlayers(m_NumPlayers);
|
m_Players->ResizePlayers(m_NumPlayers);
|
||||||
|
|
||||||
for (size_t i = 0; i < MAX_NUM_PLAYERS; ++i, ++player, ++playerDefs)
|
// Update player controls with player data
|
||||||
|
AtIter playerDefs = m_PlayerDefaults["item"];
|
||||||
|
if (playerDefs.defined())
|
||||||
|
++playerDefs; // skip gaia
|
||||||
|
|
||||||
|
for (size_t i = 0; i < MAX_NUM_PLAYERS; ++i)
|
||||||
{
|
{
|
||||||
PlayerPageControls controls = m_PlayerControls[i];
|
PlayerPageControls controls = m_PlayerControls[i];
|
||||||
|
|
||||||
// name
|
// name
|
||||||
wxString name;
|
wxString name(_("Unknown"));
|
||||||
if (player["Name"].defined())
|
if (player["Name"].defined())
|
||||||
name = wxString(player["Name"]);
|
name = wxString(player["Name"]);
|
||||||
else
|
else if (playerDefs["Name"].defined())
|
||||||
name = wxString(playerDefs["Name"]);
|
name = wxString(playerDefs["Name"]);
|
||||||
|
|
||||||
controls.name->SetValue(name);
|
controls.name->SetValue(name);
|
||||||
@ -725,6 +736,11 @@ void PlayerSettingsControl::ReadFromEngine()
|
|||||||
else
|
else
|
||||||
controls.page->SetCamera(sCameraInfo(), false);
|
controls.page->SetCamera(sCameraInfo(), false);
|
||||||
|
|
||||||
|
// Only increment AtIters if they are defined
|
||||||
|
if (player.defined())
|
||||||
|
++player;
|
||||||
|
if (playerDefs.defined())
|
||||||
|
++playerDefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_InGUIUpdate = false;
|
m_InGUIUpdate = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user