Files
funnygame/public/gamemode.h
2025-07-20 00:45:31 +03:00

47 lines
1023 B
C++

#ifndef GAMEMODE_H
#define GAMEMODE_H
#include "interface.h"
#include "tier0/platform.h"
#include "tier1/utlvector.h"
class CGameMode
{
public:
virtual void RoundBegin( void );
virtual void RoundEnd( void );
bool bCanPlayerSpawnMidRound;
};
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); \
interface IGameModeManager: public IInterface
{
public:
virtual void StartGameMode( const char *szName ) = 0;
virtual const char *GetCurrentGameMode( void ) = 0;
virtual CGameMode *GetCurrentGameModeClass( void ) = 0;
virtual void RestartCurrentGameMode( void ) = 0;
CUtlVector<CGameModeRegistry*> m_RegisteredGameModes;
};
extern IGameModeManager *GameModeManager();
#endif