/* * 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 aiShield; //the graphic displayed during AI turn std::shared_ptr minimap; int level; //to initialize colors std::map > loadColors(); void clickLeft(tribool down, bool previousState) override; void clickRight(tribool down, bool previousState) override; void hover (bool on) override; void mouseMoved (const Point & cursorPosition) override; void moveAdvMapSelection(); public: // terrainID -> (normal color, blocked color) const std::map > 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 };