summaryrefslogtreecommitdiff
path: root/game/shared/tf2/tf_shareddefs.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/tf2/tf_shareddefs.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/shared/tf2/tf_shareddefs.h')
-rw-r--r--game/shared/tf2/tf_shareddefs.h663
1 files changed, 663 insertions, 0 deletions
diff --git a/game/shared/tf2/tf_shareddefs.h b/game/shared/tf2/tf_shareddefs.h
new file mode 100644
index 0000000..310ac15
--- /dev/null
+++ b/game/shared/tf2/tf_shareddefs.h
@@ -0,0 +1,663 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef TF_SHAREDDEFS_H
+#define TF_SHAREDDEFS_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#define MAX_TF_TEAMS 4
+
+extern ConVar inv_demo;
+extern ConVar lod_effect_distance;
+
+#include "const.h"
+
+//--------------------------------------------------------------------------
+// Teams
+#define TEAM_HUMANS 1
+#define TEAM_ALIENS 2
+
+//--------------------------------------------------------------------------
+// TF player flags.
+#define TF_PLAYER_HIDDEN (1<<0)
+#define TF_PLAYER_DAMAGE_BOOST (1<<1)
+#define TF_PLAYER_NUMFLAGS 2
+//--------------------------------------------------------------------------
+// Custom Kill types
+#define DMG_KILL_BULLRUSH 1
+
+
+//--------------
+// TF2 SPECIFIC DAMAGE FLAGS
+//--------------
+#define DMG_EMP (DMG_LASTGENERICFLAG<<1) // Hit by EMP
+#define DMG_PROBE (DMG_LASTGENERICFLAG<<2) // Doing a shield-aware probe (heal guns, emp guns)
+
+
+//--------------------------------------------------------------------------
+// Zone states
+#define ZONE_FRIENDLY 1
+#define ZONE_ENEMY 2
+#define ZONE_CONTESTED 3
+
+//--------------------------------------------------------------------------
+// Loot state
+#define LOOT_NOT 0
+#define LOOT_CAPABLE 1
+#define LOOT_LOOTING 2
+
+//--------------------------------------------------------------------------
+// Powerups
+//--------------------------------------------------------------------------
+enum
+{
+ POWERUP_BOOST, // Medic, buff station
+ POWERUP_EMP, // Technician
+ POWERUP_RUSH, // Rally flag
+ POWERUP_POWER, // Object power
+ MAX_POWERUPS
+};
+
+#define MAX_CABLE_CONNECTIONS 4
+
+//--------------------------------------------------------------------------
+// Acts
+//--------------------------------------------------------------------------
+#define MIN_ACT_OVERLAY_TIME 10.0
+
+// C/C_InfoAct spawnflags
+#define SF_ACT_INTERMISSION 1
+#define SF_ACT_WAITINGFORGAMESTART 2
+
+#define SF_ACT_BITS 2
+
+//--------------------------------------------------------------------------
+// Order types
+//--------------------------------------------------------------------------
+enum
+{
+ ORDER_NONE = 0,
+ ORDER_ATTACK, // Enemy held resource zone, attack it and capture it
+ ORDER_DEFEND, // Defend a resource zone we own
+ ORDER_CAPTURE, // Resource zone not held by either team, capture it
+ ORDER_KILL, // Kill a specific enemy player
+ ORDER_HEAL, // Heal a specific friendly player
+ ORDER_BUILD, // Order to build something.
+ // m_iStructure is one of the OBJ_ defines.
+ // If it's a sentry gun order, it's always OBJ_SENTRYGUN_PLASMA.
+ ORDER_REPAIR, // Repair a built item.
+ ORDER_MORTAR_ATTACK, // Build a mortar to shell an enemy object.
+ ORDER_ASSIST // Assist a player who is under attack.
+};
+
+
+//--------------------------------------------------------------------------
+// Collision groups
+//--------------------------------------------------------------------------
+enum
+{
+ TFCOLLISION_GROUP_SHIELD = LAST_SHARED_COLLISION_GROUP,
+ TFCOLLISION_GROUP_WEAPON,
+ TFCOLLISION_GROUP_GRENADE,
+ TFCOLLISION_GROUP_RESOURCE_CHUNK,
+ // Combat objects (override for above)
+ TFCOLLISION_GROUP_COMBATOBJECT,
+ // Objects in general
+ TFCOLLISION_GROUP_OBJECT,
+ TFCOLLISION_GROUP_OBJECT_SOLIDTOPLAYERMOVEMENT,
+};
+
+//--------------------------------------------------------------------------
+// MAP DEFINED OBJECTS
+//--------------------------------------------------------------------------
+#define MAX_OBJ_CUSTOMNAME_SIZE 128
+
+//--------------------------------------------------------------------------
+// OBJECTS
+//--------------------------------------------------------------------------
+enum
+{
+ OBJ_POWERPACK=0,
+ OBJ_RESUPPLY,
+ OBJ_SENTRYGUN_PLASMA, // Orders always refer to this type of sentry gun.
+ OBJ_SENTRYGUN_ROCKET_LAUNCHER,
+ OBJ_SHIELDWALL,
+ OBJ_RESOURCEPUMP,
+ OBJ_RESPAWN_STATION,
+ OBJ_RALLYFLAG,
+ OBJ_MANNED_PLASMAGUN,
+ OBJ_MANNED_MISSILELAUNCHER,
+ OBJ_MANNED_SHIELD,
+ OBJ_EMPGENERATOR,
+ OBJ_BUFF_STATION,
+ OBJ_BARBED_WIRE,
+ OBJ_MCV_SELECTION_PANEL,
+ OBJ_MAPDEFINED,
+ OBJ_MORTAR,
+ // ADD STANDARD OBJECTS HERE
+
+ // Upgrades
+ OBJ_SELFHEAL,
+ OBJ_ARMOR_UPGRADE,
+ OBJ_VEHICLE_BOOST,
+ OBJ_EXPLOSIVES,
+ OBJ_DRIVER_MACHINEGUN,
+ // ADD UPGRADES HERE
+
+ // Vehicles
+ OBJ_BATTERING_RAM,
+ OBJ_SIEGE_TOWER,
+ OBJ_WAGON,
+ OBJ_FLATBED,
+ OBJ_VEHICLE_MORTAR,
+ OBJ_VEHICLE_TELEPORT_STATION,
+ OBJ_VEHICLE_TANK,
+ OBJ_VEHICLE_MOTORCYCLE,
+ OBJ_WALKER_STRIDER,
+ OBJ_WALKER_MINI_STRIDER,
+ // ADD VEHICLES HERE
+
+ // Defensive buildings
+ OBJ_TOWER,
+ OBJ_TUNNEL,
+ OBJ_SANDBAG_BUNKER,
+ OBJ_BUNKER,
+ OBJ_DRAGONSTEETH,
+ // ADD DEFENSIVE-ONLY BUILDINGS HERE
+
+ // If you add a new object, you need to add it to the g_ObjectInfos array
+ // in tf_shareddefs.cpp, and add it's data to the scripts/object.txt
+
+ OBJ_LAST,
+};
+
+#define OBJECT_COST_MULTIPLIER_PER_OBJECT 3
+#define OBJECT_UPGRADE_COST_MULTIPLIER_PER_LEVEL 3
+
+bool IsObjectAnUpgrade( int iObjectType );
+bool IsObjectAVehicle( int iObjectType );
+bool IsObjectADefensiveBuilding( int iObjectType );
+
+class CHudTexture;
+
+class CObjectInfo
+{
+public:
+ CObjectInfo( char *pObjectName );
+ ~CObjectInfo();
+
+ // This is initialized by the code and matched with a section in objects.txt
+ char *m_pObjectName;
+
+ // This stuff all comes from objects.txt
+ char *m_pClassName; // Code classname (in LINK_ENTITY_TO_CLASS).
+ char *m_pStatusName; // Shows up when crosshairs are on the object.
+ float m_flBuildTime;
+ int m_nMaxObjects; // Maximum number of objects per player
+ int m_Cost; // Base object resource cost
+ float m_CostMultiplierPerInstance; // Cost multiplier
+ int m_UpgradeCost; // Base object resource cost for upgrading
+ int m_MaxUpgradeLevel; // Max object upgrade level
+ char *m_pBuilderWeaponName; // Names shown for each object onscreen when using the builder weapon
+ char *m_pBuilderPlacementString; // String shown to player during placement of this object
+ int m_SelectionSlot; // Weapon selection slots for objects
+ int m_SelectionPosition; // Weapon selection positions for objects
+ bool m_bSolidToPlayerMovement;
+ float m_flSapperAttachTime; // Time it takes to place a sapper on this object
+
+ // HUD weapon selection menu icon ( from hud_textures.txt )
+ char *m_pIconActive;
+};
+
+// Loads the objects.txt script.
+class IBaseFileSystem;
+void LoadObjectInfos( IBaseFileSystem *pFileSystem );
+
+// Get a CObjectInfo from a TFOBJ_ define.
+const CObjectInfo* GetObjectInfo( int iObject );
+
+
+// Object utility funcs
+bool ClassCanBuild( int iClass, int iObjectType );
+int CalculateObjectCost( int iObjectType, int iNumberOfObjects, int iTeam, bool bLast = false );
+int CalculateObjectUpgrade( int iObjectType, int iObjectLevel );
+
+//--------------------------------------------------------------------------
+// OBJECT FLAGS
+//--------------------------------------------------------------------------
+enum
+{
+ OF_SUPPRESS_APPEAR_ON_MINIMAP = 0x0001,
+ OF_SUPPRESS_NOTIFY_UNDER_ATTACK = 0x0002,
+ OF_SUPPRESS_VISIBLE_TO_TACTICAL = 0x0004,
+ OF_ALLOW_REPEAT_PLACEMENT = 0x0008,
+ OF_SUPPRESS_TECH_ANALYZER = 0x0010,
+ OF_DONT_AUTO_REPAIR = 0x0020,
+ OF_ALIGN_TO_GROUND = 0x0040, // Align my angles to match the ground underneath me
+ OF_DONT_PREVENT_BUILD_NEAR_OBJ = 0x0080, // Don't prevent building if there's another object nearby
+ OF_CAN_BE_PICKED_UP = 0x0100,
+ OF_DOESNT_NEED_POWER = 0x0200, // Doesn't need power, even on the human team
+ OF_DOESNT_HAVE_A_MODEL = 0x0400, // It's built from map placed geometry
+ OF_MUST_BE_BUILT_IN_CONSTRUCTION_YARD = 0x0800,
+ OF_MUST_BE_BUILT_IN_RESOURCE_ZONE = 0x1000,
+ OF_MUST_BE_BUILT_ON_ATTACHMENT = 0x2000,
+ OF_CANNOT_BE_DISMANTLED = 0x4000,
+
+ OF_BIT_COUNT = 15
+};
+
+
+//--------------------------------------------------------------------------
+// Builder "weapon" states
+//--------------------------------------------------------------------------
+enum
+{
+ BS_IDLE = 0,
+ BS_SELECTING,
+ BS_PLACING,
+ BS_PLACING_INVALID,
+ BS_BUILDING,
+ BS_REPAIR,
+};
+
+
+//--------------------------------------------------------------------------
+// Builder object id...
+//--------------------------------------------------------------------------
+enum
+{
+ BUILDER_OBJECT_BITS = 8,
+ BUILDER_INVALID_OBJECT = ((1 << BUILDER_OBJECT_BITS) - 1)
+};
+
+// Analyzer state
+enum
+{
+ AS_INACTIVE = 0,
+ AS_SUBVERTING,
+ AS_ANALYZING
+};
+
+// Max number of objects a team can have
+#define MAX_OBJECTS_PER_TEAM 512
+#define MAX_OBJECTS_PER_PLAYER 64
+
+
+//--------------------------------------------------------------------------
+// BUILDING
+//--------------------------------------------------------------------------
+// Build checks will return one of these for a player
+enum
+{
+ CB_CAN_BUILD, // Player is allowed to build this object
+ CB_NOT_RESEARCHED, // Player's team hasn't researched this object
+ CB_LIMIT_REACHED, // Player has reached the limit of the number of these objects allowed
+ CB_NEED_RESOURCES, // Player doesn't have enough resources to build this object
+ CB_NEED_ADRENALIN, // Commando doesn't have enough adrenalin to build a rally flag
+};
+
+//--------------------------------------------------------------------------
+// MORTAR
+//--------------------------------------------------------------------------
+// Mortar Firing States
+enum
+{
+ MORTAR_IDLE,
+ MORTAR_CHARGING_POWER,
+ MORTAR_CHARGING_ACCURACY,
+};
+
+// Mortar salvos
+#define MORTAR_SALVO_SIZE 5
+#define MORTAR_RELOAD_TIME 5.0
+
+// Mortar firing details
+#define MORTAR_RANGE_MIN 1024
+#define MORTAR_RANGE_MAX_INITIAL 3000
+#define MORTAR_RANGE_MAX_UPGRADED 5000
+
+// Inaccuracy Data
+// These values are all max inaccuracies. The accuracy used is between 0 & Max, based upon how close the player gets to hitting
+// the fire button at the right time on the mortar firing slider bar.
+// Perpendicular-to-the-shot inaccuracy
+#define MORTAR_INACCURACY_MAX_INITIAL 0.85 // Percentage of distance that a mortar can be wide of the mark
+#define MORTAR_INACCURACY_MAX_UPGRADED 0.35 // Percentage of distance that a mortar can be wide of the mark
+// Distance inaccuracy
+#define MORTAR_DIST_INACCURACY 0.3 // Percentage of distance that the mortar can deviate
+
+// Mortar firing details
+#define MORTAR_CHARGE_POWER_RATE 1.5 // Time taken to hit full charge for power
+#define MORTAR_CHARGE_ACCURACY_RATE 1.25 // Time taken to hit perfect accuracy, given a half-power shot
+
+// Mortar ammo types
+enum MortarAmmoType
+{
+ MA_SHELL = 0, // Normal mortar round
+ //MA_SMOKE, // Smoke mortar round
+ MA_CLUSTER, // Mirv mortar round
+ MA_STARBURST, // Starburst / phosphorous mortar round
+
+ MA_LASTAMMOTYPE,
+};
+
+extern char *MortarAmmoNames[ MA_LASTAMMOTYPE ];
+extern char *MortarAmmoTechs[ MA_LASTAMMOTYPE ];
+extern int MortarAmmoMax[ MA_LASTAMMOTYPE ];
+
+//--------------------------------------------------------------------------
+// ROCKET PACK
+//--------------------------------------------------------------------------
+#define RP_LOCK_TIME 3.0 // Time taken to lock onto a target
+
+//--------------------------------------------------------------------------
+// PARTICLE BEAM
+//--------------------------------------------------------------------------
+#define PB_RECHARGE_TIME 30.0 // Time taken to recharge the particle beam
+
+//--------------------------------------------------------------------------
+// PLASMA PROJECTILE TYPES
+//--------------------------------------------------------------------------
+enum
+{
+ PLASMATYPE_GATLING,
+ PLASMATYPE_EMP,
+ PLASMATYPE_GUIDED,
+ PLASMATYPE_GUIDED_NOTARGET,
+ PLASMATYPE_GUIDED_PARRIED,
+ PLASMATYPE_PLASMABALL,
+ PLASMATYPE_PLASMABALL_EXPLOSIVE,
+};
+
+#define PLASMA_VELOCITY ( 2500 )
+
+//--------------------------------------------------------------------------
+// SCANNERS
+//--------------------------------------------------------------------------
+// Ranges
+#define SCANNER_RANGE 3000
+#define LOCAL_PLAYER_SCANNER_RANGE 1500
+
+//--------------------------------------------------------------------------
+// EMP
+//--------------------------------------------------------------------------
+#define EMP_HITSCAN_DURATION 5.0f
+
+//--------------------------------------------------------------------------
+// KNOCKDOWN
+//--------------------------------------------------------------------------
+// Knockdown blend in and out times
+#define KNOCKDOWN_BLEND_IN ( 0.3f )
+#define KNOCKDOWN_BLEND_OUT ( 0.5f )
+
+//--------------------------------------------------------------------------
+// THERMAL VISION
+//--------------------------------------------------------------------------
+// Thermal vision radius
+// Players outside of this radius will not be sent to the local player
+// Player's inside start to fade at the startfade distance and are alpha'd out completely
+// at the full radius
+#define THERMAL_VISION_RADIUS ( 1024.0f )
+#define THERMAL_VISION_STARTFADE ( THERMAL_VISION_RADIUS / 2.0f )
+
+//--------------------------------------------------------------------------
+// CAMO
+//--------------------------------------------------------------------------
+// Infiltrator Camouflage constants
+// # of seconds to go into/back into camo mode
+#define CAMO_ENABLETIME ( 3.0f )
+// # of seconds to remove
+#define CAMO_REMOVETIME ( 1.0f )
+// # of seconds to temporarily suppress
+#define CAMO_SUPPRESSTIME ( 1.0f )
+
+// Outside this, exclude from PVS
+#define CAMO_OUTER_RADIUS ( 2048.0f )
+// From here to outer, just alpha to 0
+#define CAMO_INNER_RADIUS ( CAMO_OUTER_RADIUS / 2.0f )
+// 75 % opacity at the inner_radius
+#define CAMO_INNER_ALPHA ( 192 )
+// From here to inner fade alpha again and start using invis effect
+#define CAMO_INVIS_RADIUS ( CAMO_INNER_RADIUS / 2.0f )
+
+// Infiltrator's phaseout duration
+#define INFILTRATOR_PHASEOUT_DURATION 30.0f
+// Time required to recharge
+#define INFILTRATOR_PHASEOUT_RECHARGETIME 30.0f
+
+// After sitting still, remove from tactical and minimiap starting at this time
+#define SNIPER_STATIONARY_FADESTART 2.5f
+// After sitting still, remove from tactical and minimiap starting and finishing here
+#define SNIPER_STATIONARY_FADEFINISH 7.5f
+
+// Infiltrator Camouflage constants
+// # of seconds to go into/back into camo mode
+#define CAMO_ENABLETIME ( 3.0f )
+// # of seconds to remove
+#define CAMO_REMOVETIME ( 1.0f )
+// # of seconds to temporarily suppress
+#define CAMO_SUPPRESSTIME ( 1.0f )
+
+// Outside this, exclude from PVS
+#define CAMO_OUTER_RADIUS ( 2048.0f )
+// From here to outer, just alpha to 0
+#define CAMO_INNER_RADIUS ( CAMO_OUTER_RADIUS / 2.0f )
+// 75 % opacity at the inner_radius
+#define CAMO_INNER_ALPHA ( 192 )
+// From here to inner fade alpha again and start using invis effect
+#define CAMO_INVIS_RADIUS ( CAMO_INNER_RADIUS / 2.0f )
+
+// Infiltrator's phaseout duration
+#define INFILTRATOR_PHASEOUT_DURATION 30.0f
+// Time required to recharge
+#define INFILTRATOR_PHASEOUT_RECHARGETIME 30.0f
+
+// After sitting still, remove from tactical and minimiap starting at this time
+#define SNIPER_STATIONARY_FADESTART 2.5f
+// After sitting still, remove from tactical and minimiap starting and finishing here
+#define SNIPER_STATIONARY_FADEFINISH 7.5f
+
+
+//--------------------------------------------------------------------------
+// ANIM STATEMACHINE DEFINES
+//--------------------------------------------------------------------------
+// Sniper deploy node
+enum
+{
+ SNIPER_DEPLOY_START = 1,
+ SNIPER_DEPLOY_IDLE,
+ SNIPER_DEPLOY_LEAVE,
+};
+
+//--------------------------------------------------------------------------
+// COMBAT SHIELD
+//--------------------------------------------------------------------------
+#define SHIELD_HITGROUP 1
+
+// Length after raising the shield during which releasing the shield will cause a parry
+#define PARRY_DETECTION_TIME 0.5
+// Length after a parry detection in which a parry can occur
+#define PARRY_OPPORTUNITY_LENGTH 0.3
+// Length after a parry has finished before I can do anything again
+#define PARRY_VULNERABLE_TIME 0.5
+
+//--------------------------------------------------------------------------
+// SENTRYGUNS
+//--------------------------------------------------------------------------
+// Time it takes to turtle / unturtle
+#define SENTRY_TURTLE_TIME 2.0
+
+//--------------------------------------------------------------------------
+// PORTABLE POWER GENERATOR - BUFF STATION
+//--------------------------------------------------------------------------
+#define BUFF_STATION_MAX_PLAYERS 4
+#define BUFF_STATION_MAX_PLAYER_BITS 3
+#define BUFF_STATION_MAX_OBJECTS 3
+#define BUFF_STATION_MAX_OBJECT_BITS 2
+
+//--------------------------------------------------------------------------
+// ADRENALIN
+//--------------------------------------------------------------------------
+// Animation speed while in adrenalin
+#define ADRENALIN_ANIM_SPEED 1.5
+
+//--------------------------------------------------------------------------
+// PLASMA RIFLE
+//--------------------------------------------------------------------------
+#define MAX_RIFLE_POWER 3.0
+#define RIFLE_CHARGE_TIME 2.0
+
+//--------------------------------------------------------------------------
+// HUMAN POWER PACKS
+//--------------------------------------------------------------------------
+#define MAX_OBJECTS_PER_PACK 3
+
+//--------------------------------------------------------------------------
+// Rally flag defines
+//--------------------------------------------------------------------------
+
+#define RALLYFLAG_MINS Vector(-20, -20, 0)
+#define RALLYFLAG_MAXS Vector( 20, 20, 90)
+#define RALLYFLAG_RADIUS 512
+#define RALLYFLAG_LIFETIME 30
+#define RALLYFLAG_RATE 2 // Rate at which it looks for friendlies to rally
+#define RALLYFLAG_ADRENALIN_TIME 5 // Time an adrenalin rush lasts
+#define RALLYFLAG_MODEL "models/props/common/holo_banner/holo_banner.mdl"
+
+
+//--------------------------------------------------------------------------
+// Resupply-related stuff
+//--------------------------------------------------------------------------
+enum ResupplyBuyType_t
+{
+ RESUPPLY_BUY_AMMO = 0,
+ RESUPPLY_BUY_HEALTH,
+ RESUPPLY_BUY_GRENADES,
+ RESUPPLY_BUY_ALL,
+
+ RESUPPLY_BUY_TYPE_COUNT
+};
+
+#define RESUPPLY_HEALTH_COST 20
+#define RESUPPLY_AMMO_COST 5
+#define RESUPPLY_GRENADES_COST 25
+#define RESUPPLY_ALL_COST 50
+#define RESUPPLY_ROCKET_COST 100
+
+// Build animation events
+#define TF_OBJ_ENABLEBODYGROUP 6000
+#define TF_OBJ_DISABLEBODYGROUP 6001
+#define TF_OBJ_ENABLEALLBODYGROUPS 6002
+#define TF_OBJ_DISABLEALLBODYGROUPS 6003
+#define TF_OBJ_PLAYBUILDSOUND 6004
+
+//--------------------------------------------------------------------------
+// Class id
+//--------------------------------------------------------------------------
+
+#include "tfclassdata_shared.h"
+
+
+//--------------------------------------------------------------------------
+//
+// Class info tables. Any time a class is added or removed, this is where
+// generic data about each class is stored.
+//
+// The other things you need to add or remove for a class are:
+//
+// - A class derived from CPlayerClass.
+// - Class-specific accessors and data members functions in CTFMoveData.
+// - tf_gamemovement_chooser.h and CTFGameMovementChooser::CTFGameMovementChooser().
+// - DEFINE_PRED_TYPEDESCRIPTION_PTR entries in c_basetfplayer.cpp
+// - Add class_X_health in skill1.cfg.
+//
+//--------------------------------------------------------------------------
+
+class CPlayerClass;
+class CBaseTFPlayer;
+typedef CPlayerClass* (*PlayerClassAllocFn_Server)( CBaseTFPlayer *pPlayer );
+
+class C_PlayerClass;
+class C_BaseTFPlayer;
+typedef C_PlayerClass* (*PlayerClassAllocFn_Client)( C_BaseTFPlayer *pPlayer );
+
+
+class ConVar;
+
+
+class CTFClassInfo
+{
+public:
+ char *m_pClassName;
+
+ // Objects that each class can build
+ // OBJ_X, OBJ_Y ... terminated with OBJ_LAST.
+ int *m_pClassObjects;
+
+ // This is just to make stats gathering easy... which classes are in the game right now?
+ bool m_pCurrentlyActive;
+
+ PlayerClassAllocFn_Client m_pClientAlloc; // Only valid in client.dll
+ PlayerClassAllocFn_Server m_pServerAlloc; // Only valid in the game dll
+
+ ConVar *m_pMaxHealthCVar; // Only valid in game dll
+};
+
+const CTFClassInfo* GetTFClassInfo( int i );
+
+
+#if defined( CLIENT_DLL )
+
+ #define CAllPlayerClasses C_AllPlayerClasses
+ #define PLAYER_CLASS_TYPE C_PlayerClass
+ #define PLAYER_TYPE C_BaseTFPlayer
+
+ EXTERN_RECV_TABLE( DT_AllPlayerClasses );
+
+#else
+
+ #define PLAYER_CLASS_TYPE CPlayerClass
+ #define PLAYER_TYPE CBaseTFPlayer
+
+ EXTERN_SEND_TABLE( DT_AllPlayerClasses );
+
+#endif
+
+
+class PLAYER_TYPE;
+class PLAYER_CLASS_TYPE;
+
+//
+// The player object contains this on both the client and the server.
+// It holds a copy of each player class that can be used.
+//
+class CAllPlayerClasses // (#define as C_AllPlayerClasses on the client)
+{
+public:
+ CAllPlayerClasses( PLAYER_TYPE *pPlayer );
+ ~CAllPlayerClasses();
+
+ PLAYER_CLASS_TYPE* GetPlayerClass( int iClass );
+
+public:
+
+ PLAYER_CLASS_TYPE* m_pClasses[ TFCLASS_CLASS_COUNT ];
+};
+
+//--------------------------------------------------------------------------
+// Impact data
+//--------------------------------------------------------------------------
+// This sucks
+#define NUM_WOOD_GIBS_SMALL 5
+extern const char *ImpactHurtGibs_Wood_Small[ NUM_WOOD_GIBS_SMALL ];
+
+#define PLAYER_MSG_PERSONAL_SHIELD 2
+
+#endif // TF_SHAREDDEFS_H
+