/* Copyright (C) 2012 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * 0 A.D. is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with 0 A.D. If not, see . */ #ifndef INCLUDED_OBJECTSETTINGS #define INCLUDED_OBJECTSETTINGS #include #include #include "ScenarioEditor/Tools/Common/MiscState.h" namespace AtlasMessage { struct sObjectSettings; } // Various settings to be applied to newly created units, or to the currently // selected unit. If a unit is selected or being previewed, it should match // these settings. class ObjectSettings { public: ObjectSettings(Observable >& selectedObjects, int view); int GetPlayerID() const; void SetPlayerID(int playerID); void SetView(int view); struct Group { wxArrayString variants; wxString chosen; }; const std::vector GetActorVariation() const; const std::set& GetActorSelections() const; void SetActorSelections(const std::set& selections); // Constructs new sObjectSettings object from settings AtlasMessage::sObjectSettings GetSettings() const; private: Observable >& m_SelectedObjects; int m_View; // 0 = gaia, 1..inf = normal players int m_PlayerID; // Set of user-chosen actor selections, potentially a superset of any single // actor's possible variants (since it doesn't get reset if you select // a new actor, and will accumulate variant names) std::set m_ActorSelections; // List of actor variant groups (each a list of variant names) std::vector m_VariantGroups; // Observe changes to unit selection ObservableScopedConnection m_Conn; void OnSelectionChange(const std::vector& selection); // Transfer current settings to the currently selected unit (if any) void PostToGame(); }; #endif // INCLUDED_OBJECTSETTINGS