From 8e56cb92fdb335e078e2fe748f8dda0e7de44f82 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sat, 28 Nov 2020 16:37:51 +1100 Subject: [PATCH] Mobile: Add third person on screen control --- src/Input.h | 3 ++- src/Menus.c | 2 +- src/Screens.c | 9 ++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Input.h b/src/Input.h index 045805760..a4ad3f164 100644 --- a/src/Input.h +++ b/src/Input.h @@ -173,5 +173,6 @@ void InputHandler_OnScreensChanged(void); #define ONSCREEN_BTN_NOCLIP (1 << 5) #define ONSCREEN_BTN_SPEED (1 << 6) #define ONSCREEN_BTN_HALFSPEED (1 << 7) -#define ONSCREEN_MAX_BTNS 8 +#define ONSCREEN_BTN_CAMERA (1 << 8) +#define ONSCREEN_MAX_BTNS 9 #endif diff --git a/src/Menus.c b/src/Menus.c index 7d26fac76..2d9509a82 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -3654,7 +3654,7 @@ static const struct SimpleButtonDesc touchOnscreen_page1[ONSCREEN_PAGE_BTNS] = { { -120, 100, "Speed", TouchOnscreen_Any }, { 120, 100, "Half speed", TouchOnscreen_Any } }; static const struct SimpleButtonDesc touchOnscreen_page2[ONSCREEN_PAGE_BTNS] = { - { -120, -50, "---", TouchOnscreen_Any }, { 120, -50, "---", TouchOnscreen_Any }, + { -120, -50, "3rd person", TouchOnscreen_Any }, { 120, -50, "---", TouchOnscreen_Any }, { -120, 0, "---", TouchOnscreen_Any }, { 120, 0, "---", TouchOnscreen_Any }, { -120, 50, "---", TouchOnscreen_Any }, { 120, 50, "---", TouchOnscreen_Any }, { -120, 100, "---", TouchOnscreen_Any }, { 120, 100, "---", TouchOnscreen_Any } diff --git a/src/Screens.c b/src/Screens.c index 6b494f148..dd35df9b3 100644 --- a/src/Screens.c +++ b/src/Screens.c @@ -1930,6 +1930,7 @@ static struct TouchScreen { static struct Widget* touch_widgets[1 + TOUCH_MAX_BTNS] = { NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL, + NULL, NULL,NULL,NULL, (struct Widget*)&TouchScreen.thumbstick }; #define TOUCH_MAX_VERTICES (THUMBSTICKWIDGET_MAX + TOUCH_MAX_BTNS * BUTTONWIDGET_MAX) @@ -1938,7 +1939,7 @@ static void TouchScreen_OnscreenClick(void* screen, void* widget) { struct TouchScreen* s = (struct TouchScreen*)screen; int i = Screen_Index(screen, widget); int key = KeyBinds[s->onscreenDescs[i]->bind]; - Input_Set(KeyBinds[s->onscreenDescs[i]->bind], !Input_Pressed[key]); + Input_Set(key, !Input_Pressed[key]); } static void TouchScreen_ChatClick(void* s, void* w) { ChatScreen_OpenInput(&String_Empty); } @@ -1946,6 +1947,7 @@ static void TouchScreen_RespawnClick(void* s, void* w) { LocalPlayer_HandleResp static void TouchScreen_SetSpawnClick(void* s, void* w) { LocalPlayer_HandleSetSpawn(); } static void TouchScreen_FlyClick(void* s, void* w) { LocalPlayer_HandleFly(); } static void TouchScreen_NoclipClick(void* s, void* w) { LocalPlayer_HandleNoclip(); } +static void TouchScreen_CameraClick(void* s, void* w) { Camera_CycleActive(); } static void TouchScreen_MoreClick(void* s, void* w) { TouchMoreScreen_Show(); } static void TouchScreen_TabClick(void* s, void* w) { @@ -1962,7 +1964,7 @@ static void TouchScreen_BindClick(void* screen, void* widget) { Input_Set(KeyBinds[s->descs[i].bind], true); } -static const struct TouchButtonDesc onscreenDescs[8] = { +static const struct TouchButtonDesc onscreenDescs[ONSCREEN_MAX_BTNS] = { { "Chat", 0,0,0, TouchScreen_ChatClick }, { "Tablist", 0,0,0, TouchScreen_TabClick }, { "Respawn", 0,0,0, TouchScreen_RespawnClick, &LocalPlayer_Instance.Hacks.CanRespawn }, @@ -1970,7 +1972,8 @@ static const struct TouchButtonDesc onscreenDescs[8] = { { "Fly", 0,0,0, TouchScreen_FlyClick, &LocalPlayer_Instance.Hacks.CanFly }, { "Noclip", 0,0,0, TouchScreen_NoclipClick, &LocalPlayer_Instance.Hacks.CanNoclip }, { "Speed", KEYBIND_SPEED, 0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanSpeed }, - { "\xabSpeed", KEYBIND_HALF_SPEED, 0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanSpeed } + { "\xabSpeed", KEYBIND_HALF_SPEED, 0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanSpeed }, + { "Camera", 0,0,0, TouchScreen_CameraClick, &LocalPlayer_Instance.Hacks.CanUseThirdPerson } }; static const struct TouchButtonDesc normDescs[2] = { { "...", KEYBIND_COUNT, 0, 0, TouchScreen_MoreClick },