mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-13 01:26:50 -04:00
Start work on new touch more menu
This commit is contained in:
parent
27935713e8
commit
15bfae9be6
148
src/Menus.c
148
src/Menus.c
@ -3542,58 +3542,138 @@ void TexPackOverlay_Show(const cc_string* url) {
|
|||||||
|
|
||||||
#ifdef CC_BUILD_TOUCH
|
#ifdef CC_BUILD_TOUCH
|
||||||
/*########################################################################################################################*
|
/*########################################################################################################################*
|
||||||
*-----------------------------------------------------TouchMoreScreen-----------------------------------------------------*
|
*---------------------------------------------------TouchControlsScreen---------------------------------------------------*
|
||||||
*#########################################################################################################################*/
|
*#########################################################################################################################*/
|
||||||
static struct TouchMoreScreen {
|
#define TOUCHCTRLS_BTNS 6
|
||||||
|
static struct TouchCtrlsScreen {
|
||||||
Screen_Body
|
Screen_Body
|
||||||
struct ButtonWidget btns[8];
|
struct ButtonWidget btns[TOUCHCTRLS_BTNS];
|
||||||
} TouchMoreScreen;
|
} TouchCtrlsScreen;
|
||||||
|
|
||||||
static struct Widget* touchMore_widgets[8] = {
|
static struct Widget* touchCtrls_widgets[TOUCHCTRLS_BTNS] = {
|
||||||
(struct Widget*)&TouchMoreScreen.btns[0], (struct Widget*)&TouchMoreScreen.btns[1],
|
(struct Widget*)&TouchCtrlsScreen.btns[0], (struct Widget*)&TouchCtrlsScreen.btns[1],
|
||||||
(struct Widget*)&TouchMoreScreen.btns[2], (struct Widget*)&TouchMoreScreen.btns[3],
|
(struct Widget*)&TouchCtrlsScreen.btns[2], (struct Widget*)&TouchCtrlsScreen.btns[3],
|
||||||
(struct Widget*)&TouchMoreScreen.btns[4], (struct Widget*)&TouchMoreScreen.btns[5],
|
(struct Widget*)&TouchCtrlsScreen.btns[4], (struct Widget*)&TouchCtrlsScreen.btns[5]
|
||||||
(struct Widget*)&TouchMoreScreen.btns[6], (struct Widget*)&TouchMoreScreen.btns[7]
|
|
||||||
};
|
};
|
||||||
#define TOUCHMORE_MAX_VERTICES (8 * BUTTONWIDGET_MAX)
|
#define TOUCHCTRLS_MAX_VERTICES (TOUCHCTRLS_BTNS * BUTTONWIDGET_MAX)
|
||||||
|
|
||||||
static void TouchMore_Toggle(KeyBind bind) {
|
static void TouchCtrls_Toggle(KeyBind bind) {
|
||||||
int key = KeyBinds[bind];
|
int key = KeyBinds[bind];
|
||||||
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
Gui_Remove((struct Screen*)&TouchCtrlsScreen);
|
||||||
Input_SetPressed(key, !Input_Pressed[key]);
|
Input_SetPressed(key, !Input_Pressed[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TouchMore_Speed(void* s, void* w) { TouchMore_Toggle(KEYBIND_SPEED); }
|
static void TouchCtrls_Speed(void* s, void* w) { TouchCtrls_Toggle(KEYBIND_SPEED); }
|
||||||
static void TouchMore_Fly(void* s, void* w) { TouchMore_Toggle(KEYBIND_FLY); }
|
static void TouchCtrls_Fly(void* s, void* w) { TouchCtrls_Toggle(KEYBIND_FLY); }
|
||||||
static void TouchMore_Noclip(void* s, void* w) { TouchMore_Toggle(KEYBIND_NOCLIP); }
|
static void TouchCtrls_Noclip(void* s, void* w) { TouchCtrls_Toggle(KEYBIND_NOCLIP); }
|
||||||
|
|
||||||
static void TouchMore_Chat(void* s, void* w) {
|
static void TouchCtrls_Chat(void* s, void* w) {
|
||||||
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
Gui_Remove((struct Screen*)&TouchCtrlsScreen);
|
||||||
ChatScreen_OpenInput(&String_Empty);
|
ChatScreen_OpenInput(&String_Empty);
|
||||||
}
|
}
|
||||||
|
static void TouchCtrls_Take(void* s, void* w) {
|
||||||
|
Gui_Remove((struct Screen*)&TouchCtrlsScreen);
|
||||||
|
Game_ScreenshotRequested = true;
|
||||||
|
}
|
||||||
|
static void TouchCtrls_Menu(void* s, void* w) {
|
||||||
|
Gui_Remove((struct Screen*)&TouchCtrlsScreen);
|
||||||
|
PauseScreen_Show();
|
||||||
|
}
|
||||||
|
static void TouchCtrls_Screen(void* s, void* w) {
|
||||||
|
Gui_Remove((struct Screen*)&TouchCtrlsScreen);
|
||||||
|
Game_ToggleFullscreen();
|
||||||
|
}
|
||||||
|
static void TouchCtrls_Fog(void* s, void* w) { Game_CycleViewDistance(); }
|
||||||
|
|
||||||
|
static const struct SimpleButtonDesc touchCtrls_btns[8] = {
|
||||||
|
{ -120, -50, "Chat", TouchCtrls_Chat },
|
||||||
|
{ 120, -50, "Fog", TouchCtrls_Fog },
|
||||||
|
{ -120, 0, "Tap: Place", TouchCtrls_Speed },
|
||||||
|
{ 120, 0, "Hold: Delete", TouchCtrls_Screen },
|
||||||
|
{ 0, 50, "Sensitivity: 30", TouchCtrls_Fly },
|
||||||
|
{ 0, 100, "On-screen controls", TouchCtrls_Menu }
|
||||||
|
};
|
||||||
|
|
||||||
|
static void TouchCtrlsScreen_ContextRecreated(void* screen) {
|
||||||
|
struct TouchCtrlsScreen* s = (struct TouchCtrlsScreen*)screen;
|
||||||
|
struct FontDesc titleFont;
|
||||||
|
Menu_MakeTitleFont(&titleFont);
|
||||||
|
Screen_CreateVb(screen);
|
||||||
|
|
||||||
|
Menu_SetButtons(s->btns, &titleFont, touchCtrls_btns, TOUCHCTRLS_BTNS);
|
||||||
|
Font_Free(&titleFont);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void TouchCtrlsScreen_Layout(void* screen) {
|
||||||
|
struct TouchCtrlsScreen* s = (struct TouchCtrlsScreen*)screen;
|
||||||
|
Menu_LayoutButtons(s->btns, touchCtrls_btns, TOUCHCTRLS_BTNS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void TouchCtrlsScreen_Init(void* screen) {
|
||||||
|
struct TouchCtrlsScreen* s = (struct TouchCtrlsScreen*)screen;
|
||||||
|
s->widgets = touchCtrls_widgets;
|
||||||
|
s->numWidgets = Array_Elems(touchCtrls_widgets);
|
||||||
|
s->maxVertices = TOUCHCTRLS_MAX_VERTICES;
|
||||||
|
|
||||||
|
Menu_InitButtons(s->btns, 200, touchCtrls_btns, 4);
|
||||||
|
Menu_InitButtons(s->btns + 4, 400, touchCtrls_btns + 4, 2);
|
||||||
|
/* TODO: Close button */
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct ScreenVTABLE TouchCtrlsScreen_VTABLE = {
|
||||||
|
TouchCtrlsScreen_Init, Screen_NullUpdate, Screen_NullFunc,
|
||||||
|
MenuScreen_Render2, Screen_BuildMesh,
|
||||||
|
Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText,
|
||||||
|
Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
|
||||||
|
TouchCtrlsScreen_Layout, Screen_ContextLost, TouchCtrlsScreen_ContextRecreated
|
||||||
|
};
|
||||||
|
void TouchCtrlsScreen_Show(void) {
|
||||||
|
struct TouchCtrlsScreen* s = &TouchCtrlsScreen;
|
||||||
|
s->grabsInput = true;
|
||||||
|
s->closable = true;
|
||||||
|
s->VTABLE = &TouchCtrlsScreen_VTABLE;
|
||||||
|
|
||||||
|
Gui_Add((struct Screen*)s, GUI_PRIORITY_TOUCHMORE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*########################################################################################################################*
|
||||||
|
*-----------------------------------------------------TouchMoreScreen-----------------------------------------------------*
|
||||||
|
*#########################################################################################################################*/
|
||||||
|
#define TOUCHMORE_BTNS 4
|
||||||
|
static struct TouchMoreScreen {
|
||||||
|
Screen_Body
|
||||||
|
struct ButtonWidget btns[TOUCHMORE_BTNS];
|
||||||
|
} TouchMoreScreen;
|
||||||
|
|
||||||
|
static struct Widget* touchMore_widgets[TOUCHMORE_BTNS] = {
|
||||||
|
(struct Widget*)&TouchMoreScreen.btns[0], (struct Widget*)&TouchMoreScreen.btns[1],
|
||||||
|
(struct Widget*)&TouchMoreScreen.btns[2], (struct Widget*)&TouchMoreScreen.btns[3]
|
||||||
|
};
|
||||||
|
#define TOUCHMORE_MAX_VERTICES (TOUCHMORE_BTNS * BUTTONWIDGET_MAX)
|
||||||
|
|
||||||
static void TouchMore_Take(void* s, void* w) {
|
static void TouchMore_Take(void* s, void* w) {
|
||||||
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
||||||
Game_ScreenshotRequested = true;
|
Game_ScreenshotRequested = true;
|
||||||
}
|
}
|
||||||
static void TouchMore_Menu(void* s, void* w) {
|
|
||||||
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
|
||||||
PauseScreen_Show();
|
|
||||||
}
|
|
||||||
static void TouchMore_Screen(void* s, void* w) {
|
static void TouchMore_Screen(void* s, void* w) {
|
||||||
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
||||||
Game_ToggleFullscreen();
|
Game_ToggleFullscreen();
|
||||||
}
|
}
|
||||||
static void TouchMore_Fog(void* s, void* w) { Game_CycleViewDistance(); }
|
static void TouchMore_Ctrls(void* s, void* w) {
|
||||||
|
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
||||||
|
TouchCtrlsScreen_Show();
|
||||||
|
}
|
||||||
|
static void TouchMore_Menu(void* s, void* w) {
|
||||||
|
Gui_Remove((struct Screen*)&TouchMoreScreen);
|
||||||
|
PauseScreen_Show();
|
||||||
|
}
|
||||||
|
|
||||||
static const struct SimpleButtonDesc touchMore_btns[8] = {
|
static const struct SimpleButtonDesc touchMore_btns[TOUCHMORE_BTNS] = {
|
||||||
{ -160, -50, "Chat", TouchMore_Chat },
|
{ 0, -50, "Screenshot", TouchMore_Take },
|
||||||
{ -160, 0, "Speed", TouchMore_Speed },
|
{ 0, 0, "Fullscreen", TouchMore_Screen },
|
||||||
{ -160, 50, "Fly", TouchMore_Fly },
|
{ 0, 50, "Controls", TouchMore_Ctrls },
|
||||||
{ -160, 100, "Menu", TouchMore_Menu },
|
{ 0, 100, "Main menu", TouchMore_Menu }
|
||||||
{ 160, -50, "Screenshot", TouchMore_Take },
|
|
||||||
{ 160, 0, "Fullscreen", TouchMore_Screen },
|
|
||||||
{ 160, 50, "Noclip", TouchMore_Noclip },
|
|
||||||
{ 160, 100, "Fog", TouchMore_Fog }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static void TouchMoreScreen_ContextRecreated(void* screen) {
|
static void TouchMoreScreen_ContextRecreated(void* screen) {
|
||||||
@ -3602,13 +3682,13 @@ static void TouchMoreScreen_ContextRecreated(void* screen) {
|
|||||||
Menu_MakeTitleFont(&titleFont);
|
Menu_MakeTitleFont(&titleFont);
|
||||||
Screen_CreateVb(screen);
|
Screen_CreateVb(screen);
|
||||||
|
|
||||||
Menu_SetButtons(s->btns, &titleFont, touchMore_btns, 8);
|
Menu_SetButtons(s->btns, &titleFont, touchMore_btns, TOUCHMORE_BTNS);
|
||||||
Font_Free(&titleFont);
|
Font_Free(&titleFont);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TouchMoreScreen_Layout(void* screen) {
|
static void TouchMoreScreen_Layout(void* screen) {
|
||||||
struct TouchMoreScreen* s = (struct TouchMoreScreen*)screen;
|
struct TouchMoreScreen* s = (struct TouchMoreScreen*)screen;
|
||||||
Menu_LayoutButtons(s->btns, touchMore_btns, 8);
|
Menu_LayoutButtons(s->btns, touchMore_btns, TOUCHMORE_BTNS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void TouchMoreScreen_Init(void* screen) {
|
static void TouchMoreScreen_Init(void* screen) {
|
||||||
@ -3617,7 +3697,7 @@ static void TouchMoreScreen_Init(void* screen) {
|
|||||||
s->numWidgets = Array_Elems(touchMore_widgets);
|
s->numWidgets = Array_Elems(touchMore_widgets);
|
||||||
s->maxVertices = TOUCHMORE_MAX_VERTICES;
|
s->maxVertices = TOUCHMORE_MAX_VERTICES;
|
||||||
|
|
||||||
Menu_InitButtons(s->btns, 300, touchMore_btns, 8);
|
Menu_InitButtons(s->btns, 400, touchMore_btns, TOUCHMORE_BTNS);
|
||||||
/* TODO: Close button */
|
/* TODO: Close button */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ void UrlWarningOverlay_Show(const cc_string* url);
|
|||||||
void TexIdsOverlay_Show(void);
|
void TexIdsOverlay_Show(void);
|
||||||
void TexPackOverlay_Show(const cc_string* url);
|
void TexPackOverlay_Show(const cc_string* url);
|
||||||
#ifdef CC_BUILD_TOUCH
|
#ifdef CC_BUILD_TOUCH
|
||||||
|
void TouchCtrlsScreen_Show(void);
|
||||||
void TouchMoreScreen_Show(void);
|
void TouchMoreScreen_Show(void);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user