//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Player class data file parsing, shared by game & client dlls. // // $NoKeywords: $ //=============================================================================// #ifndef PLAYERCLASS_INFO_PARSE_H #define PLAYERCLASS_INFO_PARSE_H #ifdef _WIN32 #pragma once #endif #include "shareddefs.h" class IFileSystem; class KeyValues; typedef unsigned short PLAYERCLASS_FILE_INFO_HANDLE; #define MAX_PLAYERCLASS_NAME_LENGTH 128 //----------------------------------------------------------------------------- // Purpose: Contains the data read from the player class script files. // It's cached so we only read each script file once. // Each game provides a CreatePlayerClassInfo function so it can have game-specific // data in the player class scripts. //----------------------------------------------------------------------------- class FilePlayerClassInfo_t { public: FilePlayerClassInfo_t(); // Each game can override this to get whatever values it wants from the script. virtual void Parse( KeyValues *pKeyValuesData, const char *szClassName ); public: bool m_bParsedScript; public: // Class properties // todo : better lengths for these arrays ? char m_szPlayerClassName[MAX_PLAYERCLASS_NAME_LENGTH]; char m_szPrintName[MAX_PLAYERCLASS_NAME_LENGTH]; // localization key for print name char m_szPlayerModel[MAX_PLAYERCLASS_NAME_LENGTH]; char m_szSelectCmd[32]; //command the player can issue to switch to this class }; // The weapon parse function bool ReadPlayerClassDataFromFileForSlot( IFileSystem* filesystem, const char *szClassName, PLAYERCLASS_FILE_INFO_HANDLE *phandle, const unsigned char *pICEKey = NULL ); // If player class info has been loaded for the specified class name, this returns it. PLAYERCLASS_FILE_INFO_HANDLE LookupPlayerClassInfoSlot( const char *name ); // Given a handle to the player class info, return the class data FilePlayerClassInfo_t *GetFilePlayerClassInfoFromHandle( PLAYERCLASS_FILE_INFO_HANDLE handle ); // Get the null Player Class object PLAYERCLASS_FILE_INFO_HANDLE GetInvalidPlayerClassInfoHandle( void ); // Initialize all player class info void ResetFilePlayerClassInfoDatabase( void ); // // 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). // extern KeyValues* ReadEncryptedKVPlayerClassFile( IFileSystem *filesystem, const char *szFilenameWithoutExtension, const unsigned char *pICEKey ); // Each game implements this. It can return a derived class and override Parse() if it wants. extern FilePlayerClassInfo_t* CreatePlayerClassInfo(); #endif // PLAYERCLASS_INFO_PARSE_H