/* * BattleOnlyModeTab.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/constants/EntityIdentifiers.h" #include "../../lib/mapping/CMap.h" VCMI_LIB_NAMESPACE_BEGIN class CGHeroInstance; class CCreatureSet; class CMap; class EditorCallback; class BattleOnlyModeStartInfo; VCMI_LIB_NAMESPACE_END class FilledTexturePlayerColored; class CButton; class CPicture; class CLabel; class CMultiLineLabel; class BattleOnlyModeTab; class CAnimImage; class GraphicalPrimitiveCanvas; class CTextInput; class TransparentFilledRectangle; class CToggleButton; class BattleOnlyModeHeroSelector : public CIntObject { private: BattleOnlyModeTab& parent; std::shared_ptr backgroundImage; std::shared_ptr heroImage; std::shared_ptr heroLabel; std::vector> creatureImage; std::vector> secSkillImage; std::vector> artifactImage; std::vector> addIcon; void selectHero(); void selectCreature(int slot); void selectSecSkill(int slot); void selectArtifact(int slot, ArtifactID artifactId); int id; public: std::vector> primSkills; std::vector> primSkillsBorder; std::vector> primSkillsInput; std::vector> selectedArmyInput; std::vector> selectedSecSkillInput; std::shared_ptr spellBook; std::shared_ptr warMachines; void setHeroIcon(); void setCreatureIcons(); void setSecSkillIcons(); void setArtifactIcons(); void manageSpells(); BattleOnlyModeHeroSelector(int id, BattleOnlyModeTab& parent, Point position); }; class BattleOnlyModeTab : public CIntObject { friend class BattleOnlyModeHeroSelector; private: std::shared_ptr startInfo; std::unique_ptr map; std::shared_ptr cb; std::shared_ptr backgroundImage; std::shared_ptr title; std::shared_ptr subTitle; std::shared_ptr battlefieldSelector; std::shared_ptr buttonReset; std::shared_ptr heroSelector1; std::shared_ptr heroSelector2; ColorRGBA disabledColor; ColorRGBA boxColor; ColorRGBA disabledBoxColor; void init(); void onChange(); void update(); void setTerrainButtonText(); void selectTerrain(); void reset(); public: BattleOnlyModeTab(); void applyStartInfo(std::shared_ptr si); void startBattle(); void setStartButtonEnabled(); };