/* * RandomMapTab.h, part of VCMI engine * * Authors: listed in file AUTHORS in main folder * * License: GNU General Public License v2.0 or later * Full text of license available in license.txt file, in main folder * */ #pragma once #include "CSelectionBase.h" #include "../../lib/FunctionList.h" #include "../../lib/GameConstants.h" #include "../../lib/rmg/CRmgTemplate.h" #include "../gui/InterfaceObjectConfigurable.h" VCMI_LIB_NAMESPACE_BEGIN class CMapGenOptions; VCMI_LIB_NAMESPACE_END class CToggleButton; class CLabel; class CLabelGroup; class CSlider; class CPicture; class RandomMapTab : public InterfaceObjectConfigurable { public: RandomMapTab(); void updateMapInfoByHost(); void setMapGenOptions(std::shared_ptr opts); void setTemplate(const CRmgTemplate *); void saveOptions(const CMapGenOptions & options); void loadOptions(); CMapGenOptions & obtainMapGenOptions() {return *mapGenOptions;} CFunctionList, std::shared_ptr)> mapInfoChanged; private: void deactivateButtonsFrom(CToggleGroup & group, const std::set & allowed); std::vector getPossibleMapSizes(); std::shared_ptr mapInfo; std::shared_ptr mapGenOptions; //options allowed - need to store as impact each other std::set playerCountAllowed; std::set playerTeamsAllowed; std::set compCountAllowed; std::set compTeamsAllowed; }; class TeamAlignmentsWidget: public InterfaceObjectConfigurable { public: TeamAlignmentsWidget(RandomMapTab & randomMapTab); private: void checkTeamCount(); std::shared_ptr background; std::shared_ptr labels; std::shared_ptr buttonOk; std::shared_ptr buttonCancel; std::vector> players; std::vector> placeholders; }; class TeamAlignments: public CWindowObject { std::shared_ptr widget; public: TeamAlignments(RandomMapTab & randomMapTab); };