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