2018-01-05 19:21:07 +02:00
|
|
|
/*
|
|
|
|
* 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
|
2023-05-20 17:28:35 +02:00
|
|
|
|
2018-01-05 19:21:07 +02:00
|
|
|
#include "../windows/CWindowObject.h"
|
2023-06-25 21:28:24 +02:00
|
|
|
|
|
|
|
#include "../lib/campaign/CampaignConstants.h"
|
2018-01-05 19:21:07 +02:00
|
|
|
|
2022-07-26 15:07:42 +02:00
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
|
2023-06-25 20:16:03 +02:00
|
|
|
class CampaignState;
|
2023-06-26 00:42:53 +02:00
|
|
|
class CampaignRegions;
|
2022-07-26 15:07:42 +02:00
|
|
|
|
|
|
|
VCMI_LIB_NAMESPACE_END
|
|
|
|
|
2018-01-05 19:21:07 +02:00
|
|
|
class CButton;
|
|
|
|
class CTextBox;
|
|
|
|
class CToggleGroup;
|
|
|
|
class CAnimImage;
|
|
|
|
class CLabel;
|
|
|
|
class CFlagBox;
|
2022-04-26 13:14:31 +02:00
|
|
|
class ISelectionScreenInfo;
|
2024-02-07 22:40:56 +02:00
|
|
|
class ExtraOptionsTab;
|
2018-01-05 19:21:07 +02:00
|
|
|
|
|
|
|
/// Campaign screen where you can choose one out of three starting bonuses
|
|
|
|
class CBonusSelection : public CWindowObject
|
|
|
|
{
|
|
|
|
public:
|
2023-06-25 20:16:03 +02:00
|
|
|
std::shared_ptr<CampaignState> getCampaign();
|
2018-01-05 19:21:07 +02:00
|
|
|
CBonusSelection();
|
|
|
|
|
|
|
|
class CRegion
|
|
|
|
: public CIntObject
|
|
|
|
{
|
|
|
|
std::shared_ptr<CPicture> graphicsNotSelected;
|
|
|
|
std::shared_ptr<CPicture> graphicsSelected;
|
|
|
|
std::shared_ptr<CPicture> graphicsStriped;
|
2023-06-25 20:16:03 +02:00
|
|
|
CampaignScenarioID idOfMapAndRegion;
|
2018-01-05 19:21:07 +02:00
|
|
|
bool accessible; // false if region should be striped
|
|
|
|
bool selectable; // true if region should be selectable
|
|
|
|
public:
|
2023-06-25 20:16:03 +02:00
|
|
|
CRegion(CampaignScenarioID id, bool accessible, bool selectable, const CampaignRegions & campDsc);
|
2018-01-05 19:21:07 +02:00
|
|
|
void updateState();
|
2023-07-08 13:33:04 +02:00
|
|
|
void clickReleased(const Point & cursorPosition) override;
|
|
|
|
void showPopupWindow(const Point & cursorPosition) override;
|
2018-01-05 19:21:07 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
void createBonusesIcons();
|
|
|
|
void updateAfterStateChange();
|
|
|
|
|
|
|
|
// Event handlers
|
|
|
|
void goBack();
|
|
|
|
void startMap();
|
|
|
|
void restartMap();
|
|
|
|
void increaseDifficulty();
|
|
|
|
void decreaseDifficulty();
|
|
|
|
|
|
|
|
std::shared_ptr<CPicture> panelBackground;
|
|
|
|
std::shared_ptr<CButton> buttonStart;
|
|
|
|
std::shared_ptr<CButton> buttonRestart;
|
|
|
|
std::shared_ptr<CButton> buttonBack;
|
2024-01-24 00:45:31 +02:00
|
|
|
std::shared_ptr<CButton> buttonVideo;
|
2018-01-05 19:21:07 +02:00
|
|
|
std::shared_ptr<CLabel> campaignName;
|
|
|
|
std::shared_ptr<CLabel> labelCampaignDescription;
|
|
|
|
std::shared_ptr<CTextBox> campaignDescription;
|
|
|
|
std::shared_ptr<CLabel> mapName;
|
|
|
|
std::shared_ptr<CLabel> labelMapDescription;
|
|
|
|
std::shared_ptr<CTextBox> mapDescription;
|
|
|
|
std::vector<std::shared_ptr<CRegion>> regions;
|
|
|
|
std::shared_ptr<CFlagBox> flagbox;
|
|
|
|
|
|
|
|
std::shared_ptr<CLabel> labelChooseBonus;
|
|
|
|
std::shared_ptr<CToggleGroup> groupBonuses;
|
|
|
|
std::shared_ptr<CLabel> labelDifficulty;
|
|
|
|
std::array<std::shared_ptr<CAnimImage>, 5> difficultyIcons;
|
|
|
|
std::shared_ptr<CButton> buttonDifficultyLeft;
|
|
|
|
std::shared_ptr<CButton> buttonDifficultyRight;
|
|
|
|
std::shared_ptr<CAnimImage> iconsMapSizes;
|
2024-02-07 22:40:56 +02:00
|
|
|
|
|
|
|
std::shared_ptr<ExtraOptionsTab> tabExtraOptions;
|
|
|
|
std::shared_ptr<CButton> buttonExtraOptions;
|
2022-07-26 15:07:42 +02:00
|
|
|
};
|