Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

112 lines
2.7 KiB

5 years ago
//========= 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