| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /*
- * CComponentHolder.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 "MiscWidgets.h"
- class CAnimImage;
- class CComponentHolder : public SelectableSlot
- {
- public:
- using ClickFunctor = std::function<void(CComponentHolder&, const Point&)>;
- ClickFunctor clickPressedCallback;
- ClickFunctor showPopupCallback;
- ClickFunctor gestureCallback;
- std::shared_ptr<CAnimImage> image;
- CComponentHolder(const Rect & area, const Point & selectionOversize);
- void setClickPressedCallback(const ClickFunctor & callback);
- void setShowPopupCallback(const ClickFunctor & callback);
- void setGestureCallback(const ClickFunctor & callback);
- void clickPressed(const Point & cursorPosition) override;
- void showPopupWindow(const Point & cursorPosition) override;
- void gesture(bool on, const Point & initialPosition, const Point & finalPosition) override;
- };
- class CArtPlace : public CComponentHolder
- {
- public:
- ArtifactPosition slot;
-
- CArtPlace(Point position, const ArtifactID & newArtId = ArtifactID::NONE, const SpellID & newSpellId = SpellID::NONE);
- void setArtifact(const SpellID & newSpellId);
- void setArtifact(const ArtifactID & newArtId, const SpellID & newSpellId = SpellID::NONE);
- ArtifactID getArtifactId() const;
- void lockSlot(bool on);
- bool isLocked() const;
- void addCombinedArtInfo(const std::map<const ArtifactID, std::vector<ArtifactID>> & arts);
- private:
- ArtifactID artId;
- SpellID spellId;
- bool locked;
- int32_t imageIndex;
- };
- class CCommanderArtPlace : public CArtPlace
- {
- private:
- const CGHeroInstance * commanderOwner;
- ArtifactPosition commanderSlotID;
- void returnArtToHeroCallback();
- public:
- CCommanderArtPlace(Point position, const CGHeroInstance * commanderOwner, ArtifactPosition artSlot,
- const ArtifactID & artId = ArtifactID::NONE, const SpellID & spellId = SpellID::NONE);
- void clickPressed(const Point & cursorPosition) override;
- void showPopupWindow(const Point & cursorPosition) override;
- };
- class CSecSkillPlace : public CComponentHolder
- {
- public:
- enum class ImageSize
- {
- LARGE,
- MEDIUM,
- SMALL
- };
- CSecSkillPlace(const Point & position, const ImageSize & imageSize, const SecondarySkill & skillId = SecondarySkill::NONE, const uint8_t level = 0);
- void setSkill(const SecondarySkill & newSkillId, const uint8_t level = 0);
- void setLevel(const uint8_t level);
- private:
- SecondarySkill skillId;
- };
|