| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * 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() const;
- void lockSlot(bool on);
- bool isLocked() const;
- void setArtifact(const CArtifactInstance * art);
- 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;
- void addCombinedArtInfo(const std::map<const ArtifactID, std::vector<ArtifactID>> & arts);
- private:
- const CArtifactInstance * ourArt;
- bool locked;
- int imageIndex;
- std::shared_ptr<CAnimImage> image;
- ClickFunctor clickPressedCallback;
- ClickFunctor showPopupCallback;
- ClickFunctor gestureCallback;
- protected:
- void setInternals(const CArtifactInstance * artInst);
- };
- class CCommanderArtPlace : public CArtPlace
- {
- private:
- 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;
- };
|