summaryrefslogtreecommitdiff
path: root/game/shared/singleplay_gamerules.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/singleplay_gamerules.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/shared/singleplay_gamerules.h')
-rw-r--r--game/shared/singleplay_gamerules.h132
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