1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2025-09-19 12:06:07 +08:00

Update INetworkStringTable & INetworkStringTableContainer interfaces (#219)

This commit is contained in:
Poggu
2024-03-15 21:37:54 +01:00
committed by GitHub
parent 67dc5341c0
commit 79d4cb7da3

View File

@ -11,21 +11,23 @@
#pragma once #pragma once
#endif #endif
#include "appframework/IAppSystem.h"
#include "utlstring.h"
typedef int TABLEID; typedef int TABLEID;
#define INVALID_STRING_TABLE -1 #define INVALID_STRING_TABLE -1
const unsigned short INVALID_STRING_INDEX = (unsigned short )-1; const unsigned int INVALID_STRING_INDEX = -1;
// table index is sent in log2(MAX_TABLES) bits // table index is sent in log2(MAX_TABLES) bits
#define MAX_TABLES 32 // Table id is 4 bits #define MAX_TABLES 32 // Table id is 4 bits
#define INTERFACENAME_NETWORKSTRINGTABLESERVER "VEngineServerStringTable001" #define INTERFACENAME_NETWORKSTRINGTABLESERVER "Source2EngineToServerStringTable001"
#define INTERFACENAME_NETWORKSTRINGTABLECLIENT "VEngineClientStringTable001" #define INTERFACENAME_NETWORKSTRINGTABLECLIENT "Source2EngineToClientStringTable001"
class StringTableInit_t;
class INetworkStringTable; class INetworkStringTable;
typedef void (*pfnStringChanged)( void *object, INetworkStringTable *stringTable, int stringNumber, char const *newString, void const *newData );
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: Game .dll shared string table interfaces // Purpose: Game .dll shared string table interfaces
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -39,23 +41,23 @@ public:
virtual const char *GetTableName( void ) const = 0; virtual const char *GetTableName( void ) const = 0;
virtual TABLEID GetTableId( void ) const = 0; virtual TABLEID GetTableId( void ) const = 0;
virtual int GetNumStrings( void ) const = 0; virtual int GetNumStrings( void ) const = 0;
virtual int GetMaxStrings( void ) const = 0;
virtual int GetEntryBits( void ) const = 0;
// Networking // Networking
virtual void SetTick( int tick ) = 0; virtual int SetTick( int tick, void *unknown ) = 0;
virtual bool ChangedSinceTick( int tick ) const = 0; virtual int GetTick( void ) = 0;
virtual bool ChangedBetweenTicks(int tickA, int tickB ) const = 0;
// Accessors (length -1 means don't change user data if string already exits) virtual int AddString( bool bIsServer, const char *value, const void *userdata = 0 ) = 0;
virtual int AddString( bool bIsServer, const char *value, int length = -1, const void *userdata = 0 ) = 0;
virtual const char *GetString( int stringNumber, bool bUnknown ) const = 0; virtual const char *GetString( int stringNumber ) const = 0;
virtual void SetStringUserData( int stringNumber, int length, const void *userdata ) = 0; virtual bool SetStringUserData( int stringNumber, const void *userdata, bool unknown ) = 0;
virtual const void *GetStringUserData( int stringNumber, int *length ) const = 0; virtual const void *GetStringUserData( int stringNumber ) const = 0;
virtual int FindStringIndex( char const *string ) = 0; // returns INVALID_STRING_INDEX if not found virtual int FindStringIndex( char const *string ) = 0; // returns INVALID_STRING_INDEX if not found
virtual void unk001() = 0;
// Callbacks virtual void SetAllowClientSideAddString( bool state ) = 0;
virtual void SetStringChangedCallback( void *object, pfnStringChanged changeFunc ) = 0; virtual void unk003() = 0;
virtual void unk004( const char *string ) const = 0; // all stringtables in engine/server set this to "[server]".
virtual void unk005() = 0; // likely SetStringChangedCallback
}; };
enum ENetworkStringtableFlags enum ENetworkStringtableFlags
@ -64,24 +66,20 @@ enum ENetworkStringtableFlags
NSF_DICTIONARY_ENABLED = (1<<0), // Uses pre-calculated per map dictionaries to reduce bandwidth NSF_DICTIONARY_ENABLED = (1<<0), // Uses pre-calculated per map dictionaries to reduce bandwidth
}; };
class INetworkStringTableContainer class INetworkStringTableContainer: public IAppSystem
{ {
public: public:
virtual ~INetworkStringTableContainer( void ) {}; virtual ~INetworkStringTableContainer( void ) {};
// table creation/destruction // table creation/destruction
virtual INetworkStringTable *CreateStringTable( const char *tableName, int maxentries, int userdatafixedsize = 0, int userdatanetworkbits = 0, int flags = NSF_NONE ) = 0; virtual INetworkStringTable *CreateStringTable( StringTableInit_t *initClass ) = 0;
virtual void RemoveAllTables( void ) = 0; virtual void RemoveAllTables( void ) = 0;
// table infos // table infos
virtual INetworkStringTable *FindTable( const char *tableName ) const = 0; virtual INetworkStringTable *FindTable( const char *tableName ) const = 0;
virtual INetworkStringTable *GetTable( TABLEID stringTable ) const = 0; virtual INetworkStringTable *GetTable( TABLEID stringTable ) const = 0;
virtual int GetNumTables( void ) const = 0; virtual int GetNumTables( void ) const = 0;
virtual void SetAllowClientSideAddString( INetworkStringTable *table, bool bAllowClientSideAddString ) = 0;
virtual void CreateDictionary( char const *pchMapName ) = 0;
}; };
#endif // NETWORKSTRINGTABLEDEFS_H #endif // NETWORKSTRINGTABLEDEFS_H