diff options
Diffstat (limited to 'game/shared/singleplay_gamerules.h')
| -rw-r--r-- | game/shared/singleplay_gamerules.h | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/game/shared/singleplay_gamerules.h b/game/shared/singleplay_gamerules.h new file mode 100644 index 0000000..3b48b43 --- /dev/null +++ b/game/shared/singleplay_gamerules.h @@ -0,0 +1,132 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#ifndef SINGLEPLAY_GAMERULES_H +#define SINGLEPLAY_GAMERULES_H +#ifdef _WIN32 +#pragma once +#endif + + +#include "gamerules.h" + + +#ifdef CLIENT_DLL + + #define CSingleplayRules C_SingleplayRules + +#endif + + +//========================================================= +// CSingleplayRules - rules for the single player Half-Life +// game. +//========================================================= +class CSingleplayRules : public CGameRules +{ +public: + + DECLARE_CLASS( CSingleplayRules, CGameRules ); + + +// Functions to verify the single/multiplayer status of a game + virtual bool IsMultiplayer( void ); + + // Damage query implementations. + virtual bool Damage_IsTimeBased( int iDmgType ); // Damage types that are time-based. + virtual bool Damage_ShouldGibCorpse( int iDmgType ); // Damage types that gib the corpse. + virtual bool Damage_ShowOnHUD( int iDmgType ); // Damage types that have client HUD art. + virtual bool Damage_NoPhysicsForce( int iDmgType ); // Damage types that don't have to supply a physics force & position. + virtual bool Damage_ShouldNotBleed( int iDmgType ); // Damage types that don't make the player bleed. + // TEMP: These will go away once DamageTypes become enums. + virtual int Damage_GetTimeBased( void ); + virtual int Damage_GetShouldGibCorpse( void ); + virtual int Damage_GetShowOnHud( void ); + virtual int Damage_GetNoPhysicsForce( void ); + virtual int Damage_GetShouldNotBleed( void ); + +#ifdef CLIENT_DLL + +#else + + CSingleplayRules(); + virtual ~CSingleplayRules() {} + +// GR_Think + virtual void Think( void ); + virtual bool IsAllowedToSpawn( CBaseEntity *pEntity ); + virtual bool FAllowFlashlight( void ) { return TRUE; }; + + virtual bool FShouldSwitchWeapon( CBasePlayer *pPlayer, CBaseCombatWeapon *pWeapon ); + virtual CBaseCombatWeapon *GetNextBestWeapon( CBaseCombatCharacter *pPlayer, CBaseCombatWeapon *pCurrentWeapon ); + bool SwitchToNextBestWeapon( CBaseCombatCharacter *pPlayer, CBaseCombatWeapon *pCurrentWeapon ); + +// Functions to verify the single/multiplayer status of a game + virtual bool IsDeathmatch( void ); + virtual bool IsCoOp( void ); + +// Client connection/disconnection + virtual bool ClientConnected( edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen ); + virtual void InitHUD( CBasePlayer *pl ); // the client dll is ready for updating + virtual void ClientDisconnected( edict_t *pClient ); + +// Client damage rules + virtual float FlPlayerFallDamage( CBasePlayer *pPlayer ); + virtual bool AllowDamage( CBaseEntity *pVictim, const CTakeDamageInfo &info ); + +// Client spawn/respawn control + virtual void PlayerSpawn( CBasePlayer *pPlayer ); + virtual bool FPlayerCanRespawn( CBasePlayer *pPlayer ); + virtual float FlPlayerSpawnTime( CBasePlayer *pPlayer ); + + virtual bool AllowAutoTargetCrosshair( void ); + virtual int GetAutoAimMode(); + +// Client kills/scoring + virtual int IPointsForKill( CBasePlayer *pAttacker, CBasePlayer *pKilled ); + virtual void PlayerKilled( CBasePlayer *pVictim, const CTakeDamageInfo &info ); + virtual void DeathNotice( CBasePlayer *pVictim, const CTakeDamageInfo &info ); + +// Weapon spawn/respawn control + virtual int WeaponShouldRespawn( CBaseCombatWeapon *pWeapon ); + virtual float FlWeaponRespawnTime( CBaseCombatWeapon *pWeapon ); + virtual float FlWeaponTryRespawn( CBaseCombatWeapon *pWeapon ); + virtual Vector VecWeaponRespawnSpot( CBaseCombatWeapon *pWeapon ); + +// Item retrieval + virtual bool CanHaveItem( CBasePlayer *pPlayer, CItem *pItem ); + virtual void PlayerGotItem( CBasePlayer *pPlayer, CItem *pItem ); + +// Item spawn/respawn control + virtual int ItemShouldRespawn( CItem *pItem ); + virtual float FlItemRespawnTime( CItem *pItem ); + virtual Vector VecItemRespawnSpot( CItem *pItem ); + virtual QAngle VecItemRespawnAngles( CItem *pItem ); + +// Ammo retrieval + virtual void PlayerGotAmmo( CBaseCombatCharacter *pPlayer, char *szName, int iCount ); + +// Healthcharger respawn control + virtual float FlHealthChargerRechargeTime( void ); + +// What happens to a dead player's weapons + virtual int DeadPlayerWeapons( CBasePlayer *pPlayer ); + +// What happens to a dead player's ammo + virtual int DeadPlayerAmmo( CBasePlayer *pPlayer ); + +// NPCs + virtual bool FAllowNPCs( void ); + +// Teamplay stuff + virtual const char *GetTeamID( CBaseEntity *pEntity ) {return "";}; + virtual int PlayerRelationship( CBaseEntity *pPlayer, CBaseEntity *pTarget ); + virtual bool PlayerCanHearChat( CBasePlayer *pListener, CBasePlayer *pSpeaker ); +#endif +}; + + +#endif // SINGLEPLAY_GAMERULES_H |