aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/shared/weapon_parse.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/shared/weapon_parse.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/shared/weapon_parse.h')
-rw-r--r--mp/src/game/shared/weapon_parse.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/mp/src/game/shared/weapon_parse.h b/mp/src/game/shared/weapon_parse.h
new file mode 100644
index 00000000..0cbf60e5
--- /dev/null
+++ b/mp/src/game/shared/weapon_parse.h
@@ -0,0 +1,161 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Weapon data file parsing, shared by game & client dlls.
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef WEAPON_PARSE_H
+#define WEAPON_PARSE_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "shareddefs.h"
+
+class IFileSystem;
+
+typedef unsigned short WEAPON_FILE_INFO_HANDLE;
+
+// -----------------------------------------------------------
+// Weapon sound types
+// Used to play sounds defined in the weapon's classname.txt file
+// This needs to match pWeaponSoundCategories in weapon_parse.cpp
+// ------------------------------------------------------------
+typedef enum {
+ EMPTY,
+ SINGLE,
+ SINGLE_NPC,
+ WPN_DOUBLE, // Can't be "DOUBLE" because windows.h uses it.
+ DOUBLE_NPC,
+ BURST,
+ RELOAD,
+ RELOAD_NPC,
+ MELEE_MISS,
+ MELEE_HIT,
+ MELEE_HIT_WORLD,
+ SPECIAL1,
+ SPECIAL2,
+ SPECIAL3,
+ TAUNT,
+ DEPLOY,
+
+ // Add new shoot sound types here
+
+ NUM_SHOOT_SOUND_TYPES,
+} WeaponSound_t;
+
+int GetWeaponSoundFromString( const char *pszString );
+
+#define MAX_SHOOT_SOUNDS 16 // Maximum number of shoot sounds per shoot type
+
+#define MAX_WEAPON_STRING 80
+#define MAX_WEAPON_PREFIX 16
+#define MAX_WEAPON_AMMO_NAME 32
+
+#define WEAPON_PRINTNAME_MISSING "!!! Missing printname on weapon"
+
+class CHudTexture;
+class KeyValues;
+
+//-----------------------------------------------------------------------------
+// Purpose: Contains the data read from the weapon's script file.
+// It's cached so we only read each weapon's script file once.
+// Each game provides a CreateWeaponInfo function so it can have game-specific
+// data (like CS move speeds) in the weapon script.
+//-----------------------------------------------------------------------------
+class FileWeaponInfo_t
+{
+public:
+
+ FileWeaponInfo_t();
+
+ // Each game can override this to get whatever values it wants from the script.
+ virtual void Parse( KeyValues *pKeyValuesData, const char *szWeaponName );
+
+
+public:
+ bool bParsedScript;
+ bool bLoadedHudElements;
+
+// SHARED
+ char szClassName[MAX_WEAPON_STRING];
+ char szPrintName[MAX_WEAPON_STRING]; // Name for showing in HUD, etc.
+
+ char szViewModel[MAX_WEAPON_STRING]; // View model of this weapon
+ char szWorldModel[MAX_WEAPON_STRING]; // Model of this weapon seen carried by the player
+ char szAnimationPrefix[MAX_WEAPON_PREFIX]; // Prefix of the animations that should be used by the player carrying this weapon
+ int iSlot; // inventory slot.
+ int iPosition; // position in the inventory slot.
+ int iMaxClip1; // max primary clip size (-1 if no clip)
+ int iMaxClip2; // max secondary clip size (-1 if no clip)
+ int iDefaultClip1; // amount of primary ammo in the gun when it's created
+ int iDefaultClip2; // amount of secondary ammo in the gun when it's created
+ int iWeight; // this value used to determine this weapon's importance in autoselection.
+ int iRumbleEffect; // Which rumble effect to use when fired? (xbox)
+ bool bAutoSwitchTo; // whether this weapon should be considered for autoswitching to
+ bool bAutoSwitchFrom; // whether this weapon can be autoswitched away from when picking up another weapon or ammo
+ int iFlags; // miscellaneous weapon flags
+ char szAmmo1[MAX_WEAPON_AMMO_NAME]; // "primary" ammo type
+ char szAmmo2[MAX_WEAPON_AMMO_NAME]; // "secondary" ammo type
+
+ // Sound blocks
+ char aShootSounds[NUM_SHOOT_SOUND_TYPES][MAX_WEAPON_STRING];
+
+ int iAmmoType;
+ int iAmmo2Type;
+ bool m_bMeleeWeapon; // Melee weapons can always "fire" regardless of ammo.
+
+ // This tells if the weapon was built right-handed (defaults to true).
+ // This helps cl_righthand make the decision about whether to flip the model or not.
+ bool m_bBuiltRightHanded;
+ bool m_bAllowFlipping; // False to disallow flipping the model, regardless of whether
+ // it is built left or right handed.
+
+// CLIENT DLL
+ // Sprite data, read from the data file
+ int iSpriteCount;
+ CHudTexture *iconActive;
+ CHudTexture *iconInactive;
+ CHudTexture *iconAmmo;
+ CHudTexture *iconAmmo2;
+ CHudTexture *iconCrosshair;
+ CHudTexture *iconAutoaim;
+ CHudTexture *iconZoomedCrosshair;
+ CHudTexture *iconZoomedAutoaim;
+ CHudTexture *iconSmall;
+
+// TF2 specific
+ bool bShowUsageHint; // if true, then when you receive the weapon, show a hint about it
+
+// SERVER DLL
+
+};
+
+// The weapon parse function
+bool ReadWeaponDataFromFileForSlot( IFileSystem* filesystem, const char *szWeaponName,
+ WEAPON_FILE_INFO_HANDLE *phandle, const unsigned char *pICEKey = NULL );
+
+// If weapon info has been loaded for the specified class name, this returns it.
+WEAPON_FILE_INFO_HANDLE LookupWeaponInfoSlot( const char *name );
+
+FileWeaponInfo_t *GetFileWeaponInfoFromHandle( WEAPON_FILE_INFO_HANDLE handle );
+WEAPON_FILE_INFO_HANDLE GetInvalidWeaponInfoHandle( void );
+void PrecacheFileWeaponInfoDatabase( IFileSystem *filesystem, const unsigned char *pICEKey );
+
+
+//
+// Read a possibly-encrypted KeyValues file in.
+// If pICEKey is NULL, then it appends .txt to the filename and loads it as an unencrypted file.
+// If pICEKey is non-NULL, then it appends .ctx to the filename and loads it as an encrypted file.
+//
+// (This should be moved into a more appropriate place).
+//
+KeyValues* ReadEncryptedKVFile( IFileSystem *filesystem, const char *szFilenameWithoutExtension, const unsigned char *pICEKey, bool bForceReadEncryptedFile = false );
+
+
+// Each game implements this. It can return a derived class and override Parse() if it wants.
+extern FileWeaponInfo_t* CreateWeaponInfo();
+
+
+#endif // WEAPON_PARSE_H