From 79d4cb7da321dbcf8b2c104eb6bb778314c2e519 Mon Sep 17 00:00:00 2001 From: Poggu <45881722+Poggicek@users.noreply.github.com> Date: Fri, 15 Mar 2024 21:37:54 +0100 Subject: [PATCH] Update INetworkStringTable & INetworkStringTableContainer interfaces (#219) --- public/networkstringtabledefs.h | 44 ++++++++++++++++----------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/public/networkstringtabledefs.h b/public/networkstringtabledefs.h index e290bb14..451919aa 100644 --- a/public/networkstringtabledefs.h +++ b/public/networkstringtabledefs.h @@ -11,21 +11,23 @@ #pragma once #endif +#include "appframework/IAppSystem.h" +#include "utlstring.h" + typedef int TABLEID; #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 #define MAX_TABLES 32 // Table id is 4 bits -#define INTERFACENAME_NETWORKSTRINGTABLESERVER "VEngineServerStringTable001" -#define INTERFACENAME_NETWORKSTRINGTABLECLIENT "VEngineClientStringTable001" +#define INTERFACENAME_NETWORKSTRINGTABLESERVER "Source2EngineToServerStringTable001" +#define INTERFACENAME_NETWORKSTRINGTABLECLIENT "Source2EngineToClientStringTable001" +class StringTableInit_t; class INetworkStringTable; -typedef void (*pfnStringChanged)( void *object, INetworkStringTable *stringTable, int stringNumber, char const *newString, void const *newData ); - //----------------------------------------------------------------------------- // Purpose: Game .dll shared string table interfaces //----------------------------------------------------------------------------- @@ -39,23 +41,23 @@ public: virtual const char *GetTableName( void ) const = 0; virtual TABLEID GetTableId( void ) const = 0; virtual int GetNumStrings( void ) const = 0; - virtual int GetMaxStrings( void ) const = 0; - virtual int GetEntryBits( void ) const = 0; // Networking - virtual void SetTick( int tick ) = 0; - virtual bool ChangedSinceTick( int tick ) const = 0; + virtual int SetTick( int tick, void *unknown ) = 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, int length = -1, const void *userdata = 0 ) = 0; + virtual int AddString( bool bIsServer, const char *value, const void *userdata = 0 ) = 0; - virtual const char *GetString( int stringNumber, bool bUnknown ) const = 0; - virtual void SetStringUserData( int stringNumber, int length, const void *userdata ) = 0; - virtual const void *GetStringUserData( int stringNumber, int *length ) const = 0; + virtual const char *GetString( int stringNumber ) const = 0; + virtual bool SetStringUserData( int stringNumber, const void *userdata, bool unknown ) = 0; + virtual const void *GetStringUserData( int stringNumber ) const = 0; virtual int FindStringIndex( char const *string ) = 0; // returns INVALID_STRING_INDEX if not found - - // Callbacks - virtual void SetStringChangedCallback( void *object, pfnStringChanged changeFunc ) = 0; + virtual void unk001() = 0; + virtual void SetAllowClientSideAddString( bool state ) = 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 @@ -64,24 +66,20 @@ enum ENetworkStringtableFlags NSF_DICTIONARY_ENABLED = (1<<0), // Uses pre-calculated per map dictionaries to reduce bandwidth }; -class INetworkStringTableContainer +class INetworkStringTableContainer: public IAppSystem { public: virtual ~INetworkStringTableContainer( void ) {}; // 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; // table infos virtual INetworkStringTable *FindTable( const char *tableName ) const = 0; virtual INetworkStringTable *GetTable( TABLEID stringTable ) 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