//========= 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