AtObj ActorEditorListCtrl::DoExport() { AtObj out; AtObj group; for (size_t i = 0; i < m_ListData.size(); ++i) { if (IsRowBlank((int)i)) { if (group.defined()) out.add("group", group); group = AtObj(); } else { AtObj variant = AtlasObject::TrimEmptyChildren(m_ListData[i]); group.add("variant", variant); } } if (group.defined()) out.add("group", group); return out; }
AtObj AtlasObject::TrimEmptyChildren(AtObj& obj) { AtObj ret; for (AtNode::child_maptype::const_iterator it = obj.p->children.begin(); it != obj.p->children.end(); ++it) { if (it->second && it->second->hasContent()) { AtObj node; node.p = it->second; ret.add(it->first.c_str(), node); } } return ret; }
AtObj MapSettingsControl::UpdateSettingsObject() { // map name m_MapSettings.set("Name", wxDynamicCast(FindWindow(ID_MapName), wxTextCtrl)->GetValue()); // map description m_MapSettings.set("Description", wxDynamicCast(FindWindow(ID_MapDescription), wxTextCtrl)->GetValue()); // map preview m_MapSettings.set("Preview", wxDynamicCast(FindWindow(ID_MapPreview), wxTextCtrl)->GetValue()); // reveal map m_MapSettings.setBool("RevealMap", wxDynamicCast(FindWindow(ID_MapReveal), wxCheckBox)->GetValue()); // game type / victory conditions m_MapSettings.set("GameType", wxDynamicCast(FindWindow(ID_MapType), wxChoice)->GetStringSelection()); // keywords { if (wxDynamicCast(FindWindow(ID_MapKW_Demo), wxCheckBox)->GetValue()) m_MapSettingsKeywords.insert(L"demo"); else m_MapSettingsKeywords.erase(L"demo"); if (wxDynamicCast(FindWindow(ID_MapKW_Naval), wxCheckBox)->GetValue()) m_MapSettingsKeywords.insert(L"naval"); else m_MapSettingsKeywords.erase(L"naval"); AtObj keywords; keywords.set("@array", L""); for (std::set<std::wstring>::iterator it = m_MapSettingsKeywords.begin(); it != m_MapSettingsKeywords.end(); ++it) keywords.add("item", it->c_str()); m_MapSettings.set("Keywords", keywords); } // teams locked m_MapSettings.setBool("LockTeams", wxDynamicCast(FindWindow(ID_MapTeams), wxCheckBox)->GetValue()); return m_MapSettings; }
AtObj PlayerSettingsControl::UpdateSettingsObject() { // Update player data in the map settings AtObj players; players.set("@array", L""); wxASSERT(m_NumPlayers <= MAX_NUM_PLAYERS); for (size_t i = 0; i < m_NumPlayers; ++i) { PlayerPageControls controls = m_PlayerControls[i]; AtObj player; // name wxTextCtrl* text = controls.name; if (text->IsEnabled()) player.set("Name", text->GetValue()); // civ wxChoice* choice = controls.civ; if (choice->IsEnabled() && choice->GetSelection() >= 0) { wxStringClientData* str = dynamic_cast<wxStringClientData*>(choice->GetClientObject(choice->GetSelection())); player.set("Civ", str->GetData()); } // colour if (controls.colour->IsEnabled()) { wxColour colour = controls.colour->GetBackgroundColour(); AtObj clrObj; clrObj.setInt("r", (int)colour.Red()); clrObj.setInt("g", (int)colour.Green()); clrObj.setInt("b", (int)colour.Blue()); player.set("Colour", clrObj); } // player type choice = controls.ai; if (choice->IsEnabled()) { if (choice->GetSelection() > 0) { // ai - get id wxStringClientData* str = dynamic_cast<wxStringClientData*>(choice->GetClientObject(choice->GetSelection())); player.set("AI", str->GetData()); } else // human player.set("AI", _T("")); } // resources AtObj resObj; if (controls.food->IsEnabled()) resObj.setInt("food", controls.food->GetValue()); if (controls.wood->IsEnabled()) resObj.setInt("wood", controls.wood->GetValue()); if (controls.metal->IsEnabled()) resObj.setInt("metal", controls.metal->GetValue()); if (controls.stone->IsEnabled()) resObj.setInt("stone", controls.stone->GetValue()); if (resObj.defined()) player.set("Resources", resObj); // population limit if (controls.pop->IsEnabled()) player.setInt("PopulationLimit", controls.pop->GetValue()); // team choice = controls.team; if (choice->IsEnabled() && choice->GetSelection() >= 0) player.setInt("Team", choice->GetSelection() - 1); // camera AtObj camObj; if (controls.page->IsCameraDefined()) { sCameraInfo cam = controls.page->GetCamera(); AtObj camPos; camPos.setDouble("x", cam.pX); camPos.setDouble("y", cam.pY); camPos.setDouble("z", cam.pZ); camObj.set("Position", camPos); AtObj camRot; camRot.setDouble("x", cam.rX); camRot.setDouble("y", cam.rY); camRot.setDouble("z", cam.rZ); camObj.set("Rotation", camRot); } player.set("StartingCamera", camObj); players.add("item", player); } m_MapSettings.set("PlayerData", players); return m_MapSettings; }