CPad done
This commit is contained in:
216
src/Pad.h
216
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);
|
||||
|
||||
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 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);
|
||||
void Clear(Bool unk);
|
||||
|
||||
static void UpdatePads(void);
|
||||
void ProcessPCSpecificStuff(void);
|
||||
void Update(Int16 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);
|
||||
Reference in New Issue
Block a user