mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-10 09:50:17 +02:00
61 lines
2.1 KiB
C++
61 lines
2.1 KiB
C++
/*
|
|
* 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);
|
|
|
|
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);
|
|
};
|
|
|