summaryrefslogtreecommitdiffstats
path: root/src/Pad.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Pad.h')
-rw-r--r--src/Pad.h214
1 files changed, 173 insertions, 41 deletions
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