mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-12 17:17:09 -04:00
Mobile: Add (disabled) button for setting scale of touch gui
This commit is contained in:
parent
3e2004c5ee
commit
edae243721
@ -95,6 +95,7 @@ static void LoadOptions(void) {
|
||||
Gui.RawInventoryScale = Options_GetFloat(OPT_INVENTORY_SCALE, 0.25f, 5.0f, 1.0f);
|
||||
Gui.RawHotbarScale = Options_GetFloat(OPT_HOTBAR_SCALE, 0.25f, 5.0f, 1.0f);
|
||||
Gui.RawChatScale = Options_GetFloat(OPT_CHAT_SCALE, 0.25f, 5.0f, 1.0f);
|
||||
Gui.RawTouchScale = Options_GetFloat(OPT_TOUCH_SCALE, 0.25f, 5.0f, 1.0f);
|
||||
}
|
||||
|
||||
static void LoseAllScreens(void) {
|
||||
|
@ -45,6 +45,7 @@ CC_VAR extern struct _GuiData {
|
||||
int DefaultLines;
|
||||
/* (internal) Bitmask of on-screen buttons, see Input.h */
|
||||
int _onscreenButtons;
|
||||
float RawTouchScale;
|
||||
} Gui;
|
||||
|
||||
float Gui_Scale(float value);
|
||||
|
48
src/Menus.c
48
src/Menus.c
@ -3794,7 +3794,7 @@ void TouchOnscreenScreen_Show(void) {
|
||||
/*########################################################################################################################*
|
||||
*---------------------------------------------------TouchControlsScreen---------------------------------------------------*
|
||||
*#########################################################################################################################*/
|
||||
#define TOUCHCTRLS_BTNS 4
|
||||
#define TOUCHCTRLS_BTNS 5
|
||||
static struct TouchCtrlsScreen {
|
||||
Screen_Body
|
||||
struct ButtonWidget back;
|
||||
@ -3805,7 +3805,7 @@ static struct TouchCtrlsScreen {
|
||||
static struct Widget* touchCtrls_widgets[1 + TOUCHCTRLS_BTNS] = {
|
||||
(struct Widget*)&TouchCtrlsScreen.back, (struct Widget*)&TouchCtrlsScreen.btns[0],
|
||||
(struct Widget*)&TouchCtrlsScreen.btns[1], (struct Widget*)&TouchCtrlsScreen.btns[2],
|
||||
(struct Widget*)&TouchCtrlsScreen.btns[3]
|
||||
(struct Widget*)&TouchCtrlsScreen.btns[3], (struct Widget*)&TouchCtrlsScreen.btns[4]
|
||||
};
|
||||
#define TOUCHCTRLS_MAX_VERTICES (BUTTONWIDGET_MAX + TOUCHCTRLS_BTNS * BUTTONWIDGET_MAX)
|
||||
|
||||
@ -3831,6 +3831,17 @@ static void TouchCtrls_UpdateSensitivity(void* screen) {
|
||||
s->dirty = true;
|
||||
}
|
||||
|
||||
static void TouchCtrls_UpdateScale(void* screen) {
|
||||
cc_string value; char valueBuffer[STRING_SIZE];
|
||||
struct TouchCtrlsScreen* s = (struct TouchCtrlsScreen*)screen;
|
||||
String_InitArray(value, valueBuffer);
|
||||
|
||||
String_AppendConst(&value, "Scale: ");
|
||||
String_AppendFloat(&value, Gui.RawTouchScale, 1);
|
||||
ButtonWidget_Set(&s->btns[3], &value, &s->font);
|
||||
s->dirty = true;
|
||||
}
|
||||
|
||||
static void TouchCtrls_More(void* s, void* w) { TouchMoreScreen_Show(); }
|
||||
static void TouchCtrls_Onscreen(void* s, void* w) { TouchOnscreenScreen_Show(); }
|
||||
|
||||
@ -3843,7 +3854,7 @@ static void TouchCtrls_Hold(void* s, void* w) {
|
||||
TouchCtrls_UpdateHoldText(s);
|
||||
}
|
||||
|
||||
static void TouchCtrls_OnDone(const cc_string* value, cc_bool valid) {
|
||||
static void TouchCtrls_SensitivityDone(const cc_string* value, cc_bool valid) {
|
||||
if (!valid) return;
|
||||
MiscOptionsScreen_SetSensitivity(value);
|
||||
TouchCtrls_UpdateSensitivity(&TouchCtrlsScreen);
|
||||
@ -3857,16 +3868,35 @@ static void TouchCtrls_Sensitivity(void* screen, void* w) {
|
||||
|
||||
MenuInput_Int(desc, 1, 200, 30);
|
||||
MiscOptionsScreen_GetSensitivity(&value);
|
||||
MenuInputOverlay_Show(&desc, &value, TouchCtrls_OnDone, true);
|
||||
MenuInputOverlay_Show(&desc, &value, TouchCtrls_SensitivityDone, true);
|
||||
/* Fix Sensitivity button getting stuck as 'active' */
|
||||
/* (input overlay swallows subsequent pointer events) */
|
||||
s->btns[2].active = 0;
|
||||
}
|
||||
|
||||
static const struct SimpleButtonDesc touchCtrls_btns[4] = {
|
||||
static void TouchCtrls_ScaleDone(const cc_string* value, cc_bool valid) {
|
||||
if (!valid) return;
|
||||
ChatOptionsScreen_SetScale(value, &Gui.RawTouchScale, OPT_TOUCH_SCALE);
|
||||
TouchCtrls_UpdateScale(&TouchCtrlsScreen);
|
||||
}
|
||||
|
||||
static void TouchCtrls_Scale(void* screen, void* w) {
|
||||
struct TouchCtrlsScreen* s = (struct TouchCtrlsScreen*)screen;
|
||||
static struct MenuInputDesc desc;
|
||||
cc_string value; char valueBuffer[STRING_SIZE];
|
||||
String_InitArray(value, valueBuffer);
|
||||
|
||||
MenuInput_Float(desc, 0.25f, 5.0f, 1.0f);
|
||||
String_AppendFloat(&value, Gui.RawTouchScale, 1);
|
||||
MenuInputOverlay_Show(&desc, &value, TouchCtrls_ScaleDone, true);
|
||||
s->btns[3].active = 0;
|
||||
}
|
||||
|
||||
static const struct SimpleButtonDesc touchCtrls_btns[5] = {
|
||||
{ -102, -50, "", TouchCtrls_Tap },
|
||||
{ 102, -50, "", TouchCtrls_Hold },
|
||||
{ 0, 0, "", TouchCtrls_Sensitivity },
|
||||
{ -102, 0, "", TouchCtrls_Sensitivity },
|
||||
{ 102, 0, "", TouchCtrls_Scale },
|
||||
{ 0, 50, "On-screen controls", TouchCtrls_Onscreen }
|
||||
};
|
||||
|
||||
@ -3886,6 +3916,7 @@ static void TouchCtrlsScreen_ContextRecreated(void* screen) {
|
||||
TouchCtrls_UpdateTapText(s);
|
||||
TouchCtrls_UpdateHoldText(s);
|
||||
TouchCtrls_UpdateSensitivity(s);
|
||||
TouchCtrls_UpdateScale(s);
|
||||
}
|
||||
|
||||
static void TouchCtrlsScreen_Layout(void* screen) {
|
||||
@ -3900,9 +3931,10 @@ static void TouchCtrlsScreen_Init(void* screen) {
|
||||
s->numWidgets = Array_Elems(touchCtrls_widgets);
|
||||
s->maxVertices = TOUCHCTRLS_MAX_VERTICES;
|
||||
|
||||
Menu_InitButtons(s->btns, 195, touchCtrls_btns, 2);
|
||||
Menu_InitButtons(s->btns + 2, 400, touchCtrls_btns + 2, 2);
|
||||
Menu_InitButtons(s->btns, 195, touchCtrls_btns, 4);
|
||||
Menu_InitButtons(s->btns + 4, 400, touchCtrls_btns + 4, 1);
|
||||
Menu_InitBack(&s->back, TouchCtrls_More);
|
||||
s->btns[3].disabled = true;
|
||||
}
|
||||
|
||||
static const struct ScreenVTABLE TouchCtrlsScreen_VTABLE = {
|
||||
|
@ -69,6 +69,7 @@
|
||||
#define OPT_CAMERA_MASS "cameramass"
|
||||
#define OPT_GRAB_CURSOR "win-grab-cursor"
|
||||
#define OPT_TOUCH_BUTTONS "gui-touchbuttons"
|
||||
#define OPT_TOUCH_SCALE "gui-touchscale"
|
||||
|
||||
struct StringsBuffer;
|
||||
extern struct StringsBuffer Options;
|
||||
|
Loading…
x
Reference in New Issue
Block a user