sqwarmed/sdk_src/public/networkstringtabledefs.h

88 lines
3.1 KiB
C
Raw Normal View History

2024-08-29 19:18:30 -04:00
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef NETWORKSTRINGTABLEDEFS_H
#define NETWORKSTRINGTABLEDEFS_H
#ifdef _WIN32
#pragma once
#endif
typedef int TABLEID;
#define INVALID_STRING_TABLE -1
const unsigned short INVALID_STRING_INDEX = (unsigned short )-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"
class INetworkStringTable;
typedef void (*pfnStringChanged)( void *object, INetworkStringTable *stringTable, int stringNumber, char const *newString, void const *newData );
//-----------------------------------------------------------------------------
// Purpose: Game .dll shared string table interfaces
//-----------------------------------------------------------------------------
class INetworkStringTable
{
public:
virtual ~INetworkStringTable( void ) {};
// Table Info
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;
// 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 const char *GetString( int stringNumber ) const = 0;
virtual void SetStringUserData( int stringNumber, int length, const void *userdata ) = 0;
virtual const void *GetStringUserData( int stringNumber, int *length ) 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;
};
enum ENetworkStringtableFlags
{
NSF_NONE = 0,
NSF_DICTIONARY_ENABLED = (1<<0), // Uses pre-calculated per map dictionaries to reduce bandwidth
};
class INetworkStringTableContainer
{
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 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