| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*
- * CAdvMapPanel.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/CIntObject.h"
- VCMI_LIB_NAMESPACE_BEGIN
- class PlayerColor;
- VCMI_LIB_NAMESPACE_END
- class CAnimation;
- class CAnimImage;
- class CFilledTexture;
- class CButton;
- class IImage;
- /// simple panel that contains other displayable elements; used to separate groups of controls
- class CAdvMapPanel : public CIntObject
- {
- std::vector<std::shared_ptr<CButton>> colorableButtons;
- std::vector<std::shared_ptr<CIntObject>> otherObjects;
- /// the surface passed to this obj will be freed in dtor
- std::shared_ptr<IImage> background;
- public:
- CAdvMapPanel(std::shared_ptr<IImage> bg, Point position);
- void addChildToPanel(std::shared_ptr<CIntObject> obj, ui8 actions = 0);
- void addChildColorableButton(std::shared_ptr<CButton> button);
- /// recolors all buttons to given player color
- void setPlayerColor(const PlayerColor & clr);
- void showAll(SDL_Surface * to) override;
- };
- /// specialized version of CAdvMapPanel that handles recolorable def-based pictures for world view info panel
- class CAdvMapWorldViewPanel : public CAdvMapPanel
- {
- /// data that allows reconstruction of panel info icons
- std::vector<std::pair<int, Point>> iconsData;
- /// ptrs to child-pictures constructed from iconsData
- std::vector<std::shared_ptr<CAnimImage>> currentIcons;
- /// surface drawn below world view panel on higher resolutions (won't be needed when world view panel is configured for extraResolutions mod)
- std::shared_ptr<CFilledTexture> backgroundFiller;
- std::shared_ptr<CAnimation> icons;
- public:
- CAdvMapWorldViewPanel(std::shared_ptr<CAnimation> _icons, std::shared_ptr<IImage> bg, Point position, int spaceBottom, const PlayerColor &color);
- virtual ~CAdvMapWorldViewPanel();
- void addChildIcon(std::pair<int, Point> data, int indexOffset);
- /// recreates all pictures from given def to recolor them according to current player color
- void recolorIcons(const PlayerColor & color, int indexOffset);
- };
|