0ad/source/ps/World.h
Ykkrosh ec69bccb2c # Tidied up some code.
- Made some classes not be singletons, since there's no reason why they
should be.
 - Made them non-global too (because globals have unclear lifetimes, and
make it harder to test things, etc). They're now owned by CGameView and
CWorld, and mostly accessed via g_Game or arguments (vaguely trying to
avoid the graphics code calling into the game code).
 - Moved CGameView implementation into pimpl, so the header file isn't
so heavy.
 - Changed a few pointers into references, to indicate that they're
never NULL.

This was SVN commit r4756.
2007-01-08 01:56:46 +00:00

68 lines
1.4 KiB
C++

#ifndef _ps_World_H
#define _ps_World_H
#include "ps/Errors.h"
#ifndef ERROR_GROUP_GAME_DEFINED
#define ERROR_GROUP_GAME_DEFINED
ERROR_GROUP(Game);
#endif
ERROR_SUBGROUP(Game, World);
ERROR_TYPE(Game_World, MapLoadFailed);
class CGame;
class CGameAttributes;
class CUnitManager;
class CEntityManager;
class CProjectileManager;
class CLOSManager;
class CTerritoryManager;
class CTerrain;
class CWorld
{
CGame *m_pGame;
CTerrain *m_Terrain;
CUnitManager *m_UnitManager;
CEntityManager *m_EntityManager;
CProjectileManager *m_ProjectileManager;
CLOSManager *m_LOSManager;
CTerritoryManager *m_TerritoryManager;
public:
CWorld(CGame *pGame);
~CWorld();
void RegisterInit(CGameAttributes *pGameAttributes);
/*
Initialize the World - load the map and all objects
*/
void Initialize(CGameAttributes *pGameAttributes);
// provided for JS _rewritemaps function
void RewriteMap();
inline CTerrain *GetTerrain()
{ return m_Terrain; }
inline CUnitManager &GetUnitManager()
{ return *m_UnitManager; }
inline CEntityManager *GetEntityManager()
{ return m_EntityManager; }
inline CProjectileManager &GetProjectileManager()
{ return *m_ProjectileManager; }
inline CLOSManager *GetLOSManager()
{ return m_LOSManager; }
inline CTerritoryManager *GetTerritoryManager()
{ return m_TerritoryManager; }
NO_COPY_CTOR(CWorld);
};
// rationale: see definition.
class CLightEnv;
extern CLightEnv g_LightEnv;
#endif