90 lines
3.1 KiB
C++
90 lines
3.1 KiB
C++
//========= 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
|