/* * CBonusSelection.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 "../windows/CWindowObject.h" VCMI_LIB_NAMESPACE_BEGIN class CCampaignState; VCMI_LIB_NAMESPACE_END struct SDL_Surface; class CButton; class CTextBox; class CToggleGroup; class CAnimImage; class CLabel; class CFlagBox; class ISelectionScreenInfo; /// Campaign screen where you can choose one out of three starting bonuses class CBonusSelection : public CWindowObject { public: std::shared_ptr getCampaign(); CBonusSelection(); struct SCampPositions { std::string campPrefix; int colorSuffixLength; struct SRegionDesc { std::string infix; int xpos, ypos; }; std::vector regions; }; class CRegion : public CIntObject { std::shared_ptr graphicsNotSelected; std::shared_ptr graphicsSelected; std::shared_ptr graphicsStriped; int idOfMapAndRegion; bool accessible; // false if region should be striped bool selectable; // true if region should be selectable public: CRegion(int id, bool accessible, bool selectable, const SCampPositions & campDsc); void updateState(); void clickLeft(tribool down, bool previousState) override; void clickRight(tribool down, bool previousState) override; }; void loadPositionsOfGraphics(); void createBonusesIcons(); void updateAfterStateChange(); // Event handlers void goBack(); void startMap(); void restartMap(); void increaseDifficulty(); void decreaseDifficulty(); std::shared_ptr panelBackground; std::shared_ptr buttonStart; std::shared_ptr buttonRestart; std::shared_ptr buttonBack; std::shared_ptr campaignName; std::shared_ptr labelCampaignDescription; std::shared_ptr campaignDescription; std::shared_ptr mapName; std::shared_ptr labelMapDescription; std::shared_ptr mapDescription; std::vector campDescriptions; std::vector> regions; std::shared_ptr flagbox; std::shared_ptr labelChooseBonus; std::shared_ptr groupBonuses; std::shared_ptr labelDifficulty; std::array, 5> difficultyIcons; std::shared_ptr buttonDifficultyLeft; std::shared_ptr buttonDifficultyRight; std::shared_ptr iconsMapSizes; };