Add INetworkMessages interface

This commit is contained in:
GAMMACASE 2023-05-03 02:21:57 +03:00 committed by Nicholas Hastings
parent faea3c63e7
commit 45b223f8b9
3 changed files with 125 additions and 17 deletions

View File

@ -8,17 +8,11 @@
#include <eiface.h>
#include <tier1/utldelegate.h>
#include <irecipientfilter.h>
#include <inetchannel.h>
class IRecipientFilter;
class CUtlSlot;
namespace google {
namespace protobuf {
class Message;
}
}
struct GameEventHandle_t__
{
void *m_pUnknown;
@ -35,22 +29,22 @@ abstract_class IGameEventSystem : public IAppSystem
{
public:
virtual void RegisterGameEvent( GameEventHandle_t__ *pEvent ) = 0;
virtual void RegisterGameEventHandlerAbstract( CUtlSlot *slot, const CUtlAbstractDelegate &delegate,
GameEventHandle_t__ *pEvent, int ) = 0;
virtual void UnregisterGameEventHandlerAbstract( CUtlSlot *slot, const CUtlAbstractDelegate &delegate,
GameEventHandle_t__ *pEvent ) = 0;
virtual void PostEventAbstract_Local( CSplitScreenSlot slot, GameEventHandle_t__ *, const void *pData,
unsigned long nSize ) = 0;
virtual void RegisterGameEventHandlerAbstract( CUtlSlot *slot, const CUtlAbstractDelegate &delegate, GameEventHandle_t__ *pEvent, int ) = 0;
virtual void UnregisterGameEventHandlerAbstract( CUtlSlot *slot, const CUtlAbstractDelegate &delegate, GameEventHandle_t__ *pEvent ) = 0;
virtual void PostEventAbstract_Local( CSplitScreenSlot slot, GameEventHandle_t__ *, const void *pData, unsigned long nSize ) = 0;
virtual void PostEventAbstract( CSplitScreenSlot slot, bool bLocalOnly, int nClientCount, const unsigned char *clients,
GameEventHandle_t__ *pEvent, const void *pData, unsigned long nSize, NetChannelBufType_t bufType ) = 0;
virtual void PostEventAbstract( CSplitScreenSlot slot, bool bLocalOnly, IRecipientFilter *pFilter,
GameEventHandle_t__ *pEvent, const void *pData, unsigned long nSize ) = 0;
virtual void PostEntityEventAbstract( const CBaseHandle &hndl, GameEventHandle_t__ *pEvent, const void *pData,
unsigned long nSize, NetChannelBufType_t bufType ) = 0;
virtual void PostEntityEventAbstract( const CBaseHandle &hndl, GameEventHandle_t__ *pEvent, const void *pData, unsigned long nSize, NetChannelBufType_t bufType ) = 0;
virtual void ProcessQueuedEvents( void ) = 0;
virtual int GetEventSource( void ) const = 0;
virtual void PurgeQueuedEvents( void ) = 0;
};
#endif // GAMEEVENTSYSTEM_H

View File

@ -0,0 +1,114 @@
#ifndef NETWORKMESSAGES_H
#define NETWORKMESSAGES_H
#ifdef _WIN32
#pragma once
#endif
#include <eiface.h>
#include <tier1/bitbuf.h>
#include <tier1/utlstring.h>
#include <tier1/utldelegate.h>
#include <tier0/logging.h>
struct NetMessageHandle_t__;
class CSchemaClassBindingBase;
class INetworkSerializerBindingBuildFilter;
class IProtobufBinding;
enum NetworkSerializationMode_t;
struct NetworkableDataType_t;
struct NetworkFieldResult_t;
struct NetworkSerializerInfo_t;
struct NetworkUnserializerInfo_t;
struct NetworkableData_t;
struct NetworkFieldInfo_t;
struct FieldMetaInfo_t;
struct NetworkFieldChangedDelegateType_t;
struct NetworkFieldChangeCallbackPerformType_t;
class CSchemaType;
typedef NetworkFieldResult_t ( *NetworkFieldSerializeCB )(NetworkSerializerInfo_t const&, int, NetworkableData_t *);
typedef NetworkFieldResult_t ( *NetworkFieldUnserializeCB )(NetworkUnserializerInfo_t const&, int, NetworkableData_t *);
typedef NetworkFieldResult_t ( *NetworkFieldSerializeBufferCB )(NetworkSerializerInfo_t const&, bf_write &, int *, void const **, bool);
typedef NetworkFieldResult_t ( *NetworkFieldUnserializeBufferCB )(NetworkUnserializerInfo_t const&, bf_read &, int *, void **, bool, CSchemaClassBindingBase const*);
typedef uint ( *NetworkFieldInfoCB )(NetworkFieldInfo_t const&);
typedef bool ( *NetworkFieldMetaInfoCB )(FieldMetaInfo_t const&, CSchemaClassBindingBase const*, NetworkFieldInfo_t const&, void *);
typedef bool ( *NetworkableDataCB )(NetworkableData_t const*, CUtlString &);
typedef char const* ( *NetworkUnkCB001 )(void);
#define NETWORKMESSAGES_INTERFACE_VERSION "NetworkMessagesVersion001"
abstract_class INetworkMessages
{
public:
virtual void RegisterNetworkCategory(uint, char const *) = 0;
virtual void AssociateNetMessageWithChannelCategoryAbstract(NetMessageHandle_t__ *, uint, bool) = 0;
// virtual void FindOrCreateNetMessageSchema(int, CSchemaClassBindingBase const*, INetworkSerializerBindingBuildFilter *, bool, bool) = 0;
virtual void FindOrCreateNetMessage(int, IProtobufBinding const*, uint, INetworkSerializerBindingBuildFilter *, bool, bool) = 0;
virtual void SerializeAbstract(bf_write &, NetMessageHandle_t__ *, void const *) = 0;
virtual void UnserializeAbstract(bf_read &, NetMessageHandle_t__ **, void **) = 0;
virtual void UnserializeAbstract(bf_read &, NetMessageHandle_t__ *, void *) = 0;
virtual void AllocateNetMessageAbstract(NetMessageHandle_t__ *) = 0;
virtual void AllocateAndCopyConstructNetMessageAbstract(NetMessageHandle_t__ *, void const *) = 0;
virtual void DeallocateNetMessageAbstract(NetMessageHandle_t__ *, void *) = 0;
virtual void RegisterNetworkFieldSerializer(char const *, NetworkSerializationMode_t, NetworkableDataType_t, int, NetworkFieldSerializeCB, NetworkFieldUnserializeCB, NetworkFieldInfoCB,
NetworkFieldMetaInfoCB, NetworkableDataCB, NetworkUnkCB001, NetworkFieldSerializeCB, NetworkFieldUnserializeCB) = 0;
virtual void RegisterNetworkArrayFieldSerializer(char const *, NetworkSerializationMode_t, NetworkFieldSerializeBufferCB, NetworkFieldUnserializeBufferCB, NetworkFieldInfoCB,
NetworkFieldMetaInfoCB, NetworkFieldSerializeBufferCB, NetworkFieldUnserializeBufferCB) = 0;
virtual void GetNetMessageInfo(NetMessageHandle_t__ *) = 0;
virtual NetMessageHandle_t__* FindNetworkMessage(char const *) = 0;
virtual NetMessageHandle_t__* FindNetworkMessagePartial(char const *) = 0;
virtual void FindNetworkGroup(char const *, bool) = 0;
virtual void GetNetworkGroupCount(void) = 0;
virtual void GetNetworkGroupName(int) = 0;
virtual void unk001() = 0;
virtual void AssociateNetMessageGroupIdWithChannelCategory(uint, char const *) = 0;
virtual void RegisterSchemaAtomicTypeOverride(uint, CSchemaType *) = 0;
virtual void SetNextworkSerializationContextData(char const *, NetworkSerializationMode_t, void *) = 0;
virtual void unk002() = 0;
virtual void unk003() = 0;
virtual void RegisterNetworkFieldChangeCallbackInternal(char const *, NetworkFieldChangedDelegateType_t, CUtlAbstractDelegate, NetworkFieldChangeCallbackPerformType_t, int) = 0;
virtual void AllowAdditionalMessageRegistration(bool bAllow) = 0;
virtual bool IsAdditionalMessageRegistrationAllowed() = 0;
virtual void GetFieldChangeCallbackOrderCount(void) = 0;
virtual void GetFieldChangeCallbackPriorities(int, int *) = 0;
virtual void RegisterFieldChangeCallbackPriority(int) = 0;
virtual NetMessageHandle_t__ *FindNetworkMessageById(int) = 0;
virtual void SetIsForServer(bool bForServer) = 0;
virtual bool IsForServer() = 0;
virtual void RegisterSchemaTypeOverride(uint, char const *) = 0;
virtual int ComputeOrderForPriority(int nPriority) = 0;
virtual CLoggingSystem::LoggingChannel_t *GetLoggingChannel() = 0;
virtual ~INetworkMessages() = 0;
};
DECLARE_TIER2_INTERFACE(INetworkMessages, g_pNetworkMessages);
#endif /* NETWORKMESSAGES_H */