| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /*
- * CArtPlace.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 CArtPlace : public SelectableSlot
- {
- public:
- using ClickFunctor = std::function<void(CArtPlace&, const Point&)>;
- ArtifactPosition slot;
- CArtPlace(Point position, const CArtifactInstance * art = nullptr);
- const CArtifactInstance * getArt();
- void lockSlot(bool on);
- bool isLocked() const;
- void setArtifact(const CArtifactInstance * art);
- void setClickPressedCallback(ClickFunctor callback);
- void setShowPopupCallback(ClickFunctor callback);
- void setGestureCallback(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;
- protected:
- std::shared_ptr<CAnimImage> image;
- const CArtifactInstance * ourArt;
- int imageIndex;
- bool locked;
- ClickFunctor clickPressedCallback;
- ClickFunctor showPopupCallback;
- ClickFunctor gestureCallback;
- void setInternals(const CArtifactInstance * artInst);
- };
- class CCommanderArtPlace : public CArtPlace
- {
- protected:
- const CGHeroInstance * commanderOwner;
- ArtifactPosition commanderSlotID;
- void returnArtToHeroCallback();
- public:
- CCommanderArtPlace(Point position, const CGHeroInstance * commanderOwner, ArtifactPosition artSlot, const CArtifactInstance * art = nullptr);
- void clickPressed(const Point & cursorPosition) override;
- void showPopupWindow(const Point & cursorPosition) override;
- };
- class CHeroArtPlace: public CArtPlace
- {
- public:
- CHeroArtPlace(Point position, const CArtifactInstance * art = nullptr);
- void addCombinedArtInfo(std::map<const CArtifact*, int> & arts);
- };
- namespace ArtifactUtilsClient
- {
- bool askToAssemble(const CGHeroInstance * hero, const ArtifactPosition & slot);
- bool askToDisassemble(const CGHeroInstance * hero, const ArtifactPosition & slot);
- }
|