#ifndef __H_MINIMAP_H__ #define __H_MINIMAP_H__ #include "gui/GUI.h" #include "ps/Vector2D.h" #include "maths/Vector3D.h" #include "graphics/Camera.h" class CTerrain; class CUnitManager; extern bool g_TerrainModified; class CMiniMap : public IGUIObject { GUI_OBJECT(CMiniMap) public: CMiniMap(); virtual ~CMiniMap(); protected: virtual void Draw(); virtual void HandleMessage(const SGUIMessage &Message); // create the minimap textures void CreateTextures(); // rebuild the terrain texture map void RebuildTerrainTexture(); // rebuild the LOS map void RebuildLOSTexture(); // destroy and free any memory and textures void Destroy(); void SetCameraPos(); void FireWorldClickEvent(uint button, int clicks); // calculate the relative heightmap space coordinates // for a units world position CVector2D GetMapSpaceCoords(CVector3D worldPos); // the terrain we are mini-mapping const CTerrain* m_Terrain; // the unit manager with unit positions const CUnitManager* m_UnitManager; // not const: camera is moved by clicking on minimap CCamera* m_Camera; //Whether or not the mouse is currently down bool m_Clicking; // minimap texture handles u32 m_TerrainTexture; u32 m_LOSTexture; // texture data u32 *m_TerrainData; u8 *m_LOSData; u32 m_Width, m_Height; // map size u32 m_MapSize; // texture size u32 m_TextureSize; void DrawViewRect(); // split out of Draw }; #endif