123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /*
- * CAdventureMapWidget.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 "../gui/InterfaceObjectConfigurable.h"
- class CHeroList;
- class CTownList;
- class CMinimap;
- class MapView;
- class CInfoBar;
- class IImage;
- class AdventureMapShortcuts;
- enum class EAdventureState;
- /// Internal class of AdventureMapInterface that contains actual UI elements
- class AdventureMapWidget : public InterfaceObjectConfigurable
- {
- int mapLevel;
- /// temporary stack of sizes of currently building widgets
- std::vector<Rect> subwidgetSizes;
- /// list of images on which player-colored palette will be applied
- std::vector<ImagePath> playerColoredImages;
- /// Widgets that require access from adventure map
- std::shared_ptr<CHeroList> heroList;
- std::shared_ptr<CTownList> townList;
- std::shared_ptr<CMinimap> minimap;
- std::shared_ptr<MapView> mapView;
- std::shared_ptr<CInfoBar> infoBar;
- std::shared_ptr<AdventureMapShortcuts> shortcuts;
- Rect readTargetArea(const JsonNode & source);
- Rect readSourceArea(const JsonNode & source, const JsonNode & sourceCommon);
- Rect readArea(const JsonNode & source, const Rect & boundingBox);
- std::shared_ptr<CIntObject> buildInfobox(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMapImage(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMapButton(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMapContainer(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMapGameArea(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMapHeroList(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMapIcon(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMapTownList(const JsonNode & input);
- std::shared_ptr<CIntObject> buildMinimap(const JsonNode & input);
- std::shared_ptr<CIntObject> buildResourceDateBar(const JsonNode & input);
- std::shared_ptr<CIntObject> buildStatusBar(const JsonNode & input);
- std::shared_ptr<CIntObject> buildTexturePlayerColored(const JsonNode &);
- std::shared_ptr<CIntObject> buildResourceAdditional(const JsonNode &);
- void setPlayerChildren(CIntObject * widget, const PlayerColor & player);
- void updateActiveStateChildren(CIntObject * widget);
- public:
- explicit AdventureMapWidget( std::shared_ptr<AdventureMapShortcuts> shortcuts );
- std::shared_ptr<CHeroList> getHeroList();
- std::shared_ptr<CTownList> getTownList();
- std::shared_ptr<CMinimap> getMinimap();
- std::shared_ptr<MapView> getMapView();
- std::shared_ptr<CInfoBar> getInfoBar();
- void setPlayerColor(const PlayerColor & player);
- void onMapViewMoved(const Rect & visibleArea, int mapLevel);
- void updateActiveState();
- };
- /// Small helper class that provides ownership for shared_ptr's of child elements
- class CAdventureMapContainerWidget : public CIntObject
- {
- friend class AdventureMapWidget;
- std::vector<std::shared_ptr<CIntObject>> ownedChildren;
- std::string disableCondition;
- };
- class CAdventureMapOverlayWidget : public CAdventureMapContainerWidget
- {
- public:
- void show(Canvas & to) override;
- };
- /// Small helper class that provides player-colorable icon using animation file
- class CAdventureMapIcon : public CIntObject
- {
- std::shared_ptr<CAnimImage> image;
- size_t index;
- size_t iconsPerPlayer;
- public:
- CAdventureMapIcon(const Point & position, const AnimationPath & image, size_t index, size_t iconsPerPlayer);
- void setPlayerColor(const PlayerColor & player);
- };
|