You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
4.6 KiB
132 lines
4.6 KiB
//========= 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
|
|
|