50 lines
1.8 KiB
C++
50 lines
1.8 KiB
C++
//===========================================================================
|
|
// Copyright (C) 2003 Radical Entertainment Ltd. All rights reserved.
|
|
//
|
|
// Component: PersistentWorldManager
|
|
//
|
|
// Description: Manage the state of the world we want to keep during gameplay
|
|
// and record to memory card.
|
|
//
|
|
// Authors: James Harrison
|
|
//
|
|
// Revisions Date Author Revision
|
|
// 24 Feb James Harrison Created for SRR2
|
|
//
|
|
//===========================================================================
|
|
|
|
#ifndef PERSISTENT_WORLD_MANAGER_H
|
|
#define PERSISTENT_WORLD_MANAGER_H
|
|
|
|
class PersistentWorldManager
|
|
{
|
|
public:
|
|
// Static Methods for accessing this singleton.
|
|
static PersistentWorldManager* CreateInstance();
|
|
static void DestroyInstance();
|
|
static PersistentWorldManager* GetInstance();
|
|
|
|
void OnSectorLoad( tUID Sector );
|
|
void OnLevelLoad( int LevelNum );
|
|
short GetPersistentObjectID( tUID Sector, tUID ObjectName = 0 );
|
|
short GetPersistentObjectID( void ); // This is a level based object not associated with a particular sector.
|
|
void OnObjectBreak( short ObjectID );
|
|
|
|
protected:
|
|
PersistentWorldManager();
|
|
~PersistentWorldManager();
|
|
PersistentWorldManager( const PersistentWorldManager& );
|
|
PersistentWorldManager& operator= ( const PersistentWorldManager& );
|
|
|
|
bool CheckObject( unsigned char SectorIndex, unsigned char ObjectIndex ) const;
|
|
|
|
// Pointer to the one and only instance of this singleton.
|
|
static PersistentWorldManager* spInstance;
|
|
|
|
unsigned char mCurSectorLoad; // Just to speed up the searches.
|
|
};
|
|
|
|
// Standard syntactic sugar for getting at this singleton.
|
|
inline PersistentWorldManager* GetPersistentWorldManager() { return PersistentWorldManager::GetInstance(); }
|
|
|
|
#endif //#ifndef PERSISTENT_WORLD_MANAGER_H
|