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.

193 lines
5.0 KiB

5 years ago
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef CS_WEAPON_PARSE_H
#define CS_WEAPON_PARSE_H
#ifdef _WIN32
#pragma once
#endif
#include "weapon_parse.h"
#include "networkvar.h"
//--------------------------------------------------------------------------------------------------------
enum CSWeaponType
{
WEAPONTYPE_KNIFE=0,
WEAPONTYPE_PISTOL,
WEAPONTYPE_SUBMACHINEGUN,
WEAPONTYPE_RIFLE,
WEAPONTYPE_SHOTGUN,
WEAPONTYPE_SNIPER_RIFLE,
WEAPONTYPE_MACHINEGUN,
WEAPONTYPE_C4,
WEAPONTYPE_GRENADE,
WEAPONTYPE_UNKNOWN
};
//--------------------------------------------------------------------------------------------------------
enum CSWeaponID
{
WEAPON_NONE = 0,
WEAPON_P228,
WEAPON_GLOCK,
WEAPON_SCOUT,
WEAPON_HEGRENADE,
WEAPON_XM1014,
WEAPON_C4,
WEAPON_MAC10,
WEAPON_AUG,
WEAPON_SMOKEGRENADE,
WEAPON_ELITE,
WEAPON_FIVESEVEN,
WEAPON_UMP45,
WEAPON_SG550,
WEAPON_GALIL,
WEAPON_FAMAS,
WEAPON_USP,
WEAPON_AWP,
WEAPON_MP5NAVY,
WEAPON_M249,
WEAPON_M3,
WEAPON_M4A1,
WEAPON_TMP,
WEAPON_G3SG1,
WEAPON_FLASHBANG,
WEAPON_DEAGLE,
WEAPON_SG552,
WEAPON_AK47,
WEAPON_KNIFE,
WEAPON_P90,
WEAPON_SHIELDGUN, // BOTPORT: Is this still needed?
WEAPON_KEVLAR,
WEAPON_ASSAULTSUIT,
WEAPON_NVG,
WEAPON_MAX, // number of weapons weapon index
};
#define MAX_EQUIPMENT (WEAPON_MAX - WEAPON_KEVLAR)
void PrepareEquipmentInfo( void );
//--------------------------------------------------------------------------------------------------------
const char * WeaponClassAsString( CSWeaponType weaponType );
//--------------------------------------------------------------------------------------------------------
CSWeaponType WeaponClassFromString( const char* weaponType );
//--------------------------------------------------------------------------------------------------------
CSWeaponType WeaponClassFromWeaponID( CSWeaponID weaponID );
//--------------------------------------------------------------------------------------------------------
const char * WeaponIdAsString( CSWeaponID weaponID );
//--------------------------------------------------------------------------------------------------------
CSWeaponID WeaponIdFromString( const char *szWeaponName );
//--------------------------------------------------------------------------------------------------------
class CCSWeaponInfo : public FileWeaponInfo_t
{
public:
DECLARE_CLASS_GAMEROOT( CCSWeaponInfo, FileWeaponInfo_t );
CCSWeaponInfo();
virtual void Parse( ::KeyValues *pKeyValuesData, const char *szWeaponName );
int GetRealWeaponPrice( void ) { return m_iWeaponPrice; }
public:
float m_flMaxSpeed; // How fast the player can run while this is his primary weapon.
CSWeaponType m_WeaponType;
bool m_bFullAuto; // is this a fully automatic weapon?
int m_iTeam; // Which team can have this weapon. TEAM_UNASSIGNED if both can have it.
float m_flBotAudibleRange; // How far away a bot can hear this weapon.
float m_flArmorRatio;
int m_iCrosshairMinDistance;
int m_iCrosshairDeltaDistance;
bool m_bCanUseWithShield;
char m_WrongTeamMsg[32]; // Reference to a string describing the error if someone tries to buy
// this weapon but they're on the wrong team to have it.
// Zero-length if no specific message for this weapon.
char m_szAnimExtension[16];
char m_szShieldViewModel[64];
char m_szAddonModel[MAX_WEAPON_STRING]; // If this is set, it is used as the addon model. Otherwise, szWorldModel is used.
char m_szDroppedModel[MAX_WEAPON_STRING]; // Alternate dropped model, if different from the szWorldModel the player holds
char m_szSilencerModel[MAX_WEAPON_STRING]; // Alternate model with silencer attached
int m_iMuzzleFlashStyle;
float m_flMuzzleScale;
// Parameters for FX_FireBullets:
int m_iPenetration;
int m_iDamage;
float m_flRange;
float m_flRangeModifier;
int m_iBullets;
float m_flCycleTime;
// Variables that control how fast the weapon's accuracy changes as it is fired.
bool m_bAccuracyQuadratic;
float m_flAccuracyDivisor;
float m_flAccuracyOffset;
float m_flMaxInaccuracy;
// variables for new accuracy model
float m_fSpread[2];
float m_fInaccuracyCrouch[2];
float m_fInaccuracyStand[2];
float m_fInaccuracyJump[2];
float m_fInaccuracyLand[2];
float m_fInaccuracyLadder[2];
float m_fInaccuracyImpulseFire[2];
float m_fInaccuracyMove[2];
float m_fRecoveryTimeStand;
float m_fRecoveryTimeCrouch;
float m_fInaccuracyReload;
float m_fInaccuracyAltSwitch;
// Delay until the next idle animation after shooting.
float m_flTimeToIdleAfterFire;
float m_flIdleInterval;
int GetWeaponPrice( void ) const;
int GetDefaultPrice( void );
int GetPrevousPrice( void );
void SetWeaponPrice( int iPrice ) { m_iWeaponPrice = iPrice; }
void SetDefaultPrice( int iPrice ) { m_iDefaultPrice = iPrice; }
void SetPreviousPrice( int iPrice ) { m_iPreviousPrice = iPrice; }
private:
int m_iWeaponPrice;
int m_iDefaultPrice;
int m_iPreviousPrice;
};
#endif // CS_WEAPON_PARSE_H