diff options
Diffstat (limited to 'game/shared/ammodef.h')
| -rw-r--r-- | game/shared/ammodef.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/game/shared/ammodef.h b/game/shared/ammodef.h new file mode 100644 index 0000000..71c1707 --- /dev/null +++ b/game/shared/ammodef.h @@ -0,0 +1,103 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Holds defintion for game ammo types +// +// $Workfile: $ +// $Date: $ +// $NoKeywords: $ +//=============================================================================// + +#ifndef AI_AMMODEF_H +#define AI_AMMODEF_H + +#ifdef _WIN32 +#pragma once +#endif + +class ConVar; + +struct Ammo_t +{ + char *pName; + int nDamageType; + int eTracerType; + float physicsForceImpulse; + int nMinSplashSize; + int nMaxSplashSize; + + int nFlags; + + // Values for player/NPC damage and carrying capability + // If the integers are set, they override the CVars + int pPlrDmg; // CVar for player damage amount + int pNPCDmg; // CVar for NPC damage amount + int pMaxCarry; // CVar for maximum number can carry + const ConVar* pPlrDmgCVar; // CVar for player damage amount + const ConVar* pNPCDmgCVar; // CVar for NPC damage amount + const ConVar* pMaxCarryCVar; // CVar for maximum number can carry +}; + +// Used to tell AmmoDef to use the cvars, not the integers +#define USE_CVAR -1 +// Ammo is infinite +#define INFINITE_AMMO -2 + +enum AmmoTracer_t +{ + TRACER_NONE, + TRACER_LINE, + TRACER_RAIL, + TRACER_BEAM, + TRACER_LINE_AND_WHIZ, +}; + +enum AmmoFlags_t +{ + AMMO_FORCE_DROP_IF_CARRIED = 0x1, + AMMO_INTERPRET_PLRDAMAGE_AS_DAMAGE_TO_PLAYER = 0x2, +}; + + +#include "shareddefs.h" + +//============================================================================= +// >> CAmmoDef +//============================================================================= +class CAmmoDef +{ + +public: + int m_nAmmoIndex; + + Ammo_t m_AmmoType[MAX_AMMO_TYPES]; + + Ammo_t *GetAmmoOfIndex(int nAmmoIndex); + int Index(const char *psz); + int PlrDamage(int nAmmoIndex); + int NPCDamage(int nAmmoIndex); + int MaxCarry(int nAmmoIndex); + int DamageType(int nAmmoIndex); + int TracerType(int nAmmoIndex); + float DamageForce(int nAmmoIndex); + int MinSplashSize(int nAmmoIndex); + int MaxSplashSize(int nAmmoIndex); + int Flags(int nAmmoIndex); + + void AddAmmoType(char const* name, int damageType, int tracerType, int plr_dmg, int npc_dmg, int carry, float physicsForceImpulse, int nFlags, int minSplashSize = 4, int maxSplashSize = 8 ); + void AddAmmoType(char const* name, int damageType, int tracerType, char const* plr_cvar, char const* npc_var, char const* carry_cvar, float physicsForceImpulse, int nFlags, int minSplashSize = 4, int maxSplashSize = 8 ); + + CAmmoDef(void); + virtual ~CAmmoDef( void ); + +private: + bool AddAmmoType(char const* name, int damageType, int tracerType, int nFlags, int minSplashSize, int maxSplashSize ); +}; + + +// Get the global ammodef object. This is usually implemented in each mod's game rules file somewhere, +// so the mod can setup custom ammo types. +CAmmoDef* GetAmmoDef(); + + +#endif // AI_AMMODEF_H + |