/* * 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" #include "../lib/campaign/CampaignConstants.h" VCMI_LIB_NAMESPACE_BEGIN class CampaignState; class CampaignRegions; VCMI_LIB_NAMESPACE_END 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(); class CRegion : public CIntObject { std::shared_ptr graphicsNotSelected; std::shared_ptr graphicsSelected; std::shared_ptr graphicsStriped; CampaignScenarioID idOfMapAndRegion; bool accessible; // false if region should be striped bool selectable; // true if region should be selectable public: CRegion(CampaignScenarioID id, bool accessible, bool selectable, const CampaignRegions & campDsc); void updateState(); void clickReleased(const Point & cursorPosition) override; void showPopupWindow(const Point & cursorPosition) override; }; 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> 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; };