Fix speed/half-speed on-screen controls getting stuck down

This commit is contained in:
UnknownShadow200 2020-11-13 23:11:58 +11:00
parent 03b8a949d0
commit d789184e9a
3 changed files with 13 additions and 5 deletions

View File

@ -3613,6 +3613,7 @@ static void TouchOnscreen_Any(void* s, void* w) {
Gui._onscreenButtons |= bit; Gui._onscreenButtons |= bit;
} }
Options_SetInt(OPT_TOUCH_BUTTONS, Gui._onscreenButtons); Options_SetInt(OPT_TOUCH_BUTTONS, Gui._onscreenButtons);
TouchScreen_Refresh();
} }
static void TouchOnscreen_More(void* s, void* w) { TouchCtrlsScreen_Show(); } static void TouchOnscreen_More(void* s, void* w) { TouchCtrlsScreen_Show(); }
@ -3738,7 +3739,8 @@ static void TouchCtrls_OnDone(const cc_string* value, cc_bool valid) {
TouchCtrls_UpdateSensitivity(&TouchCtrlsScreen); TouchCtrls_UpdateSensitivity(&TouchCtrlsScreen);
} }
static void TouchCtrls_Sensitivity(void* s, void* w) { static void TouchCtrls_Sensitivity(void* screen, void* w) {
struct TouchCtrlsScreen* s = (struct TouchCtrlsScreen*)screen;
static struct MenuInputDesc desc; static struct MenuInputDesc desc;
cc_string value; char valueBuffer[STRING_SIZE]; cc_string value; char valueBuffer[STRING_SIZE];
String_InitArray(value, valueBuffer); String_InitArray(value, valueBuffer);
@ -3746,6 +3748,9 @@ static void TouchCtrls_Sensitivity(void* s, void* w) {
MenuInput_Int(desc, 1, 200, 30); MenuInput_Int(desc, 1, 200, 30);
MiscOptionsScreen_GetSensitivity(&value); MiscOptionsScreen_GetSensitivity(&value);
MenuInputOverlay_Show(&desc, &value, TouchCtrls_OnDone, true); MenuInputOverlay_Show(&desc, &value, TouchCtrls_OnDone, true);
/* Fix Sensitivity button getting stuck as 'active' */
/* (input overlay swallows subsequent pointer events) */
s->btns[4].active = 0;
} }
static const struct SimpleButtonDesc touchCtrls_btns[8] = { static const struct SimpleButtonDesc touchCtrls_btns[8] = {

View File

@ -1935,8 +1935,9 @@ static void TouchScreen_NoclipClick(void* s, void* w) { LocalPlayer_HandleNocl
static void TouchScreen_MoreClick(void* s, void* w) { TouchMoreScreen_Show(); } static void TouchScreen_MoreClick(void* s, void* w) { TouchMoreScreen_Show(); }
static void TouchScreen_BindClick(void* screen, void* widget) { static void TouchScreen_BindClick(void* screen, void* widget) {
struct TouchScreen* s = (struct TouchScreen*)screen; struct TouchScreen* s = (struct TouchScreen*)screen;
int i = Screen_Index(screen, widget) - ONSCREEN_MAX_BTNS; int i = Screen_Index(screen, widget) - ONSCREEN_MAX_BTNS;
Input_SetPressed(KeyBinds[s->descs[i].bind], true); int key = KeyBinds[s->descs[i].bind];
Input_SetPressed(key, !Input_Pressed[key]);
} }
static const struct TouchButtonDesc onscreenDescs[8] = { static const struct TouchButtonDesc onscreenDescs[8] = {
@ -1992,14 +1993,15 @@ static void TouchScreen_InitButtons(struct TouchScreen* s) {
} }
} }
static void TouchScreen_HacksChanged(void* screen) { void TouchScreen_Refresh(void) {
struct TouchScreen* s = (struct TouchScreen*)screen; struct TouchScreen* s = &TouchScreen;
/* InitButtons changes number of widgets, hence */ /* InitButtons changes number of widgets, hence */
/* must destroy graphics resources BEFORE that */ /* must destroy graphics resources BEFORE that */
Screen_ContextLost(s); Screen_ContextLost(s);
TouchScreen_InitButtons(s); TouchScreen_InitButtons(s);
Gui_Refresh((struct Screen*)s); Gui_Refresh((struct Screen*)s);
} }
static void TouchScreen_HacksChanged(void* s) { TouchScreen_Refresh(); }
static void TouchScreen_ContextLost(void* screen) { static void TouchScreen_ContextLost(void* screen) {
struct TouchScreen* s = (struct TouchScreen*)screen; struct TouchScreen* s = (struct TouchScreen*)screen;

View File

@ -32,6 +32,7 @@ void GeneratingScreen_Show(void);
void ChatScreen_Show(void); void ChatScreen_Show(void);
void DisconnectScreen_Show(const cc_string* title, const cc_string* message); void DisconnectScreen_Show(const cc_string* title, const cc_string* message);
#ifdef CC_BUILD_TOUCH #ifdef CC_BUILD_TOUCH
void TouchScreen_Refresh(void);
void TouchScreen_Show(void); void TouchScreen_Show(void);
#endif #endif