From 3d412a4b30a9f7c7f51ea6562e694315948bd3da Mon Sep 17 00:00:00 2001 From: boris Date: Wed, 28 Nov 2018 16:00:02 +1300 Subject: cleaned up in short, the cheat and loader are now separate solutions. unused stuff was moved into the legacy solution in case anyone wants to compile it or whatever. i can change this back if you want to. also, i configured the loader to compile in x64, and have separate build types for linux and win64 --- cheat/tf2/IGameMovement.h | 118 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 cheat/tf2/IGameMovement.h (limited to 'cheat/tf2/IGameMovement.h') diff --git a/cheat/tf2/IGameMovement.h b/cheat/tf2/IGameMovement.h new file mode 100644 index 0000000..26b5244 --- /dev/null +++ b/cheat/tf2/IGameMovement.h @@ -0,0 +1,118 @@ +#pragma once +#pragma once + +#include "vector.hpp" + +using CBaseEntity = uintptr_t; +class CUserCmd; + +typedef int EntityHandle_t, soundlevel_t; +class CGameTrace; + +typedef CGameTrace trace_t; + +#define MAX_CLIMB_SPEED 200.0 + +class CMoveData +{ +public: + bool m_bFirstRunOfFunctions : 1; + bool m_bGameCodeMovedPlayer : 1; + + EntityHandle_t m_nPlayerHandle; + + int m_nImpulseCommand; + vec3_t m_vecViewAngles; + vec3_t m_vecAbsViewAngles; + int m_nButtons; + int m_nOldButtons; + float m_flForwardMove; + float m_flSideMove; + float m_flUpMove; + + float m_flMaxSpeed; + float m_flClientMaxSpeed; + + vec3_t m_vecVelocity; + vec3_t m_vecAngles; + vec3_t m_vecOldAngles; + float m_outStepHeight; + vec3_t m_outWishVel; + vec3_t m_outJumpVel; + + vec3_t m_vecConstraintCenter; + float m_flConstraintRadius; + float m_flConstraintWidth; + float m_flConstraintSpeedFactor; + + vec3_t m_vecAbsOrigin; +}; + +class IGameMovement +{ +public: + virtual ~IGameMovement( void ) {} + virtual void ProcessMovement( CBaseEntity *pPlayer, CMoveData *pMove ) = 0; + virtual void StartTrackPredictionErrors( CBaseEntity *pPlayer ) = 0; + virtual void FinishTrackPredictionErrors( CBaseEntity *pPlayer ) = 0; + virtual void DiffPrint( char const *fmt, ... ) = 0; + virtual vec3_t GetPlayerMins( bool ducked ) const = 0; + virtual vec3_t GetPlayerMaxs( bool ducked ) const = 0; + virtual vec3_t GetPlayerViewOffset( bool ducked ) const = 0; +}; + +class IMoveHelper +{ +public: + virtual char const* GetName( EntityHandle_t handle ) const = 0; + virtual void ResetTouchList( void ) = 0; + virtual bool AddToTouched( const CGameTrace& tr, const vec3_t& impactvelocity ) = 0; + virtual void ProcessImpacts( void ) = 0; + virtual void Con_NPrintf( int idx, char const* fmt, ... ) = 0; + virtual void StartSound( const vec3_t& origin, int channel, char const* sample, float volume, soundlevel_t soundlevel, int fFlags, int pitch ) = 0; + virtual void StartSound( const vec3_t& origin, const char *soundname ) = 0; + virtual void PlaybackEventFull( int flags, int clientindex, unsigned short eventindex, float delay, vec3_t& origin, vec3_t& angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 ) = 0; + virtual bool PlayerFallingDamage( void ) = 0; + virtual void PlayerSetAnimation( int playerAnim ) = 0; + + virtual void *GetSurfaceProps( void ) = 0; + + virtual bool IsWorldEntity( const uintptr_t &handle ) = 0; + +protected: + virtual ~IMoveHelper( ) {} +}; + +class IPrediction +{ +public: + virtual ~IPrediction( void ) {}; + + virtual void Init( void ) = 0; + virtual void Shutdown( void ) = 0; + + // Run prediction + virtual void Update + ( + int startframe, // World update ( un-modded ) most recently received + bool validframe, // Is frame data valid + int incoming_acknowledged, // Last command acknowledged to have been run by server (un-modded) + int outgoing_command // Last command (most recent) sent to server (un-modded) + ) = 0; + + // We are about to get a network update from the server. We know the update #, so we can pull any + // data purely predicted on the client side and transfer it to the new from data state. + virtual void PreEntityPacketReceived( int commands_acknowledged, int current_world_update_packet ) = 0; + virtual void PostEntityPacketReceived( void ) = 0; + virtual void PostNetworkDataReceived( int commands_acknowledged ) = 0; + + virtual void OnReceivedUncompressedPacket( void ) = 0; + + // The engine needs to be able to access a few predicted values + virtual void GetViewOrigin( vec3_t& org ) = 0; + virtual void SetViewOrigin( vec3_t& org ) = 0; + virtual void GetViewAngles( vec3_t& ang ) = 0; + virtual void SetViewAngles( vec3_t& ang ) = 0; + virtual void GetLocalViewAngles( vec3_t& ang ) = 0; + virtual void SetLocalViewAngles( vec3_t& ang ) = 0; +}; \ No newline at end of file -- cgit v1.2.3