From 75bca8e31eef877cc6df83146c665f86ad6f8583 Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Thu, 13 Jun 2019 03:35:26 +0300 Subject: CPad done --- src/Pad.h | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 173 insertions(+), 41 deletions(-) (limited to 'src/Pad.h') diff --git a/src/Pad.h b/src/Pad.h index 3d394498..446007c2 100644 --- a/src/Pad.h +++ b/src/Pad.h @@ -71,21 +71,21 @@ public: void Clear(void); }; -static_assert(sizeof(CControllerState) == 0x2A, "CControllerState: error"); +VALIDATE_SIZE(CControllerState, 0x2A); class CMouseControllerState { public: //uint32 btns; // bit 0-2 button 1-3 - UInt8 LMB; - UInt8 RMB; - UInt8 MMB; - UInt8 WHEELUP; - UInt8 WHEELDN; - UInt8 MXB1; - UInt8 MXB2; - UInt8 _pad0; + Bool LMB; + Bool RMB; + Bool MMB; + Bool WHEELUP; + Bool WHEELDN; + Bool MXB1; + Bool MXB2; + char _pad0; Float x, y; @@ -164,6 +164,15 @@ public: VALIDATE_SIZE(CKeyboardState, 0x270); +enum +{ + // taken from miss2 + PAD1 = 0, + PAD2, + + MAX_PADS +}; + class CPad { public: @@ -176,60 +185,183 @@ public: int16 Phase; int16 Mode; int16 ShakeDur; - int8 ShakeFreq; + UInt8 ShakeFreq; int8 bHornHistory[5]; - int8 iCurrHornHistory; - int8 DisablePlayerControls; - int8 JustOutOfFrontEnd; + UInt8 iCurrHornHistory; + Bool DisablePlayerControls; int8 bApplyBrakes; - int32 unk[3]; + Char _unk[12]; //int32 unk[3]; + char _pad0[3]; int32 LastTimeTouched; int32 AverageWeapon; int32 AverageEntries; + + CPad() { } + ~CPad() { } - static CPad *Pads; //[2]; + static Bool &bDisplayNoControllerMessage; + static Bool &bObsoleteControllerMessage; + static Bool &m_bMapPadOneToPadTwo; + static CKeyboardState &OldKeyState; static CKeyboardState &NewKeyState; static CKeyboardState &TempKeyState; + static Char KeyBoardCheatString[18]; static CMouseControllerState &OldMouseControllerState; static CMouseControllerState &NewMouseControllerState; static CMouseControllerState &PCTempMouseControllerState; - static Bool &m_bMapPadOneToPadTwo; - - int GetLeftShoulder1(void) { return NewState.LeftShoulder1; } - int GetLeftShoulder2(void) { return NewState.LeftShoulder2; } - int GetRightShoulder1(void) { return NewState.RightShoulder1; } - int GetRightShoulder2(void) { return NewState.RightShoulder2; } - - bool ForceCameraBehindPlayer(void); - bool GetWeapon(void); - bool GetLookBehindForCar(void); - bool GetLookBehindForPed(void); - bool GetLookLeft(void); - bool GetLookRight(void); + + + + void Clear(Bool bResetPlayerControls); + void ClearMouseHistory(); + void UpdateMouse(); + CControllerState ReconcileTwoControllersInput(CControllerState const &State1, CControllerState const &State2); + void StartShake(Int16 nDur, UInt8 nFreq); + void StartShake_Distance(Int16 nDur, UInt8 nFreq, Float fX, Float fY, Float fz); + void StartShake_Train(Float fX, Float fY); + void AddToPCCheatString(Char c); - static void StopPadsShaking(void); - static void ResetCheats(void); static void UpdatePads(void); - static CPad *GetPad(int n) { return &Pads[n]; } - static void PrintErrorMessage(void); + void ProcessPCSpecificStuff(void); + void Update(Int16 unk); - void AddToPCCheatString(Char c); - void Clear(Bool unk); + static void DoCheats(void); + void DoCheats(Int16 unk); - // + static void StopPadsShaking(void); + void StopShaking(Int16 unk); + + static CPad *GetPad(Int32 pad); + Int16 GetSteeringLeftRight(void); + Int16 GetSteeringUpDown(void); + Int16 GetCarGunUpDown(void); + Int16 GetCarGunLeftRight(void); + Int16 GetPedWalkLeftRight(void); + Int16 GetPedWalkUpDown(void); + Int16 GetAnalogueUpDown(void); + Bool GetLookLeft(void); + Bool GetLookRight(void); + Bool GetLookBehindForCar(void); + Bool GetLookBehindForPed(void); + Bool GetHorn(void); + Bool HornJustDown(void); + Bool GetCarGunFired(void); + Bool CarGunJustDown(void); + Int16 GetHandBrake(void); + Int16 GetBrake(void); + Bool GetExitVehicle(void); + Bool ExitVehicleJustDown(void); + Int32 GetWeapon(void); + Bool WeaponJustDown(void); + Int16 GetAccelerate(void); + Bool CycleCameraModeUpJustDown(void); + Bool CycleCameraModeDownJustDown(void); + Bool ChangeStationJustDown(void); + Bool CycleWeaponLeftJustDown(void); + Bool CycleWeaponRightJustDown(void); + Bool GetTarget(void); + Bool TargetJustDown(void); + Bool JumpJustDown(void); + Bool GetSprint(void); + Bool ShiftTargetLeftJustDown(void); + Bool ShiftTargetRightJustDown(void); + Bool GetAnaloguePadUp(void); + Bool GetAnaloguePadDown(void); + Bool GetAnaloguePadLeft(void); + Bool GetAnaloguePadRight(void); + Bool GetAnaloguePadLeftJustUp(void); + Bool GetAnaloguePadRightJustUp(void); + Bool ForceCameraBehindPlayer(void); + Bool SniperZoomIn(void); + Bool SniperZoomOut(void); + Int16 SniperModeLookLeftRight(void); + Int16 SniperModeLookUpDown(void); + Int16 LookAroundLeftRight(void); + Int16 LookAroundUpDown(void); + void ResetAverageWeapon(void); + static void PrintErrorMessage(void); + static void ResetCheats(void); + static Char *EditString(Char *pStr, Int32 nSize); + static Int32 *EditCodesForControls(Int32 *pRsKeys, Int32 nSize); + + // mouse inline Bool GetLeftMouseJustDown() { return !!(NewMouseControllerState.LMB && !OldMouseControllerState.LMB); } + + // keyboard - inline Bool GetEnterJustDown() { return !!(NewKeyState.ENTER && !OldKeyState.ENTER); } - inline Bool GetExtEnterJustDown() { return !!(NewKeyState.EXTENTER && !OldKeyState.EXTENTER); } inline Bool GetCharJustDown(Char c) { return !!(NewKeyState.VK_KEYS[c] && !OldKeyState.VK_KEYS[c]); } - inline Bool GetLeftAltJustDown() { return !!(NewKeyState.LALT && !OldKeyState.LALT); } - inline Bool GetRightAltJustDown() { return !!(NewKeyState.RALT && !OldKeyState.RALT); } - inline Bool GetTabJustDown() { return !!(NewKeyState.TAB && !OldKeyState.TAB); } + inline Bool GetFJustDown(Int32 n) { return !!(NewKeyState.F[n] && !OldKeyState.F[n]); } + inline Bool GetEscapeJustDown() { return !!(NewKeyState.ESC && !OldKeyState.ESC); } + inline Bool GetInsertJustDown() { return !!(NewKeyState.INS && !OldKeyState.INS); } + inline Bool GetDeleteJustDown() { return !!(NewKeyState.DEL && !OldKeyState.DEL); } + inline Bool GetHomeJustDown() { return !!(NewKeyState.HOME && !OldKeyState.HOME); } + inline Bool GetEndJustDown() { return !!(NewKeyState.END && !OldKeyState.END); } + inline Bool GetPageUpJustDown() { return !!(NewKeyState.PGUP && !OldKeyState.PGUP); } + inline Bool GetPageDownJustDown() { return !!(NewKeyState.PGDN && !OldKeyState.PGDN); } + inline Bool GetUpJustDown() { return !!(NewKeyState.UP && !OldKeyState.UP); } + inline Bool GetDownJustDown() { return !!(NewKeyState.DOWN && !OldKeyState.DOWN); } + inline Bool GetLeftJustDown() { return !!(NewKeyState.LEFT && !OldKeyState.LEFT); } + inline Bool GetRightJustDown() { return !!(NewKeyState.RIGHT && !OldKeyState.RIGHT); } + inline Bool GetScrollLockJustDown() { return !!(NewKeyState.SCROLLLOCK && !OldKeyState.SCROLLLOCK); } + inline Bool GetPauseJustDown() { return !!(NewKeyState.PAUSE && !OldKeyState.PAUSE); } + inline Bool GetNumLockJustDown() { return !!(NewKeyState.NUMLOCK && !OldKeyState.NUMLOCK); } + inline Bool GetDivideJustDown() { return !!(NewKeyState.DIV && !OldKeyState.DIV); } + inline Bool GetTimesJustDown() { return !!(NewKeyState.MUL && !OldKeyState.MUL); } + inline Bool GetMinusJustDown() { return !!(NewKeyState.SUB && !OldKeyState.SUB); } + inline Bool GetPlusJustDown() { return !!(NewKeyState.ADD && !OldKeyState.ADD); } + inline Bool GetPadEnterJustDown() { return !!(NewKeyState.ENTER && !OldKeyState.ENTER); } // GetEnterJustDown + inline Bool GetPadDelJustDown() { return !!(NewKeyState.DECIMAL && !OldKeyState.DECIMAL); } + inline Bool GetPad1JustDown() { return !!(NewKeyState.NUM1 && !OldKeyState.NUM1); } + inline Bool GetPad2JustDown() { return !!(NewKeyState.NUM2 && !OldKeyState.NUM2); } + inline Bool GetPad3JustDown() { return !!(NewKeyState.NUM3 && !OldKeyState.NUM3); } + inline Bool GetPad4JustDown() { return !!(NewKeyState.NUM4 && !OldKeyState.NUM4); } + inline Bool GetPad5JustDown() { return !!(NewKeyState.NUM5 && !OldKeyState.NUM5); } + inline Bool GetPad6JustDown() { return !!(NewKeyState.NUM6 && !OldKeyState.NUM6); } + inline Bool GetPad7JustDown() { return !!(NewKeyState.NUM7 && !OldKeyState.NUM7); } + inline Bool GetPad8JustDown() { return !!(NewKeyState.NUM8 && !OldKeyState.NUM8); } + inline Bool GetPad9JustDown() { return !!(NewKeyState.NUM9 && !OldKeyState.NUM9); } + inline Bool GetPad0JustDown() { return !!(NewKeyState.NUM0 && !OldKeyState.NUM0); } + inline Bool GetBackspaceJustDown() { return !!(NewKeyState.BACKSP && !OldKeyState.BACKSP); } + inline Bool GetTabJustDown() { return !!(NewKeyState.TAB && !OldKeyState.TAB); } + inline Bool GetCapsLockJustDown() { return !!(NewKeyState.CAPSLOCK && !OldKeyState.CAPSLOCK); } + inline Bool GetEnterJustDown() { return !!(NewKeyState.EXTENTER && !OldKeyState.EXTENTER); } + inline Bool GetLeftShiftJustDown() { return !!(NewKeyState.LSHIFT && !OldKeyState.LSHIFT); } + inline Bool GetShiftJustDown() { return !!(NewKeyState.SHIFT && !OldKeyState.SHIFT); } + inline Bool GetRightShiftJustDown() { return !!(NewKeyState.RSHIFT && !OldKeyState.RSHIFT); } + inline Bool GetLeftCtrlJustDown() { return !!(NewKeyState.LCTRL && !OldKeyState.LCTRL); } + inline Bool GetRightCtrlJustDown() { return !!(NewKeyState.RCTRL && !OldKeyState.RCTRL); } + inline Bool GetLeftAltJustDown() { return !!(NewKeyState.LALT && !OldKeyState.LALT); } + inline Bool GetRightAltJustDown() { return !!(NewKeyState.RALT && !OldKeyState.RALT); } + inline Bool GetLeftWinJustDown() { return !!(NewKeyState.LWIN && !OldKeyState.LWIN); } + inline Bool GetRightWinJustDown() { return !!(NewKeyState.RWIN && !OldKeyState.RWIN); } + inline Bool GetAppsJustDown() { return !!(NewKeyState.APPS && !OldKeyState.APPS); } + + // pad + + inline Bool GetTriangleJustDown() { return !!(NewState.Triangle && !OldState.Triangle); } + inline Bool GetCircleJustDown() { return !!(NewState.Circle && !OldState.Circle); } + inline Bool GetCrossJustDown() { return !!(NewState.Cross && !OldState.Cross); } + inline Bool GetSquareJustDown() { return !!(NewState.Square && !OldState.Square); } + inline Bool GetDPadUpJustDown() { return !!(NewState.DPadUp && !OldState.DPadUp); } + inline Bool GetDPadDownJustDown() { return !!(NewState.DPadDown && !OldState.DPadDown); } + inline Bool GetDPadLeftJustDown() { return !!(NewState.DPadLeft && !OldState.DPadLeft); } + inline Bool GetDPadRightJustDown() { return !!(NewState.DPadRight && !OldState.DPadRight); } + inline Bool GetLeftShoulder1JustDown() { return !!(NewState.LeftShoulder1 && !OldState.LeftShoulder1); } + inline Bool GetLeftShoulder2JustDown() { return !!(NewState.LeftShoulder2 && !OldState.LeftShoulder2); } + inline Bool GetRightShoulder1JustDown() { return !!(NewState.RightShoulder1 && !OldState.RightShoulder1); } + inline Bool GetRightShoulder2JustDown() { return !!(NewState.RightShoulder2 && !OldState.RightShoulder2); } + + inline Int32 GetLeftShoulder1(void) { return NewState.LeftShoulder1; } + inline Int32 GetLeftShoulder2(void) { return NewState.LeftShoulder2; } + inline Int32 GetRightShoulder1(void) { return NewState.RightShoulder1; } + inline Int32 GetRightShoulder2(void) { return NewState.RightShoulder2; } }; -static_assert(sizeof(CPad) == 0xFC, "CPad: error"); +VALIDATE_SIZE(CPad, 0xFC); #define IsButtonJustDown(pad, btn) \ (!(pad)->OldState.btn && (pad)->NewState.btn) + +void LittleTest(void); \ No newline at end of file -- cgit v1.2.3