// LOSManager.h // // Matei Zaharia matei@sprint.ca / matei@wildfiregames.com // // Maintains and updates line of sight data (including Shroud of Darkness // and Fog of War). // // Usage: // - Initialize() is called when the game is started to allocate the visibility arrays // - Update() is called each frame by CSimulation::Update() to update the visibility arrays // - m_MapRevealed can be set to true to reveal the entire map (remove both LOS and FOW) // - GetStatus can be used to obtain the LOS status of a tile or a world-space point // - GetUnitStatus returns the LOS status of an entity or actor #ifndef LOS_MANAGER_INCLUDED #define LOS_MANAGER_INCLUDED #include "Singleton.h" #include "Game.h" #include "World.h" #include "Player.h" class CUnit; class CPlayer; #undef _2_los enum ELOSStatus { LOS_VISIBLE = 2, // tile is currently in LOS of one of the player's units LOS_EXPLORED = 1, // tile was explored before but is now in Fog of War LOS_UNEXPLORED = 0 // tile is unexplored and therefore in Shroud of Darkness }; enum EUnitLOSStatus { UNIT_VISIBLE = 2, // unit is in LOS of one of the player's units UNIT_REMEMBERED = 1, // unit was seen before and is permanent but is no longer in LOS UNIT_HIDDEN = 0 // unit is either not permanent or was never seen before }; extern uint LOS_GetTokenFor(uint player_id); class CLOSManager : public Singleton { #ifdef _2_los int** m_Explored; // (m_Explored[x][z] & (1<