| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * CMinimap.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"
- #include "../../lib/GameConstants.h"
- struct SDL_Color;
- class CMinimap;
- class CMinimapInstance : public CIntObject
- {
- CMinimap * parent;
- SDL_Surface * minimap;
- int level;
- //get color of selected tile on minimap
- const SDL_Color & getTileColor(const int3 & pos);
- void blitTileWithColor(const SDL_Color & color, const int3 & pos, SDL_Surface * to, int x, int y);
- //draw minimap already scaled.
- //result is not antialiased. Will result in "missing" pixels on huge maps (>144)
- void drawScaled(int level);
- public:
- CMinimapInstance(CMinimap * parent, int level);
- ~CMinimapInstance();
- void showAll(SDL_Surface * to) override;
- void tileToPixels (const int3 & tile, int & x, int & y, int toX = 0, int toY = 0);
- void refreshTile(const int3 & pos);
- };
- /// Minimap which is displayed at the right upper corner of adventure map
- class CMinimap : public CIntObject
- {
- protected:
- std::shared_ptr<CPicture> aiShield; //the graphic displayed during AI turn
- std::shared_ptr<CMinimapInstance> minimap;
- int level;
- //to initialize colors
- std::map<TerrainId, std::pair<SDL_Color, SDL_Color> > loadColors();
- void clickLeft(tribool down, bool previousState) override;
- void clickRight(tribool down, bool previousState) override;
- void hover (bool on) override;
- void mouseMoved (const SDL_MouseMotionEvent & sEvent) override;
- void moveAdvMapSelection();
- public:
- // terrainID -> (normal color, blocked color)
- const std::map<TerrainId, std::pair<SDL_Color, SDL_Color> > colors;
- CMinimap(const Rect & position);
- //should be called to invalidate whole map - different player or level
- int3 translateMousePosition();
- void update();
- void setLevel(int level);
- void setAIRadar(bool on);
- void showAll(SDL_Surface * to) override;
- void hideTile(const int3 &pos); //puts FoW
- void showTile(const int3 &pos); //removes FoW
- };
|