48 lines
994 B
C++
48 lines
994 B
C++
#pragma once
|
|
#include "JvsButtons.h"
|
|
#include "InputBufferType.h"
|
|
|
|
namespace TLAC::Components
|
|
{
|
|
const int MAX_BUTTON_BIT = 0x6F;
|
|
|
|
// The button state is larger than the size of a register
|
|
// but only the first 32 bits are used during normal gameplay
|
|
// so this will provide the convenience of still being able to access them through a bit field
|
|
union ButtonState
|
|
{
|
|
JvsButtons Buttons;
|
|
uint32_t State[4];
|
|
};
|
|
|
|
// total sizeof() == 0x20E0
|
|
struct InputState
|
|
{
|
|
ButtonState Tapped;
|
|
ButtonState Released;
|
|
|
|
ButtonState Down;
|
|
uint32_t Padding_20[4];
|
|
|
|
ButtonState DoubleTapped;
|
|
uint32_t Padding_30[4];
|
|
|
|
ButtonState IntervalTapped;
|
|
uint32_t Padding_38[12];
|
|
|
|
int32_t MouseX;
|
|
int32_t MouseY;
|
|
int32_t MouseDeltaX;
|
|
int32_t MouseDeltaY;
|
|
|
|
uint32_t Padding_AC[8];
|
|
uint8_t Padding_D0[3];
|
|
char Key;
|
|
|
|
void ClearState();
|
|
void HideCursor();
|
|
void SetBit(uint32_t bit, bool value, InputBufferType inputType);
|
|
uint8_t* GetInputBuffer(InputBufferType inputType);
|
|
};
|
|
}
|