| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- /*
 
-  * CHeroWindow.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 <vcmi/FactionMember.h>
 
- #include "../../lib/bonuses/Bonus.h"
 
- #include "../../lib/bonuses/IBonusBearer.h"
 
- #include "../widgets/CWindowWithArtifacts.h"
 
- #include "../widgets/CGarrisonInt.h"
 
- VCMI_LIB_NAMESPACE_BEGIN
 
- class CGHeroInstance;
 
- VCMI_LIB_NAMESPACE_END
 
- class CButton;
 
- class CHeroWindow;
 
- class LClickableAreaHero;
 
- class LRClickableAreaWText;
 
- class LRClickableAreaWTextComp;
 
- class CArtifactsOfHeroMain;
 
- class MoraleLuckBox;
 
- class CToggleButton;
 
- class CToggleGroup;
 
- class CGStatusBar;
 
- class CTextBox;
 
- /// Button which switches hero selection
 
- class CHeroSwitcher : public CIntObject
 
- {
 
- 	const CGHeroInstance * hero;
 
- 	std::shared_ptr<CAnimImage> image;
 
- 	CHeroWindow * owner;
 
- public:
 
- 	void clickLeft(tribool down, bool previousState) override;
 
- 	CHeroSwitcher(CHeroWindow * owner_, Point pos_, const CGHeroInstance * hero_);
 
- };
 
- //helper class for calculating values of hero bonuses without bonuses from picked up artifact
 
- class CHeroWithMaybePickedArtifact : public IBonusBearer, public AFactionMember
 
- {
 
- public:
 
- 	const CGHeroInstance * hero;
 
- 	CWindowWithArtifacts * cww;
 
- 	CHeroWithMaybePickedArtifact(CWindowWithArtifacts * Cww, const CGHeroInstance * Hero);
 
- 	TConstBonusListPtr getAllBonuses(const CSelector & selector, const CSelector & limit, const CBonusSystemNode * root = nullptr, const std::string & cachingStr = "") const override;
 
- 	const IBonusBearer * getBonusBearer() const override;
 
- 	FactionID getFaction() const override; 
 
- 	int64_t getTreeVersion() const override;
 
- 	si32 manaLimit() const;
 
- };
 
- class CHeroWindow : public CStatusbarWindow, public CGarrisonHolder, public CWindowWithArtifacts
 
- {
 
- 	std::shared_ptr<CLabel> name;
 
- 	std::shared_ptr<CLabel> title;
 
- 	std::shared_ptr<CAnimImage> banner;
 
- 	std::vector<std::shared_ptr<CHeroSwitcher>> heroList;
 
- 	std::shared_ptr<CPicture> listSelection;
 
- 	std::shared_ptr<LRClickableAreaWText> portraitArea;
 
- 	std::shared_ptr<CAnimImage> portraitImage;
 
- 	std::vector<std::shared_ptr<LRClickableAreaWTextComp>> primSkillAreas;
 
- 	std::vector<std::shared_ptr<CAnimImage>> primSkillImages;
 
- 	std::vector<std::shared_ptr<CLabel>> primSkillValues;
 
- 	std::shared_ptr<CLabel> expValue;
 
- 	std::shared_ptr<LRClickableAreaWText> expArea;
 
- 	std::shared_ptr<CLabel> manaValue;
 
- 	std::shared_ptr<LRClickableAreaWText> spellPointsArea;
 
- 	std::shared_ptr<LRClickableAreaWText> specArea;
 
- 	std::shared_ptr<CAnimImage> specImage;
 
- 	std::shared_ptr<CLabel> specName;
 
- 	std::shared_ptr<MoraleLuckBox> morale;
 
- 	std::shared_ptr<MoraleLuckBox> luck;
 
- 	std::vector<std::shared_ptr<LRClickableAreaWTextComp>> secSkillAreas;
 
- 	std::vector<std::shared_ptr<CAnimImage>> secSkillImages;
 
- 	std::vector<std::shared_ptr<CLabel>> secSkillNames;
 
- 	std::vector<std::shared_ptr<CLabel>> secSkillValues;
 
- 	CHeroWithMaybePickedArtifact heroWArt;
 
- 	std::shared_ptr<CButton> quitButton;
 
- 	std::shared_ptr<CTextBox> dismissLabel;
 
- 	std::shared_ptr<CButton> dismissButton;
 
- 	std::shared_ptr<CTextBox> questlogLabel;
 
- 	std::shared_ptr<CButton> questlogButton;
 
- 	std::shared_ptr<CButton> commanderButton;
 
- 	std::shared_ptr<CToggleButton> tacticsButton;
 
- 	std::shared_ptr<CToggleGroup> formations;
 
- 	std::shared_ptr<CGarrisonInt> garr;
 
- 	std::shared_ptr<CArtifactsOfHeroMain> arts;
 
- 	std::vector<std::shared_ptr<CLabel>> labels;
 
- public:
 
- 	const CGHeroInstance * curHero;
 
- 	CHeroWindow(const CGHeroInstance * hero);
 
- 	void update(const CGHeroInstance * hero, bool redrawNeeded = false); //sets main displayed hero
 
- 	void dismissCurrent(); //dissmissed currently displayed hero (curHero)
 
- 	void commanderWindow();
 
- 	void switchHero(); //changes displayed hero
 
- 	void updateGarrisons() override;
 
- 	//friends
 
- 	friend void CHeroArtPlace::clickLeft(tribool down, bool previousState);
 
- 	friend class CPlayerInterface;
 
- };
 
 
  |