Consoles: Allow rebinding mappings

3DS: Also fixes that clicking on bottom screen would always mass delete blocks
This commit is contained in:
UnknownShadow200 2023-08-04 20:11:14 +10:00
parent 8406571804
commit 29ea9139d1
5 changed files with 113 additions and 101 deletions

View File

@ -273,6 +273,10 @@ Further information (e.g. style) for ClassiCube's source code can be found in th
* [libctru](https://github.com/devkitPro/libctru) - Backend for 3DS * [libctru](https://github.com/devkitPro/libctru) - Backend for 3DS
* [citro3D](https://github.com/devkitPro/citro3d) - Rendering backend for 3DS * [citro3D](https://github.com/devkitPro/citro3d) - Rendering backend for 3DS
* [pspsdk](https://github.com/pspdev/pspsdk) - Backend for PSP * [pspsdk](https://github.com/pspdev/pspsdk) - Backend for PSP
* [libfat](https://github.com/devkitPro/libfat) - Filesystem backend for Wii/GC
* [Citra](https://github.com/citra-emu/citra) - Emulator used to test 3DS port
* [Dolphin](https://github.com/dolphin-emu/dolphin) - Emulator used to test Wii/GC port
* [PPSSPP](https://github.com/hrydgard/ppsspp) - Emulator used to test 3DS port
## Sound Credits ## Sound Credits
ClassiCube uses sounds from [Freesound.org](https://freesound.org)<br> ClassiCube uses sounds from [Freesound.org](https://freesound.org)<br>

View File

@ -322,6 +322,18 @@ void Pointer_SetPosition(int idx, int x, int y) {
*---------------------------------------------------------Keybinds--------------------------------------------------------* *---------------------------------------------------------Keybinds--------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
cc_uint8 KeyBinds[KEYBIND_COUNT]; cc_uint8 KeyBinds[KEYBIND_COUNT];
/* TODO find a better way than this. maybe alternative keybinds? */
#if defined CC_BUILD_3DS || defined CC_BUILD_PSP || defined CC_BUILD_GCWII
const cc_uint8 KeyBind_Defaults[KEYBIND_COUNT] = {
CCPAD_UP, CCPAD_DOWN, CCPAD_LEFT, CCPAD_RIGHT, /* Movement */
CCPAD_A, 0, CCPAD_START, CCPAD_Y, /* Jump, SetSpawn, OpenChat */
CCPAD_X, 0, CCPAD_START, 0, /* Inventory, EnterChat */
CCKEY_LSHIFT, 'X', 'Z', 'Q', 'E',
0, 0, 0, 0,
CCKEY_F5, 0, 0, 0,
0, CCPAD_L, 0, CCPAD_R,
};
#else
const cc_uint8 KeyBind_Defaults[KEYBIND_COUNT] = { const cc_uint8 KeyBind_Defaults[KEYBIND_COUNT] = {
'W', 'S', 'A', 'D', 'W', 'S', 'A', 'D',
CCKEY_SPACE, 'R', CCKEY_ENTER, 'T', CCKEY_SPACE, 'R', CCKEY_ENTER, 'T',
@ -335,6 +347,7 @@ const cc_uint8 KeyBind_Defaults[KEYBIND_COUNT] = {
0, 0, 0, 0, 0, 0, 0, 0,
'1','2','3', '4','5','6', '7','8','9' '1','2','3', '4','5','6', '7','8','9'
}; };
#endif
static const char* const keybindNames[KEYBIND_COUNT] = { static const char* const keybindNames[KEYBIND_COUNT] = {
"Forward", "Back", "Left", "Right", "Forward", "Back", "Left", "Right",
"Jump", "Respawn", "SetSpawn", "Chat", "Inventory", "Jump", "Respawn", "SetSpawn", "Chat", "Inventory",
@ -359,7 +372,8 @@ static void KeyBind_Load(void) {
int i; int i;
String_InitArray_NT(name, nameBuffer); String_InitArray_NT(name, nameBuffer);
for (i = 0; i < KEYBIND_COUNT; i++) { for (i = 0; i < KEYBIND_COUNT; i++)
{
name.length = 0; name.length = 0;
String_Format1(&name, "key-%c", keybindNames[i]); String_Format1(&name, "key-%c", keybindNames[i]);
name.buffer[name.length] = '\0'; name.buffer[name.length] = '\0';
@ -383,7 +397,8 @@ void KeyBind_Set(KeyBind binding, int key) {
/* Initialises and loads key bindings from options */ /* Initialises and loads key bindings from options */
static void KeyBind_Init(void) { static void KeyBind_Init(void) {
int i; int i;
for (i = 0; i < KEYBIND_COUNT; i++) { for (i = 0; i < KEYBIND_COUNT; i++)
{
KeyBinds[i] = KeyBind_Defaults[i]; KeyBinds[i] = KeyBind_Defaults[i];
} }
KeyBind_Load(); KeyBind_Load();
@ -1057,7 +1072,7 @@ static void OnInputDown(void* obj, int key, cc_bool was) {
int i; int i;
#ifndef CC_BUILD_WEB #ifndef CC_BUILD_WEB
if (key == CCKEY_ESCAPE && (s = Gui_GetClosable())) { if (Input_IsEscapeButton(key) && (s = Gui_GetClosable())) {
/* Don't want holding down escape to go in and out of pause menu */ /* Don't want holding down escape to go in and out of pause menu */
if (!was) Gui_Remove(s); if (!was) Gui_Remove(s);
return; return;
@ -1077,7 +1092,7 @@ static void OnInputDown(void* obj, int key, cc_bool was) {
if (s->VTABLE->HandlesInputDown(s, key)) return; if (s->VTABLE->HandlesInputDown(s, key)) return;
} }
if ((key == CCKEY_ESCAPE || key == CCKEY_PAUSE) && !Gui.InputGrab) { if ((Input_IsEscapeButton(key) || key == CCKEY_PAUSE) && !Gui.InputGrab) {
#ifdef CC_BUILD_WEB #ifdef CC_BUILD_WEB
/* Can't do this in KeyUp, because pressing escape without having */ /* Can't do this in KeyUp, because pressing escape without having */
/* explicitly disabled mouse lock means a KeyUp event isn't sent. */ /* explicitly disabled mouse lock means a KeyUp event isn't sent. */

View File

@ -76,25 +76,21 @@ void Window_Close(void) {
*----------------------------------------------------Input processing-----------------------------------------------------* *----------------------------------------------------Input processing-----------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static void HandleButtons_Game(u32 mods) { static void HandleButtons_Game(u32 mods) {
Input_SetNonRepeatable(KeyBinds[KEYBIND_PLACE_BLOCK], mods & KEY_L); Input_SetNonRepeatable(CCPAD_L, mods & KEY_L);
Input_SetNonRepeatable(KeyBinds[KEYBIND_DELETE_BLOCK], mods & KEY_R); Input_SetNonRepeatable(CCPAD_R, mods & KEY_R);
Input_SetNonRepeatable(KeyBinds[KEYBIND_JUMP], mods & KEY_A); Input_SetNonRepeatable(CCPAD_A, mods & KEY_A);
Input_SetNonRepeatable(KeyBinds[KEYBIND_INVENTORY], mods & KEY_X); Input_SetNonRepeatable(CCPAD_B, mods & KEY_B);
Input_SetNonRepeatable(KeyBinds[KEYBIND_CHAT], mods & KEY_Y); Input_SetNonRepeatable(CCPAD_X, mods & KEY_X);
Input_SetNonRepeatable(CCPAD_Y, mods & KEY_Y);
Input_SetNonRepeatable(CCKEY_ENTER, mods & KEY_START); Input_SetNonRepeatable(CCPAD_START, mods & KEY_START);
Input_SetNonRepeatable(CCKEY_ESCAPE, mods & KEY_SELECT); Input_SetNonRepeatable(CCPAD_SELECT, mods & KEY_SELECT);
Input_SetNonRepeatable(KeyBinds[KEYBIND_LEFT], mods & KEY_DLEFT); Input_SetNonRepeatable(CCPAD_LEFT, mods & KEY_DLEFT);
Input_SetNonRepeatable(CCPAD_LEFT, mods & KEY_DLEFT); Input_SetNonRepeatable(CCPAD_RIGHT, mods & KEY_DRIGHT);
Input_SetNonRepeatable(KeyBinds[KEYBIND_RIGHT], mods & KEY_DRIGHT); Input_SetNonRepeatable(CCPAD_UP, mods & KEY_DUP);
Input_SetNonRepeatable(CCPAD_RIGHT, mods & KEY_DRIGHT); Input_SetNonRepeatable(CCPAD_DOWN, mods & KEY_DDOWN);
Input_SetNonRepeatable(KeyBinds[KEYBIND_FORWARD], mods & KEY_DUP);
Input_SetNonRepeatable(CCPAD_UP, mods & KEY_DUP);
Input_SetNonRepeatable(KeyBinds[KEYBIND_BACK], mods & KEY_DDOWN);
Input_SetNonRepeatable(CCPAD_DOWN, mods & KEY_DDOWN);
} }
static void HandleButtons_Launcher(u32 mods) { static void HandleButtons_Launcher(u32 mods) {
@ -108,6 +104,7 @@ static void HandleButtons_Launcher(u32 mods) {
Input_SetNonRepeatable(CCPAD_UP, mods & KEY_DUP); Input_SetNonRepeatable(CCPAD_UP, mods & KEY_DUP);
Input_SetNonRepeatable(CCPAD_DOWN, mods & KEY_DDOWN); Input_SetNonRepeatable(CCPAD_DOWN, mods & KEY_DDOWN);
} }
static void ProcessJoystickInput(circlePosition* pos) { static void ProcessJoystickInput(circlePosition* pos) {
// May not be exactly 0 on actual hardware // May not be exactly 0 on actual hardware
if (Math_AbsI(pos->dx) <= 4) pos->dx = 0; if (Math_AbsI(pos->dx) <= 4) pos->dx = 0;

View File

@ -165,47 +165,42 @@ static void ProcessWPAD_Launcher(int mods) {
Input_SetNonRepeatable(CCKEY_ENTER, mods & WPAD_BUTTON_A); Input_SetNonRepeatable(CCKEY_ENTER, mods & WPAD_BUTTON_A);
Input_SetNonRepeatable(CCKEY_ESCAPE, mods & WPAD_BUTTON_B); Input_SetNonRepeatable(CCKEY_ESCAPE, mods & WPAD_BUTTON_B);
Input_SetNonRepeatable(CCPAD_LEFT, mods & WPAD_BUTTON_LEFT); Input_SetNonRepeatable(CCPAD_LEFT, mods & WPAD_BUTTON_LEFT);
Input_SetNonRepeatable(CCPAD_RIGHT, mods & WPAD_BUTTON_RIGHT); Input_SetNonRepeatable(CCPAD_RIGHT, mods & WPAD_BUTTON_RIGHT);
Input_SetNonRepeatable(CCPAD_UP, mods & WPAD_BUTTON_UP); Input_SetNonRepeatable(CCPAD_UP, mods & WPAD_BUTTON_UP);
Input_SetNonRepeatable(CCPAD_DOWN, mods & WPAD_BUTTON_DOWN); Input_SetNonRepeatable(CCPAD_DOWN, mods & WPAD_BUTTON_DOWN);
} }
static void ProcessWPAD_Game(int mods) { static void ProcessWPAD_Game(int mods) {
Input_SetNonRepeatable(KeyBinds[KEYBIND_PLACE_BLOCK], mods & WPAD_BUTTON_1); Input_SetNonRepeatable(CCPAD_L, mods & WPAD_BUTTON_1);
Input_SetNonRepeatable(KeyBinds[KEYBIND_DELETE_BLOCK], mods & WPAD_BUTTON_2); Input_SetNonRepeatable(CCPAD_R, mods & WPAD_BUTTON_2);
Input_SetNonRepeatable(KeyBinds[KEYBIND_JUMP], mods & WPAD_BUTTON_A); Input_SetNonRepeatable(CCPAD_A, mods & WPAD_BUTTON_A);
Input_SetNonRepeatable(KeyBinds[KEYBIND_INVENTORY], mods & WPAD_BUTTON_PLUS); Input_SetNonRepeatable(CCPAD_B, mods & WPAD_BUTTON_B);
// TODO: WPAD_BUTTON_B Input_SetNonRepeatable(CCPAD_X, mods & WPAD_BUTTON_PLUS);
Input_SetNonRepeatable(CCKEY_ENTER, mods & WPAD_BUTTON_HOME); Input_SetNonRepeatable(CCPAD_START, mods & WPAD_BUTTON_HOME);
Input_SetNonRepeatable(CCKEY_ESCAPE, mods & WPAD_BUTTON_MINUS); Input_SetNonRepeatable(CCPAD_SELECT, mods & WPAD_BUTTON_MINUS);
Input_SetNonRepeatable(KeyBinds[KEYBIND_LEFT], mods & WPAD_BUTTON_LEFT); Input_SetNonRepeatable(CCPAD_LEFT, mods & WPAD_BUTTON_LEFT);
Input_SetNonRepeatable(CCPAD_LEFT, mods & WPAD_BUTTON_LEFT); Input_SetNonRepeatable(CCPAD_RIGHT, mods & WPAD_BUTTON_RIGHT);
Input_SetNonRepeatable(KeyBinds[KEYBIND_RIGHT], mods & WPAD_BUTTON_RIGHT); Input_SetNonRepeatable(CCPAD_UP, mods & WPAD_BUTTON_UP);
Input_SetNonRepeatable(CCPAD_RIGHT, mods & WPAD_BUTTON_RIGHT); Input_SetNonRepeatable(CCPAD_DOWN, mods & WPAD_BUTTON_DOWN);
Input_SetNonRepeatable(KeyBinds[KEYBIND_FORWARD], mods & WPAD_BUTTON_UP);
Input_SetNonRepeatable(CCPAD_UP, mods & WPAD_BUTTON_UP);
Input_SetNonRepeatable(KeyBinds[KEYBIND_BACK], mods & WPAD_BUTTON_DOWN);
Input_SetNonRepeatable(CCPAD_DOWN, mods & WPAD_BUTTON_DOWN);
} }
static void ProcessNunchuck_Game(int mods, double delta) { static void ProcessNunchuck_Game(int mods, double delta) {
WPADData* wd = WPAD_Data(0); WPADData* wd = WPAD_Data(0);
joystick_t analog = wd->exp.nunchuk.js; joystick_t analog = wd->exp.nunchuk.js;
Input_SetNonRepeatable(KeyBinds[KEYBIND_PLACE_BLOCK], mods & WPAD_NUNCHUK_BUTTON_C); Input_SetNonRepeatable(CCPAD_L, mods & WPAD_NUNCHUK_BUTTON_C);
Input_SetNonRepeatable(KeyBinds[KEYBIND_DELETE_BLOCK], mods & WPAD_NUNCHUK_BUTTON_Z); Input_SetNonRepeatable(CCPAD_R, mods & WPAD_NUNCHUK_BUTTON_Z);
Input_SetNonRepeatable(KeyBinds[KEYBIND_JUMP], mods & WPAD_BUTTON_A); Input_SetNonRepeatable(CCPAD_A, mods & WPAD_BUTTON_A);
Input_SetNonRepeatable(KeyBinds[KEYBIND_CHAT], mods & WPAD_BUTTON_1); Input_SetNonRepeatable(CCPAD_Y, mods & WPAD_BUTTON_1);
Input_SetNonRepeatable(KeyBinds[KEYBIND_INVENTORY], mods & WPAD_BUTTON_2); Input_SetNonRepeatable(CCPAD_X, mods & WPAD_BUTTON_2);
Input_SetNonRepeatable(CCKEY_ENTER, mods & WPAD_BUTTON_HOME); Input_SetNonRepeatable(CCPAD_START, mods & WPAD_BUTTON_HOME);
Input_SetNonRepeatable(CCKEY_ESCAPE, mods & WPAD_BUTTON_MINUS); Input_SetNonRepeatable(CCPAD_SELECT, mods & WPAD_BUTTON_MINUS);
Input_SetNonRepeatable(KeyBinds[KEYBIND_FLY], mods & WPAD_BUTTON_LEFT); Input_SetNonRepeatable(KeyBinds[KEYBIND_FLY], mods & WPAD_BUTTON_LEFT);
@ -222,15 +217,10 @@ static void ProcessNunchuck_Game(int mods, double delta) {
bool nunchuckLeft = (analog.ang > -90-ANGLE_DELTA) && (analog.ang < -90+ANGLE_DELTA) && (analog.mag > 0.5); bool nunchuckLeft = (analog.ang > -90-ANGLE_DELTA) && (analog.ang < -90+ANGLE_DELTA) && (analog.mag > 0.5);
bool nunchuckRight = (analog.ang > 90-ANGLE_DELTA) && (analog.ang < 90+ANGLE_DELTA) && (analog.mag > 0.5); bool nunchuckRight = (analog.ang > 90-ANGLE_DELTA) && (analog.ang < 90+ANGLE_DELTA) && (analog.mag > 0.5);
Input_SetNonRepeatable(KeyBinds[KEYBIND_LEFT], nunchuckLeft); Input_SetNonRepeatable(CCPAD_LEFT, nunchuckLeft);
Input_SetNonRepeatable(CCPAD_LEFT, nunchuckLeft); Input_SetNonRepeatable(CCPAD_RIGHT, nunchuckRight);
Input_SetNonRepeatable(KeyBinds[KEYBIND_RIGHT], nunchuckRight); Input_SetNonRepeatable(CCPAD_UP, nunchuckUp);
Input_SetNonRepeatable(CCPAD_RIGHT, nunchuckRight); Input_SetNonRepeatable(CCPAD_DOWN, nunchuckDown);
Input_SetNonRepeatable(KeyBinds[KEYBIND_FORWARD], nunchuckUp);
Input_SetNonRepeatable(CCPAD_UP, nunchuckUp);
Input_SetNonRepeatable(KeyBinds[KEYBIND_BACK], nunchuckDown);
Input_SetNonRepeatable(CCPAD_DOWN, nunchuckDown);
} }
static void ProcessClassic_Joystick(struct joystick_t* js) { static void ProcessClassic_Joystick(struct joystick_t* js) {
@ -249,26 +239,21 @@ static void ProcessClassic_Game(void) {
classic_ctrl_t ctrls = wd->exp.classic; classic_ctrl_t ctrls = wd->exp.classic;
int mods = ctrls.btns | ctrls.btns_held; int mods = ctrls.btns | ctrls.btns_held;
Input_SetNonRepeatable(KeyBinds[KEYBIND_PLACE_BLOCK], mods & CLASSIC_CTRL_BUTTON_FULL_L); Input_SetNonRepeatable(CCPAD_L, mods & CLASSIC_CTRL_BUTTON_FULL_L);
Input_SetNonRepeatable(KeyBinds[KEYBIND_DELETE_BLOCK], mods & CLASSIC_CTRL_BUTTON_FULL_R); Input_SetNonRepeatable(CCPAD_R, mods & CLASSIC_CTRL_BUTTON_FULL_R);
Input_SetNonRepeatable(KeyBinds[KEYBIND_JUMP], mods & CLASSIC_CTRL_BUTTON_A); Input_SetNonRepeatable(CCPAD_A, mods & CLASSIC_CTRL_BUTTON_A);
Input_SetNonRepeatable(KeyBinds[KEYBIND_INVENTORY], mods & CLASSIC_CTRL_BUTTON_X); Input_SetNonRepeatable(CCPAD_B, mods & CLASSIC_CTRL_BUTTON_B);
Input_SetNonRepeatable(KeyBinds[KEYBIND_CHAT], mods & CLASSIC_CTRL_BUTTON_Y); Input_SetNonRepeatable(CCPAD_X, mods & CLASSIC_CTRL_BUTTON_X);
// TODO: CLASSIC_CTRL_BUTTON_B Input_SetNonRepeatable(CCPAD_Y, mods & CLASSIC_CTRL_BUTTON_Y);
Input_SetNonRepeatable(CCKEY_ENTER, mods & CLASSIC_CTRL_BUTTON_PLUS); Input_SetNonRepeatable(CCPAD_START, mods & CLASSIC_CTRL_BUTTON_PLUS);
Input_SetNonRepeatable(CCKEY_ESCAPE, mods & CLASSIC_CTRL_BUTTON_MINUS); Input_SetNonRepeatable(CCPAD_SELECT, mods & CLASSIC_CTRL_BUTTON_MINUS);
Input_SetNonRepeatable(KeyBinds[KEYBIND_LEFT], mods & CLASSIC_CTRL_BUTTON_LEFT); Input_SetNonRepeatable(CCPAD_LEFT, mods & CLASSIC_CTRL_BUTTON_LEFT);
Input_SetNonRepeatable(CCPAD_LEFT, mods & CLASSIC_CTRL_BUTTON_LEFT); Input_SetNonRepeatable(CCPAD_RIGHT, mods & CLASSIC_CTRL_BUTTON_RIGHT);
Input_SetNonRepeatable(KeyBinds[KEYBIND_RIGHT], mods & CLASSIC_CTRL_BUTTON_RIGHT); Input_SetNonRepeatable(CCPAD_UP, mods & CLASSIC_CTRL_BUTTON_UP);
Input_SetNonRepeatable(CCPAD_RIGHT, mods & CLASSIC_CTRL_BUTTON_RIGHT); Input_SetNonRepeatable(CCPAD_DOWN, mods & CLASSIC_CTRL_BUTTON_DOWN);
Input_SetNonRepeatable(KeyBinds[KEYBIND_FORWARD], mods & CLASSIC_CTRL_BUTTON_UP);
Input_SetNonRepeatable(CCPAD_UP, mods & CLASSIC_CTRL_BUTTON_UP);
Input_SetNonRepeatable(KeyBinds[KEYBIND_BACK], mods & CLASSIC_CTRL_BUTTON_DOWN);
Input_SetNonRepeatable(CCPAD_DOWN, mods & CLASSIC_CTRL_BUTTON_DOWN);
if (Input.RawMode) { if (Input.RawMode) {
ProcessClassic_Joystick(&ctrls.ljs); ProcessClassic_Joystick(&ctrls.ljs);

View File

@ -14,6 +14,7 @@
#define BUFFER_WIDTH 512 #define BUFFER_WIDTH 512
#define SCREEN_WIDTH 480 #define SCREEN_WIDTH 480
#define SCREEN_HEIGHT 272 #define SCREEN_HEIGHT 272
static cc_bool launcherMode;
void Window_Init(void) { void Window_Init(void) {
DisplayInfo.Width = SCREEN_WIDTH; DisplayInfo.Width = SCREEN_WIDTH;
@ -31,10 +32,8 @@ void Window_Init(void) {
sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);
} }
static void DoCreateWindow(int _3d) { void Window_Create2D(int width, int height) { launcherMode = true; }
} void Window_Create3D(int width, int height) { launcherMode = false; }
void Window_Create2D(int width, int height) { DoCreateWindow(0); }
void Window_Create3D(int width, int height) { DoCreateWindow(1); }
void Window_SetTitle(const cc_string* title) { } void Window_SetTitle(const cc_string* title) { }
void Clipboard_GetText(cc_string* value) { } void Clipboard_GetText(cc_string* value) { }
@ -52,6 +51,36 @@ void Window_Close(void) {
/* TODO implement */ /* TODO implement */
} }
static void HandleButtons_Launcher(int mods) {
Input_SetNonRepeatable(CCKEY_ENTER, mods & PSP_CTRL_TRIANGLE);
Input_SetNonRepeatable(CCKEY_ESCAPE, mods & PSP_CTRL_SQUARE);
// fake tab with PSP_CTRL_SQUARE for Launcher too
//Input_SetNonRepeatable(CCKEY_TAB, mods & PSP_CTRL_SQUARE);
Input_SetNonRepeatable(CCPAD_LEFT, mods & PSP_CTRL_LEFT);
Input_SetNonRepeatable(CCPAD_RIGHT, mods & PSP_CTRL_RIGHT);
Input_SetNonRepeatable(CCPAD_UP, mods & PSP_CTRL_UP);
Input_SetNonRepeatable(CCPAD_DOWN, mods & PSP_CTRL_DOWN);
}
static void HandleButtons_Game(int mods) {
Input_SetNonRepeatable(CCPAD_L, mods & PSP_CTRL_LTRIGGER);
Input_SetNonRepeatable(CCPAD_R, mods & PSP_CTRL_RTRIGGER);
Input_SetNonRepeatable(CCPAD_A, mods & PSP_CTRL_TRIANGLE);
Input_SetNonRepeatable(CCPAD_B, mods & PSP_CTRL_SQUARE);
Input_SetNonRepeatable(CCPAD_X, mods & PSP_CTRL_CROSS);
Input_SetNonRepeatable(CCPAD_Y, mods & PSP_CTRL_CIRCLE);
Input_SetNonRepeatable(CCPAD_START, mods & PSP_CTRL_START);
Input_SetNonRepeatable(CCPAD_SELECT, mods & PSP_CTRL_SELECT);
Input_SetNonRepeatable(CCPAD_LEFT, mods & PSP_CTRL_LEFT);
Input_SetNonRepeatable(CCPAD_RIGHT, mods & PSP_CTRL_RIGHT);
Input_SetNonRepeatable(CCPAD_UP, mods & PSP_CTRL_UP);
Input_SetNonRepeatable(CCPAD_DOWN, mods & PSP_CTRL_DOWN);
}
void Window_ProcessEvents(double delta) { void Window_ProcessEvents(double delta) {
SceCtrlData pad; SceCtrlData pad;
/* TODO implement */ /* TODO implement */
@ -63,31 +92,13 @@ void Window_ProcessEvents(double delta) {
if (Input.RawMode && (Math_AbsI(dx) > 1 || Math_AbsI(dy) > 1)) { if (Input.RawMode && (Math_AbsI(dx) > 1 || Math_AbsI(dy) > 1)) {
//Platform_Log2("RAW: %i, %i", &dx, &dy); //Platform_Log2("RAW: %i, %i", &dx, &dy);
Event_RaiseRawMove(&PointerEvents.RawMoved, dx / 32.0f, dy / 32.0f); Event_RaiseRawMove(&PointerEvents.RawMoved, dx / 32.0f, dy / 32.0f);
}
if (launcherMode) {
HandleButtons_Launcher(mods);
} else {
HandleButtons_Game(mods);
} }
Input_SetNonRepeatable(KeyBinds[KEYBIND_PLACE_BLOCK], mods & PSP_CTRL_LTRIGGER);
Input_SetNonRepeatable(KeyBinds[KEYBIND_DELETE_BLOCK], mods & PSP_CTRL_RTRIGGER);
Input_SetNonRepeatable(KeyBinds[KEYBIND_JUMP], mods & PSP_CTRL_TRIANGLE);
Input_SetNonRepeatable(KeyBinds[KEYBIND_CHAT], mods & PSP_CTRL_CIRCLE);
Input_SetNonRepeatable(KeyBinds[KEYBIND_INVENTORY], mods & PSP_CTRL_CROSS);
// PSP_CTRL_SQUARE
Input_SetNonRepeatable(CCKEY_ENTER, mods & PSP_CTRL_START);
Input_SetNonRepeatable(CCKEY_ESCAPE, mods & PSP_CTRL_SELECT);
// fake tab with PSP_CTRL_SQUARE for Launcher too
Input_SetNonRepeatable(CCKEY_TAB, mods & PSP_CTRL_SQUARE);
Input_SetNonRepeatable(KeyBinds[KEYBIND_LEFT], mods & PSP_CTRL_LEFT);
Input_SetNonRepeatable(CCPAD_LEFT, mods & PSP_CTRL_LEFT);
Input_SetNonRepeatable(KeyBinds[KEYBIND_RIGHT], mods & PSP_CTRL_RIGHT);
Input_SetNonRepeatable(CCPAD_RIGHT, mods & PSP_CTRL_RIGHT);
Input_SetNonRepeatable(KeyBinds[KEYBIND_FORWARD], mods & PSP_CTRL_UP);
Input_SetNonRepeatable(CCPAD_UP, mods & PSP_CTRL_UP);
Input_SetNonRepeatable(KeyBinds[KEYBIND_BACK], mods & PSP_CTRL_DOWN);
Input_SetNonRepeatable(CCPAD_DOWN, mods & PSP_CTRL_DOWN);
} }
static void Cursor_GetRawPos(int* x, int* y) { static void Cursor_GetRawPos(int* x, int* y) {