44 lines
887 B
C++
44 lines
887 B
C++
#ifndef GAMEMODE_H
|
|
#define GAMEMODE_H
|
|
|
|
#include "tier0/platform.h"
|
|
|
|
class CGameMode
|
|
{
|
|
public:
|
|
virtual void RoundBegin( void );
|
|
virtual void RoundEnd( void );
|
|
bool bCanPlayerSpawnMidRound;
|
|
};
|
|
|
|
interface IGameModeManager
|
|
{
|
|
public:
|
|
static void Init( void );
|
|
static void Frame( void );
|
|
|
|
static void StartGameMode( const char *szName );
|
|
static const char *GetCurrentGameMode( void );
|
|
static CGameMode *GetCurrentGameModeClass( void );
|
|
static void RestartCurrentGameMode( void );
|
|
};
|
|
|
|
typedef CGameMode*(*GameModeRegistryFn)();
|
|
class CGameModeRegistry
|
|
{
|
|
public:
|
|
CGameModeRegistry( const char *szName, GameModeRegistryFn pfn );
|
|
const char *m_szName;
|
|
GameModeRegistryFn m_pfn;
|
|
};
|
|
|
|
#define DECLARE_GAME_MODE( class, name ) \
|
|
CGameMode *__gamemode_alloc_##name() \
|
|
{ \
|
|
return new class; \
|
|
}; \
|
|
CGameModeRegistry __gamemode_##name##_registry(#name, __gamemode_alloc_##name); \
|
|
|
|
|
|
#endif
|