diff options
Diffstat (limited to 'game/shared/tf/tf_weapon_parse.h')
| -rw-r--r-- | game/shared/tf/tf_weapon_parse.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/game/shared/tf/tf_weapon_parse.h b/game/shared/tf/tf_weapon_parse.h new file mode 100644 index 0000000..cc94689 --- /dev/null +++ b/game/shared/tf/tf_weapon_parse.h @@ -0,0 +1,111 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= +#ifndef TF_WEAPON_PARSE_H +#define TF_WEAPON_PARSE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "weapon_parse.h" +#include "networkvar.h" +#include "tf_shareddefs.h" + +//============================================================================= +// +// TF Weapon Info +// + +struct WeaponData_t +{ + int m_nDamage; + int m_nBulletsPerShot; + float m_flRange; + float m_flSpread; + float m_flPunchAngle; + float m_flTimeFireDelay; // Time to delay between firing + float m_flTimeIdle; // Time to idle after firing + float m_flTimeIdleEmpty; // Time to idle after firing last bullet in clip + float m_flTimeReloadStart; // Time to start into a reload (ie. shotgun) + float m_flTimeReload; // Time to reload + bool m_bDrawCrosshair; // Should the weapon draw a crosshair + int m_iProjectile; // The type of projectile this mode fires + int m_iAmmoPerShot; // How much ammo each shot consumes + float m_flProjectileSpeed; // Start speed for projectiles (nail, etc.); NOTE: union with something non-projectile + float m_flSmackDelay; // how long after swing should damage happen for melee weapons + bool m_bUseRapidFireCrits; + + void Init( void ) + { + m_nDamage = 0; + m_nBulletsPerShot = 0; + m_flRange = 0.0f; + m_flSpread = 0.0f; + m_flPunchAngle = 0.0f; + m_flTimeFireDelay = 0.0f; + m_flTimeIdle = 0.0f; + m_flTimeIdleEmpty = 0.0f; + m_flTimeReloadStart = 0.0f; + m_flTimeReload = 0.0f; + m_iProjectile = TF_PROJECTILE_NONE; + m_iAmmoPerShot = 0; + m_flProjectileSpeed = 0.0f; + m_flSmackDelay = 0.0f; + m_bUseRapidFireCrits = false; + }; +}; + +class CTFWeaponInfo : public FileWeaponInfo_t +{ +public: + + DECLARE_CLASS_GAMEROOT( CTFWeaponInfo, FileWeaponInfo_t ); + + CTFWeaponInfo(); + ~CTFWeaponInfo(); + + virtual void Parse( ::KeyValues *pKeyValuesData, const char *szWeaponName ); + + WeaponData_t const &GetWeaponData( int iWeapon ) const { return m_WeaponData[iWeapon]; } + +public: + + WeaponData_t m_WeaponData[2]; + + int m_iWeaponType; + + // Grenade. + bool m_bGrenade; + float m_flDamageRadius; + float m_flPrimerTime; + bool m_bLowerWeapon; + bool m_bSuppressGrenTimer; + + // Skins + bool m_bHasTeamSkins_Viewmodel; + bool m_bHasTeamSkins_Worldmodel; + + // Muzzle flash + char m_szMuzzleFlashModel[128]; + float m_flMuzzleFlashModelDuration; + char m_szMuzzleFlashParticleEffect[128]; + + // Tracer + char m_szTracerEffect[128]; + + // Eject Brass + bool m_bDoInstantEjectBrass; + char m_szBrassModel[128]; + + // Explosion Effect + char m_szExplosionSound[128]; + char m_szExplosionEffect[128]; + char m_szExplosionPlayerEffect[128]; + char m_szExplosionWaterEffect[128]; + + bool m_bDontDrop; +}; + +#endif // TF_WEAPON_PARSE_H |