4jcraft/minecraft/platform/IPlatformInput.h

112 lines
4.5 KiB
C++

#pragma once
#include <cstdint>
enum EKeyboardResult {
EKeyboard_Pending,
EKeyboard_Cancelled,
EKeyboard_ResultAccept,
EKeyboard_ResultDecline,
};
typedef struct _STRING_VERIFY_RESPONSE {
std::uint16_t wNumStrings;
int* pStringResult;
} STRING_VERIFY_RESPONSE;
class IPlatformInput {
public:
enum EKeyboardMode {
EKeyboardMode_Default,
EKeyboardMode_Numeric,
EKeyboardMode_Password,
EKeyboardMode_Alphabet,
EKeyboardMode_Full,
EKeyboardMode_Alphabet_Extended,
EKeyboardMode_IP_Address,
EKeyboardMode_Phone
};
virtual ~IPlatformInput() = default;
virtual void Initialise(int iInputStateC, unsigned char ucMapC,
unsigned char ucActionC,
unsigned char ucMenuActionC) = 0;
virtual void Tick() = 0;
virtual void SetDeadzoneAndMovementRange(unsigned int uiDeadzone,
unsigned int uiMovementRangeMax) = 0;
// Joypad mapping
virtual void SetGameJoypadMaps(unsigned char ucMap, unsigned char ucAction,
unsigned int uiActionVal) = 0;
virtual unsigned int GetGameJoypadMaps(unsigned char ucMap,
unsigned char ucAction) = 0;
virtual void SetJoypadMapVal(int iPad, unsigned char ucMap) = 0;
virtual unsigned char GetJoypadMapVal(int iPad) = 0;
virtual void SetJoypadSensitivity(int iPad, float fSensitivity) = 0;
// Input queries
virtual unsigned int GetValue(int iPad, unsigned char ucAction,
bool bRepeat = false) = 0;
virtual bool ButtonPressed(int iPad, unsigned char ucAction = 255) = 0;
virtual bool ButtonReleased(int iPad, unsigned char ucAction) = 0;
virtual bool ButtonDown(int iPad, unsigned char ucAction = 255) = 0;
// Axis remapping
virtual void SetJoypadStickAxisMap(int iPad, unsigned int uiFrom,
unsigned int uiTo) = 0;
virtual void SetJoypadStickTriggerMap(int iPad, unsigned int uiFrom,
unsigned int uiTo) = 0;
virtual void SetKeyRepeatRate(float fRepeatDelaySecs,
float fRepeatRateSecs) = 0;
virtual void SetDebugSequence(const char* chSequenceA, int (*Func)(void*),
void* lpParam) = 0;
virtual float GetIdleSeconds(int iPad) = 0;
virtual bool IsPadConnected(int iPad) = 0;
// Analog sticks and triggers (remapped for Southpaw etc.)
virtual float GetJoypadStick_LX(int iPad,
bool bCheckMenuDisplay = true) = 0;
virtual float GetJoypadStick_LY(int iPad,
bool bCheckMenuDisplay = true) = 0;
virtual float GetJoypadStick_RX(int iPad,
bool bCheckMenuDisplay = true) = 0;
virtual float GetJoypadStick_RY(int iPad,
bool bCheckMenuDisplay = true) = 0;
virtual unsigned char GetJoypadLTrigger(int iPad,
bool bCheckMenuDisplay = true) = 0;
virtual unsigned char GetJoypadRTrigger(int iPad,
bool bCheckMenuDisplay = true) = 0;
// Menu and misc
virtual void SetMenuDisplayed(int iPad, bool bVal) = 0;
virtual bool GetMenuDisplayed(int iPad) = 0;
virtual int GetHotbarSlotPressed(int iPad) = 0;
virtual int GetScrollDelta() = 0;
// Keyboard
virtual EKeyboardResult RequestKeyboard(const wchar_t* Title,
const wchar_t* Text, int iPad,
unsigned int uiMaxChars,
int (*Func)(void*, const bool),
void* lpParam,
EKeyboardMode eMode) = 0;
virtual const char* GetText() = 0;
// String verification (TCR 92)
virtual bool VerifyStrings(wchar_t** pwStringA, int iStringC,
int (*Func)(void*, STRING_VERIFY_RESPONSE*),
void* lpParam) = 0;
virtual void CancelQueuedVerifyStrings(
int (*Func)(void*, STRING_VERIFY_RESPONSE*), void* lpParam) = 0;
virtual void CancelAllVerifyInProgress() = 0;
// Mouse
virtual int GetMouseX() = 0;
virtual int GetMouseY() = 0;
// Primary pad (which controller is player 1)
virtual int GetPrimaryPad() = 0;
virtual void SetPrimaryPad(int iPad) = 0;
};