From f31e5fbbfe6d794b7c7b37977810e7457516a8b6 Mon Sep 17 00:00:00 2001 From: Vladimir <47463683+Wend4r@users.noreply.github.com> Date: Wed, 12 Mar 2025 02:20:15 +0300 Subject: [PATCH] Update ISource2GameClients::ProcessUsercmds method (#304) --- public/eiface.h | 7 ++++++- public/iserver.h | 13 +++++++++++-- public/networksystem/netmessage.h | 10 ++++++++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/public/eiface.h b/public/eiface.h index 6de9e9c2..c01eeff5 100644 --- a/public/eiface.h +++ b/public/eiface.h @@ -94,6 +94,9 @@ class IHLTVServer; class CCompressedResourceManifest; class ILoadingSpawnGroup; class IToolGameSimulationAPI; +class CCLCMsg_Move; +template +class CNetMessagePB; namespace google { @@ -601,7 +604,9 @@ public: virtual void ClientSetupVisibility( CPlayerSlot slot, vis_info_t *visinfo ) = 0; // A block of CUserCmds has arrived from the user, decode them and buffer for execution during player simulation - virtual int ProcessUsercmds( CPlayerSlot slot, bf_read *buf, int numcmds, bool ignore, bool paused, float margin ) = 0; + // Will be called when CNetworkGameServerBase::GetServerState() > SS_Loading + // A "paused" argument equals CNetworkGameServerBase::GetServerState() == SS_Paused + virtual void ProcessUsercmds( CPlayerSlot slot, const CNetMessagePB &msg, bool paused ) = 0; virtual bool IsPlayerSlotOccupied( CPlayerSlot slot ) = 0; diff --git a/public/iserver.h b/public/iserver.h index c6749738..c2bd6ce2 100644 --- a/public/iserver.h +++ b/public/iserver.h @@ -17,13 +17,22 @@ #include #include +enum server_state_t : int +{ + SS_Dead = 0, + SS_WaitingForGameSessionManifest, + SS_Loading, + SS_Active, + SS_Paused, +}; + class IGameSpawnGroupMgr; struct EventServerAdvanceTick_t; struct EventServerPollNetworking_t; struct EventServerProcessNetworking_t; struct EventServerSimulate_t; struct EventServerPostSimulate_t; -struct server_state_t; +struct SpawnGroupDesc_t; class IPrerequisite; class CServerChangelevelState; class ISource2WorldSession; @@ -98,7 +107,7 @@ public: virtual void MakeSpawnGroupActive( SpawnGroupHandle_t ) = 0; virtual void SynchronouslySpawnGroup( SpawnGroupHandle_t ) = 0; - virtual void SetServerState( server_state_t ) = 0; + virtual void SetServerState( server_state_t eNewState ) = 0; virtual void SpawnServer( const char * ) = 0; virtual int GetSpawnGroupLoadingStatus( SpawnGroupHandle_t ) = 0; diff --git a/public/networksystem/netmessage.h b/public/networksystem/netmessage.h index f1e90d9e..e2905deb 100644 --- a/public/networksystem/netmessage.h +++ b/public/networksystem/netmessage.h @@ -39,9 +39,15 @@ public: { return static_cast *>(this); } - + + float GetMargin() const + { + return m_flMargin; + } + private: - char unk001[32]; + char unk001[24]; + float m_flMargin; }; // AMNOTE: This is a stub class over real CNetMessagePB!