#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