mirror of
https://github.com/nillerusr/source-engine.git
synced 2025-04-08 01:14:33 +00:00
107 lines
3.0 KiB
C++
107 lines
3.0 KiB
C++
//========= Copyright © 1996-2005, Valve LLC, All rights reserved. ============
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
#ifndef TF_PLAYERCLASS_SHARED_H
|
|
#define TF_PLAYERCLASS_SHARED_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "tf_shareddefs.h"
|
|
|
|
#define TF_NAME_LENGTH 128
|
|
|
|
// Client specific.
|
|
#ifdef CLIENT_DLL
|
|
|
|
EXTERN_RECV_TABLE( DT_TFPlayerClassShared );
|
|
|
|
// Server specific.
|
|
#else
|
|
|
|
EXTERN_SEND_TABLE( DT_TFPlayerClassShared );
|
|
|
|
#endif
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Cache structure for the TF player class data (includes citizen).
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#define MAX_PLAYERCLASS_SOUND_LENGTH 128
|
|
|
|
struct TFPlayerClassData_t
|
|
{
|
|
char m_szClassName[TF_NAME_LENGTH];
|
|
char m_szModelName[TF_NAME_LENGTH];
|
|
char m_szHWMModelName[TF_NAME_LENGTH];
|
|
char m_szLocalizableName[TF_NAME_LENGTH];
|
|
float m_flMaxSpeed;
|
|
int m_nMaxHealth;
|
|
int m_nMaxArmor;
|
|
int m_aWeapons[TF_PLAYER_WEAPON_COUNT];
|
|
int m_aGrenades[TF_PLAYER_GRENADE_COUNT];
|
|
int m_aAmmoMax[TF_AMMO_COUNT];
|
|
int m_aBuildable[TF_PLAYER_BUILDABLE_COUNT];
|
|
|
|
bool m_bDontDoAirwalk;
|
|
bool m_bDontDoNewJump;
|
|
|
|
bool m_bParsed;
|
|
|
|
#ifdef GAME_DLL
|
|
// sounds
|
|
char m_szDeathSound[MAX_PLAYERCLASS_SOUND_LENGTH];
|
|
char m_szCritDeathSound[MAX_PLAYERCLASS_SOUND_LENGTH];
|
|
char m_szMeleeDeathSound[MAX_PLAYERCLASS_SOUND_LENGTH];
|
|
char m_szExplosionDeathSound[MAX_PLAYERCLASS_SOUND_LENGTH];
|
|
#endif
|
|
|
|
TFPlayerClassData_t();
|
|
const char *GetModelName() const;
|
|
void Parse( const char *pszClassName );
|
|
|
|
private:
|
|
|
|
// Parser for the class data.
|
|
void ParseData( KeyValues *pKeyValuesData );
|
|
};
|
|
|
|
void InitPlayerClasses( void );
|
|
TFPlayerClassData_t *GetPlayerClassData( int iClass );
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// TF Player Class Shared
|
|
//-----------------------------------------------------------------------------
|
|
class CTFPlayerClassShared
|
|
{
|
|
public:
|
|
|
|
CTFPlayerClassShared();
|
|
|
|
DECLARE_EMBEDDED_NETWORKVAR()
|
|
DECLARE_CLASS_NOBASE( CTFPlayerClassShared );
|
|
|
|
bool Init( int iClass );
|
|
bool IsClass( int iClass ) const { return ( m_iClass == iClass ); }
|
|
int GetClassIndex( void ) { return m_iClass; }
|
|
|
|
const char *GetName( void ) const { return GetPlayerClassData( m_iClass )->m_szClassName; }
|
|
const char *GetModelName( void ) const { return GetPlayerClassData( m_iClass )->GetModelName(); }
|
|
float GetMaxSpeed( void ) { return GetPlayerClassData( m_iClass )->m_flMaxSpeed; }
|
|
int GetMaxHealth( void ) { return GetPlayerClassData( m_iClass )->m_nMaxHealth; }
|
|
int GetMaxArmor( void ) { return GetPlayerClassData( m_iClass )->m_nMaxArmor; }
|
|
|
|
TFPlayerClassData_t *GetData( void ) { return GetPlayerClassData( m_iClass ); }
|
|
|
|
// If needed, put this into playerclass scripts
|
|
bool CanBuildObject( int iObjectType );
|
|
|
|
protected:
|
|
|
|
CNetworkVar( int, m_iClass );
|
|
};
|
|
|
|
#endif // TF_PLAYERCLASS_SHARED_H
|