mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 03:55:11 +00:00
Console Overhaul (#490)
Completely redid the console ui to look more like the rest of coop Added log_to_console and djui_console_toggle to lua Made the keybind to activate it the tilda key (~) instead of ctrl+f1
This commit is contained in:
parent
048f4f1fd4
commit
9b502346a7
25 changed files with 180 additions and 49 deletions
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/bash
|
#!/usr/bin/env bash
|
||||||
python3 ./autogen/convert_structs.py $1
|
python3 ./autogen/convert_structs.py $1
|
||||||
python3 ./autogen/convert_functions.py $1
|
python3 ./autogen/convert_functions.py $1
|
||||||
python3 ./autogen/convert_constants.py $1
|
python3 ./autogen/convert_constants.py $1
|
||||||
|
|
|
@ -30,6 +30,7 @@ in_files = [
|
||||||
"src/game/rumble_init.c",
|
"src/game/rumble_init.c",
|
||||||
"src/pc/djui/djui_popup.h",
|
"src/pc/djui/djui_popup.h",
|
||||||
"src/pc/network/network_utils.h",
|
"src/pc/network/network_utils.h",
|
||||||
|
"src/pc/djui/djui_console.h",
|
||||||
"src/pc/djui/djui_chat_message.h",
|
"src/pc/djui/djui_chat_message.h",
|
||||||
"src/game/interaction.h",
|
"src/game/interaction.h",
|
||||||
"src/game/level_info.h",
|
"src/game/level_info.h",
|
||||||
|
@ -91,8 +92,9 @@ override_disallowed_functions = {
|
||||||
"src/game/mario_actions_object.c": [ "^[us]32 act_.*" ],
|
"src/game/mario_actions_object.c": [ "^[us]32 act_.*" ],
|
||||||
"src/game/mario_actions_stationary.c": [ "^[us]32 act_.*" ],
|
"src/game/mario_actions_stationary.c": [ "^[us]32 act_.*" ],
|
||||||
"src/game/mario_actions_submerged.c": [ "^[us]32 act_.*" ],
|
"src/game/mario_actions_submerged.c": [ "^[us]32 act_.*" ],
|
||||||
"src/game/mario_step.h": [ " stub_mario_step", "transfer_bully_speed"],
|
"src/game/mario_step.h": [ " stub_mario_step", "transfer_bully_speed" ],
|
||||||
"src/game/mario.h": [ " init_mario" ],
|
"src/game/mario.h": [ " init_mario" ],
|
||||||
|
"src/pc/djui/djui_console.h": [ " djui_console_create", "djui_console_message_create" ],
|
||||||
"src/pc/djui/djui_chat_message.h": [ "create_from" ],
|
"src/pc/djui/djui_chat_message.h": [ "create_from" ],
|
||||||
"src/game/interaction.h": [ "process_interactions", "_handle_" ],
|
"src/game/interaction.h": [ "process_interactions", "_handle_" ],
|
||||||
"src/game/sound_init.h": [ "_loop_", "thread4_", "set_sound_mode" ],
|
"src/game/sound_init.h": [ "_loop_", "thread4_", "set_sound_mode" ],
|
||||||
|
|
|
@ -3627,6 +3627,11 @@ function djui_chat_message_create(message)
|
||||||
-- ...
|
-- ...
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @return nil
|
||||||
|
function djui_console_toggle()
|
||||||
|
-- ...
|
||||||
|
end
|
||||||
|
|
||||||
--- @return number
|
--- @return number
|
||||||
function djui_hud_get_mouse_x()
|
function djui_hud_get_mouse_x()
|
||||||
-- ...
|
-- ...
|
||||||
|
@ -8774,6 +8779,12 @@ function is_transition_playing()
|
||||||
-- ...
|
-- ...
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param message string
|
||||||
|
--- @return nil
|
||||||
|
function log_to_console(message)
|
||||||
|
-- ...
|
||||||
|
end
|
||||||
|
|
||||||
--- @param name string
|
--- @param name string
|
||||||
--- @param level integer
|
--- @param level integer
|
||||||
--- @param area integer
|
--- @param area integer
|
||||||
|
|
|
@ -2050,6 +2050,30 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
---
|
||||||
|
# functions from djui_console.h
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
## [djui_console_toggle](#djui_console_toggle)
|
||||||
|
|
||||||
|
### Lua Example
|
||||||
|
`djui_console_toggle()`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
- None
|
||||||
|
|
||||||
|
### Returns
|
||||||
|
- None
|
||||||
|
|
||||||
|
### C Prototype
|
||||||
|
`void djui_console_toggle(void);`
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
---
|
---
|
||||||
# functions from djui_hud_utils.h
|
# functions from djui_hud_utils.h
|
||||||
|
|
||||||
|
|
|
@ -1261,6 +1261,26 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
## [log_to_console](#log_to_console)
|
||||||
|
|
||||||
|
### Lua Example
|
||||||
|
`log_to_console(message)`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
| Field | Type |
|
||||||
|
| ----- | ---- |
|
||||||
|
| message | `string` |
|
||||||
|
|
||||||
|
### Returns
|
||||||
|
- None
|
||||||
|
|
||||||
|
### C Prototype
|
||||||
|
`void log_to_console(const char* message);`
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
## [movtexqc_register](#movtexqc_register)
|
## [movtexqc_register](#movtexqc_register)
|
||||||
|
|
||||||
### Lua Example
|
### Lua Example
|
||||||
|
|
|
@ -716,6 +716,11 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
- djui_console.h
|
||||||
|
- [djui_console_toggle](functions-3.md#djui_console_toggle)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
- djui_hud_utils.h
|
- djui_hud_utils.h
|
||||||
- [djui_hud_get_mouse_x](functions-3.md#djui_hud_get_mouse_x)
|
- [djui_hud_get_mouse_x](functions-3.md#djui_hud_get_mouse_x)
|
||||||
- [djui_hud_get_mouse_y](functions-3.md#djui_hud_get_mouse_y)
|
- [djui_hud_get_mouse_y](functions-3.md#djui_hud_get_mouse_y)
|
||||||
|
@ -1631,6 +1636,7 @@
|
||||||
- [hud_show](functions-5.md#hud_show)
|
- [hud_show](functions-5.md#hud_show)
|
||||||
- [is_game_paused](functions-5.md#is_game_paused)
|
- [is_game_paused](functions-5.md#is_game_paused)
|
||||||
- [is_transition_playing](functions-5.md#is_transition_playing)
|
- [is_transition_playing](functions-5.md#is_transition_playing)
|
||||||
|
- [log_to_console](functions-5.md#log_to_console)
|
||||||
- [movtexqc_register](functions-5.md#movtexqc_register)
|
- [movtexqc_register](functions-5.md#movtexqc_register)
|
||||||
- [play_transition](functions-5.md#play_transition)
|
- [play_transition](functions-5.md#play_transition)
|
||||||
- [save_file_get_using_backup_slot](functions-5.md#save_file_get_using_backup_slot)
|
- [save_file_get_using_backup_slot](functions-5.md#save_file_get_using_backup_slot)
|
||||||
|
|
|
@ -102,6 +102,7 @@ D_LEFT = "D-Pad vlevo"
|
||||||
D_RIGHT = "D-Pad vpravo"
|
D_RIGHT = "D-Pad vpravo"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Řídicí panel"
|
||||||
PREV = "Před Stránka"
|
PREV = "Před Stránka"
|
||||||
NEXT = "Další Strana"
|
NEXT = "Další Strana"
|
||||||
|
|
||||||
|
@ -245,6 +246,9 @@ MENU_OPTIONS = "Nastavení hlavního menu"
|
||||||
DEBUG = "Debug"
|
DEBUG = "Debug"
|
||||||
LANGUAGE = "Jazyk"
|
LANGUAGE = "Jazyk"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "ŘÍDICÍ PANEL"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODY"
|
MODS = "MODY"
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ D_LEFT = "D Links"
|
||||||
D_RIGHT = "D Rechts"
|
D_RIGHT = "D Rechts"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Logboek"
|
||||||
PREV = "Vori Bladzijde"
|
PREV = "Vori Bladzijde"
|
||||||
NEXT = "Volg Bladzijde"
|
NEXT = "Volg Bladzijde"
|
||||||
|
|
||||||
|
@ -244,6 +245,9 @@ MENU_OPTIONS = "Menu Instellingen"
|
||||||
DEBUG = "Debug"
|
DEBUG = "Debug"
|
||||||
LANGUAGE = "Taal"
|
LANGUAGE = "Taal"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "LOGBOEK"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODS"
|
MODS = "MODS"
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ D_LEFT = "D Left"
|
||||||
D_RIGHT = "D Right"
|
D_RIGHT = "D Right"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Console"
|
||||||
PREV = "Prev Page"
|
PREV = "Prev Page"
|
||||||
NEXT = "Next Page"
|
NEXT = "Next Page"
|
||||||
|
|
||||||
|
@ -245,6 +246,9 @@ MENU_OPTIONS = "Menu Options"
|
||||||
DEBUG = "Debug"
|
DEBUG = "Debug"
|
||||||
LANGUAGE = "Language"
|
LANGUAGE = "Language"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "CONSOLE"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODS"
|
MODS = "MODS"
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ D_LEFT = "D Gauche"
|
||||||
D_RIGHT = "D Droite"
|
D_RIGHT = "D Droite"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Console"
|
||||||
PREV = "Page Préc"
|
PREV = "Page Préc"
|
||||||
NEXT = "Page Suiv"
|
NEXT = "Page Suiv"
|
||||||
|
|
||||||
|
@ -245,6 +246,9 @@ MENU_OPTIONS = "Options du menu"
|
||||||
DEBUG = "Débogage"
|
DEBUG = "Débogage"
|
||||||
LANGUAGE = "Langue"
|
LANGUAGE = "Langue"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "CONSOLE"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODS"
|
MODS = "MODS"
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ D_LEFT = "D Links"
|
||||||
D_RIGHT = "D Rechts"
|
D_RIGHT = "D Rechts"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Konsole"
|
||||||
PREV = "Vorh Seite"
|
PREV = "Vorh Seite"
|
||||||
NEXT = "Näch Seite"
|
NEXT = "Näch Seite"
|
||||||
|
|
||||||
|
@ -245,6 +246,9 @@ MENU_OPTIONS = "Menü Optionen"
|
||||||
DEBUG = "Debug"
|
DEBUG = "Debug"
|
||||||
LANGUAGE = "Sprache"
|
LANGUAGE = "Sprache"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "KONSOLE"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODIFIKATIONEN"
|
MODS = "MODIFIKATIONEN"
|
||||||
|
|
||||||
|
|
|
@ -100,6 +100,7 @@ D_LEFT = "D Sinistra"
|
||||||
D_RIGHT = "D Destra"
|
D_RIGHT = "D Destra"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Consolle"
|
||||||
PREV = "Pagina Prec"
|
PREV = "Pagina Prec"
|
||||||
NEXT = "Pagina Succ"
|
NEXT = "Pagina Succ"
|
||||||
|
|
||||||
|
@ -242,6 +243,9 @@ MENU_OPTIONS = "Opzioni Menù"
|
||||||
DEBUG = "Debug"
|
DEBUG = "Debug"
|
||||||
LANGUAGE = "Lingua"
|
LANGUAGE = "Lingua"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "CONSOLE"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODS"
|
MODS = "MODS"
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ D_LEFT = "D LEFT"
|
||||||
D_RIGHT = "D RIGHT"
|
D_RIGHT = "D RIGHT"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Console"
|
||||||
PREV = "Página Ante"
|
PREV = "Página Ante"
|
||||||
NEXT = "Próx Página"
|
NEXT = "Próx Página"
|
||||||
|
|
||||||
|
@ -245,6 +246,9 @@ MENU_OPTIONS = "Opções de Menu"
|
||||||
DEBUG = "Debug"
|
DEBUG = "Debug"
|
||||||
LANGUAGE = "Idioma"
|
LANGUAGE = "Idioma"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "CONSOLE"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODS"
|
MODS = "MODS"
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ D_LEFT = "Крестовина влево"
|
||||||
D_RIGHT = "Крестовина вправо"
|
D_RIGHT = "Крестовина вправо"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "пульт"
|
||||||
PREV = "Пред Cтраница"
|
PREV = "Пред Cтраница"
|
||||||
NEXT = "След Cтраница"
|
NEXT = "След Cтраница"
|
||||||
|
|
||||||
|
@ -244,6 +245,9 @@ MENU_OPTIONS = "Параметры меню"
|
||||||
DEBUG = "Отладка"
|
DEBUG = "Отладка"
|
||||||
LANGUAGE = "Язык"
|
LANGUAGE = "Язык"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "пульт"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODS"
|
MODS = "MODS"
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ D_LEFT = "Cruz Izquierda"
|
||||||
D_RIGHT = "Cruz Derecha"
|
D_RIGHT = "Cruz Derecha"
|
||||||
X = "X"
|
X = "X"
|
||||||
Y = "Y"
|
Y = "Y"
|
||||||
|
CONSOLE = "Consola"
|
||||||
PREV = "Pagina Ante"
|
PREV = "Pagina Ante"
|
||||||
NEXT = "Sigu Página"
|
NEXT = "Sigu Página"
|
||||||
|
|
||||||
|
@ -245,6 +246,9 @@ MENU_OPTIONS = "Opciones del menú"
|
||||||
DEBUG = "Depuración"
|
DEBUG = "Depuración"
|
||||||
LANGUAGE = "Idioma"
|
LANGUAGE = "Idioma"
|
||||||
|
|
||||||
|
[CONSOLE]
|
||||||
|
CONSOLE = "CONSOLA"
|
||||||
|
|
||||||
[MODLIST]
|
[MODLIST]
|
||||||
MODS = "MODS"
|
MODS = "MODS"
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,7 @@ unsigned int configKeyDUp[MAX_BINDS] = { 0x0147, 0x100b, VK_INVALID
|
||||||
unsigned int configKeyDDown[MAX_BINDS] = { 0x014f, 0x100c, VK_INVALID };
|
unsigned int configKeyDDown[MAX_BINDS] = { 0x014f, 0x100c, VK_INVALID };
|
||||||
unsigned int configKeyDLeft[MAX_BINDS] = { 0x0153, 0x100d, VK_INVALID };
|
unsigned int configKeyDLeft[MAX_BINDS] = { 0x0153, 0x100d, VK_INVALID };
|
||||||
unsigned int configKeyDRight[MAX_BINDS] = { 0x0151, 0x100e, VK_INVALID };
|
unsigned int configKeyDRight[MAX_BINDS] = { 0x0151, 0x100e, VK_INVALID };
|
||||||
|
unsigned int configKeyConsole[MAX_BINDS] = { 0x0029, 0x003B, VK_INVALID };
|
||||||
unsigned int configKeyPrevPage[MAX_BINDS] = { 0x0016, VK_INVALID, VK_INVALID };
|
unsigned int configKeyPrevPage[MAX_BINDS] = { 0x0016, VK_INVALID, VK_INVALID };
|
||||||
unsigned int configKeyNextPage[MAX_BINDS] = { 0x0018, VK_INVALID, VK_INVALID };
|
unsigned int configKeyNextPage[MAX_BINDS] = { 0x0018, VK_INVALID, VK_INVALID };
|
||||||
unsigned int configStickDeadzone = 16; // 16*DEADZONE_STEP=4960 (the original default deadzone)
|
unsigned int configStickDeadzone = 16; // 16*DEADZONE_STEP=4960 (the original default deadzone)
|
||||||
|
|
|
@ -56,6 +56,7 @@ extern unsigned int configKeyDUp[];
|
||||||
extern unsigned int configKeyDDown[];
|
extern unsigned int configKeyDDown[];
|
||||||
extern unsigned int configKeyDLeft[];
|
extern unsigned int configKeyDLeft[];
|
||||||
extern unsigned int configKeyDRight[];
|
extern unsigned int configKeyDRight[];
|
||||||
|
extern unsigned int configKeyConsole[];
|
||||||
extern unsigned int configKeyPrevPage[];
|
extern unsigned int configKeyPrevPage[];
|
||||||
extern unsigned int configKeyNextPage[];
|
extern unsigned int configKeyNextPage[];
|
||||||
extern unsigned int configStickDeadzone;
|
extern unsigned int configStickDeadzone;
|
||||||
|
|
|
@ -135,7 +135,6 @@ void djui_render(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
djui_cursor_update();
|
djui_cursor_update();
|
||||||
djui_base_render(&gDjuiConsole->base);
|
|
||||||
djui_interactable_update();
|
djui_interactable_update();
|
||||||
djui_gfx_displaylist_end();
|
djui_gfx_displaylist_end();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "djui.h"
|
#include "djui.h"
|
||||||
|
#include "djui_panel_menu.h"
|
||||||
#include "djui_console.h"
|
#include "djui_console.h"
|
||||||
|
|
||||||
#define MAX_CONSOLE_MESSAGES 500
|
#define MAX_CONSOLE_MESSAGES 500
|
||||||
|
@ -10,26 +11,14 @@ bool gDjuiConsoleFocus = false;
|
||||||
char gDjuiConsoleTmpBuffer[CONSOLE_MAX_TMP_BUFFER] = "";
|
char gDjuiConsoleTmpBuffer[CONSOLE_MAX_TMP_BUFFER] = "";
|
||||||
u32 sDjuiConsoleMessages = 0;
|
u32 sDjuiConsoleMessages = 0;
|
||||||
|
|
||||||
bool djui_console_render(struct DjuiBase* base) {
|
|
||||||
djui_base_set_size(base, gDjuiRoot->base.width.value, gDjuiRoot->base.height.value * 0.6f);
|
|
||||||
|
|
||||||
djui_rect_render(base);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void djui_console_destroy(struct DjuiBase* base) {
|
|
||||||
struct DjuiConsole* console = (struct DjuiConsole*)base;
|
|
||||||
free(console);
|
|
||||||
}
|
|
||||||
|
|
||||||
void djui_console_toggle(void) {
|
void djui_console_toggle(void) {
|
||||||
if (gDjuiConsole == NULL) { return; }
|
if (gDjuiConsole == NULL) { return; }
|
||||||
gDjuiConsoleFocus = !gDjuiConsoleFocus;
|
gDjuiConsoleFocus = !gDjuiConsoleFocus;
|
||||||
djui_base_set_visible(&gDjuiConsole->base, gDjuiConsoleFocus);
|
djui_base_set_visible(&gDjuiConsole->panel->base, gDjuiConsoleFocus);
|
||||||
|
|
||||||
if (gDjuiConsoleFocus) {
|
if (gDjuiConsoleFocus) {
|
||||||
if (gDjuiChatBoxFocus) { djui_chat_box_toggle(); }
|
if (gDjuiChatBoxFocus) { djui_chat_box_toggle(); }
|
||||||
djui_interactable_set_input_focus(&gDjuiConsole->base);
|
djui_interactable_set_input_focus(&gDjuiConsole->panel->base);
|
||||||
} else {
|
} else {
|
||||||
djui_interactable_set_input_focus(NULL);
|
djui_interactable_set_input_focus(NULL);
|
||||||
}
|
}
|
||||||
|
@ -37,19 +26,20 @@ void djui_console_toggle(void) {
|
||||||
|
|
||||||
static bool djui_console_on_key_down(UNUSED struct DjuiBase* base, int scancode) {
|
static bool djui_console_on_key_down(UNUSED struct DjuiBase* base, int scancode) {
|
||||||
if (gDjuiConsole == NULL) { return false; }
|
if (gDjuiConsole == NULL) { return false; }
|
||||||
f32 yMax = gDjuiConsole->base.comp.height - gDjuiConsole->flow->base.height.value;
|
struct DjuiBase* body = djui_three_panel_get_body(gDjuiConsole->panel);
|
||||||
|
f32 yMax = body->height.value - gDjuiConsole->flow->base.height.value;
|
||||||
|
|
||||||
f32* yValue = &gDjuiConsole->flow->base.y.value;
|
f32* yValue = &gDjuiConsole->flow->base.y.value;
|
||||||
bool canScrollUp = (*yValue > yMax);
|
bool canScrollUp = (*yValue > yMax);
|
||||||
bool canScrollDown = (*yValue < 0);
|
bool canScrollDown = (*yValue < 0);
|
||||||
f32 pageAmount = gDjuiConsole->base.comp.height * 3.0f / 4.0f;
|
f32 pageAmount = body->height.value;
|
||||||
|
|
||||||
switch (scancode) {
|
switch (scancode) {
|
||||||
case SCANCODE_UP:
|
case SCANCODE_UP:
|
||||||
if (canScrollUp) { *yValue = fmax(*yValue - 15, yMax); }
|
if (canScrollUp) { *yValue = fmax(*yValue - 30, yMax); }
|
||||||
break;
|
break;
|
||||||
case SCANCODE_DOWN:
|
case SCANCODE_DOWN:
|
||||||
if (canScrollDown) { *yValue = fmin(*yValue + 15, 0); }
|
if (canScrollDown) { *yValue = fmin(*yValue + 30, 0); }
|
||||||
break;
|
break;
|
||||||
case SCANCODE_PAGE_UP:
|
case SCANCODE_PAGE_UP:
|
||||||
if (canScrollUp) { *yValue = fmax(*yValue - pageAmount, yMax); }
|
if (canScrollUp) { *yValue = fmax(*yValue - pageAmount, yMax); }
|
||||||
|
@ -66,10 +56,10 @@ static bool djui_console_on_key_down(UNUSED struct DjuiBase* base, int scancode)
|
||||||
|
|
||||||
void djui_console_message_create(char* message) {
|
void djui_console_message_create(char* message) {
|
||||||
if (!gDjuiConsole) { return; }
|
if (!gDjuiConsole) { return; }
|
||||||
djui_base_compute_tree(&gDjuiConsole->base);
|
djui_base_compute_tree(&gDjuiConsole->panel->base);
|
||||||
struct DjuiBase* cfBase = &gDjuiConsole->flow->base;
|
struct DjuiBase* cfBase = &gDjuiConsole->flow->base;
|
||||||
|
|
||||||
f32 maxTextWidth = gDjuiConsole->base.comp.width - gDjuiConsole->base.padding.left.value - gDjuiConsole->base.padding.right.value;
|
f32 maxTextWidth = gDjuiConsole->panel->base.comp.width - gDjuiConsole->panel->base.padding.left.value - gDjuiConsole->panel->base.padding.right.value - 20;
|
||||||
|
|
||||||
struct DjuiText* text = djui_text_create(cfBase, message);
|
struct DjuiText* text = djui_text_create(cfBase, message);
|
||||||
struct DjuiBase* tBase = &text->base;
|
struct DjuiBase* tBase = &text->base;
|
||||||
|
@ -107,25 +97,25 @@ void djui_console_message_create(char* message) {
|
||||||
|
|
||||||
struct DjuiConsole* djui_console_create(void) {
|
struct DjuiConsole* djui_console_create(void) {
|
||||||
if (gDjuiConsole != NULL) {
|
if (gDjuiConsole != NULL) {
|
||||||
djui_base_destroy(&gDjuiConsole->base);
|
djui_base_destroy(&gDjuiConsole->panel->base);
|
||||||
gDjuiConsole = NULL;
|
gDjuiConsole = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct DjuiConsole* console = calloc(1, sizeof(struct DjuiConsole));
|
struct DjuiConsole* console = calloc(1, sizeof(struct DjuiConsole));
|
||||||
struct DjuiBase* base = &console->base;
|
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONSOLE, CONSOLE));
|
||||||
|
djui_three_panel_set_body_size(panel, 750);
|
||||||
|
console->panel = panel;
|
||||||
|
|
||||||
djui_base_init(NULL, base, djui_console_render, djui_console_destroy);
|
djui_base_set_alignment(&panel->base, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
|
||||||
djui_base_set_size_type(base, DJUI_SVT_ABSOLUTE, DJUI_SVT_ABSOLUTE);
|
djui_base_set_size_type(&panel->base, DJUI_SVT_ABSOLUTE, DJUI_SVT_ABSOLUTE);
|
||||||
djui_base_set_size(base, gDjuiRoot->base.width.value, gDjuiRoot->base.height.value * 0.6f);
|
djui_base_set_size(&panel->base, 850, 750 + (32 + 16) + 32 + 32);
|
||||||
djui_base_set_alignment(base, DJUI_HALIGN_LEFT, DJUI_VALIGN_TOP);
|
djui_base_set_visible(&panel->base, false);
|
||||||
djui_base_set_color(base, 0, 0, 0, 250);
|
|
||||||
djui_base_set_padding(base, 0, 8, 8, 8);
|
|
||||||
djui_base_set_visible(base, false);
|
|
||||||
|
|
||||||
djui_interactable_create(base, NULL);
|
djui_interactable_create(&panel->base, NULL);
|
||||||
djui_interactable_hook_key(base, djui_console_on_key_down, NULL);
|
djui_interactable_hook_key(&panel->base, djui_console_on_key_down, NULL);
|
||||||
|
|
||||||
struct DjuiFlowLayout* flow = djui_flow_layout_create(base);
|
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||||
|
struct DjuiFlowLayout* flow = djui_flow_layout_create(body);
|
||||||
struct DjuiBase* cfBase = &flow->base;
|
struct DjuiBase* cfBase = &flow->base;
|
||||||
djui_base_set_alignment(cfBase, DJUI_HALIGN_LEFT, DJUI_VALIGN_BOTTOM);
|
djui_base_set_alignment(cfBase, DJUI_HALIGN_LEFT, DJUI_VALIGN_BOTTOM);
|
||||||
djui_base_set_location(cfBase, 0, 0);
|
djui_base_set_location(cfBase, 0, 0);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include "djui.h"
|
#include "djui.h"
|
||||||
|
|
||||||
struct DjuiConsole {
|
struct DjuiConsole {
|
||||||
struct DjuiBase base;
|
struct DjuiThreePanel* panel;
|
||||||
struct DjuiFlowLayout* flow;
|
struct DjuiFlowLayout* flow;
|
||||||
bool scrolling;
|
bool scrolling;
|
||||||
};
|
};
|
||||||
|
|
|
@ -18,8 +18,6 @@
|
||||||
#define CALL_CALLBACK(x) if (base->interactable->x != NULL) { base->interactable->x(base); }
|
#define CALL_CALLBACK(x) if (base->interactable->x != NULL) { base->interactable->x(base); }
|
||||||
#define CALL_CALLBACK_PARAM(x, y) if (base->interactable->x != NULL) { base->interactable->x(base, y); }
|
#define CALL_CALLBACK_PARAM(x, y) if (base->interactable->x != NULL) { base->interactable->x(base, y); }
|
||||||
|
|
||||||
#define SCANCODE_F1 59
|
|
||||||
|
|
||||||
enum PadHoldDirection { PAD_HOLD_DIR_NONE, PAD_HOLD_DIR_UP, PAD_HOLD_DIR_DOWN, PAD_HOLD_DIR_LEFT, PAD_HOLD_DIR_RIGHT };
|
enum PadHoldDirection { PAD_HOLD_DIR_NONE, PAD_HOLD_DIR_UP, PAD_HOLD_DIR_DOWN, PAD_HOLD_DIR_LEFT, PAD_HOLD_DIR_RIGHT };
|
||||||
static enum PadHoldDirection sKeyboardHoldDirection = PAD_HOLD_DIR_NONE;
|
static enum PadHoldDirection sKeyboardHoldDirection = PAD_HOLD_DIR_NONE;
|
||||||
static u16 sKeyboardButtons = 0;
|
static u16 sKeyboardButtons = 0;
|
||||||
|
@ -35,7 +33,6 @@ bool gInteractableOverridePad = false;
|
||||||
OSContPad gInteractablePad = { 0 };
|
OSContPad gInteractablePad = { 0 };
|
||||||
static OSContPad sLastInteractablePad = { 0 };
|
static OSContPad sLastInteractablePad = { 0 };
|
||||||
static int sLastMouseButtons = 0;
|
static int sLastMouseButtons = 0;
|
||||||
static bool sControlDown = false;
|
|
||||||
|
|
||||||
static void djui_interactable_update_style(struct DjuiBase* base) {
|
static void djui_interactable_update_style(struct DjuiBase* base) {
|
||||||
if (base == NULL) { return; }
|
if (base == NULL) { return; }
|
||||||
|
@ -184,7 +181,7 @@ void djui_interactable_set_binding(struct DjuiBase* base) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void djui_interactable_set_input_focus(struct DjuiBase* base) {
|
void djui_interactable_set_input_focus(struct DjuiBase* base) {
|
||||||
if (gDjuiConsoleFocus && base != &gDjuiConsole->base) {
|
if (gDjuiConsoleFocus && base != &gDjuiConsole->panel->base) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,10 +200,8 @@ bool djui_interactable_on_key_down(int scancode) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scancode == SCANCODE_CONTROL_LEFT) {
|
for (int i = 0; i < MAX_BINDS; i++) {
|
||||||
sControlDown = true;
|
if (scancode == (int)configKeyConsole[i]) { djui_console_toggle(); }
|
||||||
} else if (sControlDown && scancode == SCANCODE_F1) {
|
|
||||||
djui_console_toggle();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool keyFocused = (gInteractableFocus != NULL)
|
bool keyFocused = (gInteractableFocus != NULL)
|
||||||
|
@ -305,10 +300,6 @@ void djui_interactable_on_key_up(int scancode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scancode == SCANCODE_CONTROL_LEFT) {
|
|
||||||
sControlDown = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keyFocused) {
|
if (keyFocused) {
|
||||||
gInteractableFocus->interactable->on_key_up(gInteractableFocus, scancode);
|
gInteractableFocus->interactable->on_key_up(gInteractableFocus, scancode);
|
||||||
sKeyboardHoldDirection = PAD_HOLD_DIR_NONE;
|
sKeyboardHoldDirection = PAD_HOLD_DIR_NONE;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include "src/pc/configfile.h"
|
#include "src/pc/configfile.h"
|
||||||
|
|
||||||
void djui_panel_controls_extra_create(struct DjuiBase* caller) {
|
void djui_panel_controls_extra_create(struct DjuiBase* caller) {
|
||||||
f32 bindBodyHeight = 28 * 10 + 1 * 7;
|
f32 bindBodyHeight = 28 * 11 + 1 * 10;
|
||||||
|
|
||||||
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONTROLS, CONTROLS));
|
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONTROLS, CONTROLS));
|
||||||
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||||
|
@ -23,6 +23,7 @@ void djui_panel_controls_extra_create(struct DjuiBase* caller) {
|
||||||
djui_bind_create(&bindBody->base, DLANG(CONTROLS, D_RIGHT), configKeyDRight);
|
djui_bind_create(&bindBody->base, DLANG(CONTROLS, D_RIGHT), configKeyDRight);
|
||||||
djui_bind_create(&bindBody->base, DLANG(CONTROLS, X), configKeyX);
|
djui_bind_create(&bindBody->base, DLANG(CONTROLS, X), configKeyX);
|
||||||
djui_bind_create(&bindBody->base, DLANG(CONTROLS, Y), configKeyY);
|
djui_bind_create(&bindBody->base, DLANG(CONTROLS, Y), configKeyY);
|
||||||
|
djui_bind_create(&bindBody->base, DLANG(CONTROLS, CONSOLE), configKeyConsole);
|
||||||
djui_bind_create(&bindBody->base, DLANG(CONTROLS, PREV), configKeyPrevPage);
|
djui_bind_create(&bindBody->base, DLANG(CONTROLS, PREV), configKeyPrevPage);
|
||||||
djui_bind_create(&bindBody->base, DLANG(CONTROLS, NEXT), configKeyNextPage);
|
djui_bind_create(&bindBody->base, DLANG(CONTROLS, NEXT), configKeyNextPage);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "src/game/mario.h"
|
#include "src/game/mario.h"
|
||||||
#include "src/pc/djui/djui_popup.h"
|
#include "src/pc/djui/djui_popup.h"
|
||||||
#include "src/pc/network/network_utils.h"
|
#include "src/pc/network/network_utils.h"
|
||||||
|
#include "src/pc/djui/djui_console.h"
|
||||||
#include "src/pc/djui/djui_chat_message.h"
|
#include "src/pc/djui/djui_chat_message.h"
|
||||||
#include "src/game/interaction.h"
|
#include "src/game/interaction.h"
|
||||||
#include "src/game/level_info.h"
|
#include "src/game/level_info.h"
|
||||||
|
@ -12064,6 +12065,25 @@ int smlua_func_djui_chat_message_create(lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////
|
||||||
|
// djui_console.h //
|
||||||
|
////////////////////
|
||||||
|
|
||||||
|
int smlua_func_djui_console_toggle(UNUSED lua_State* L) {
|
||||||
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
int top = lua_gettop(L);
|
||||||
|
if (top != 0) {
|
||||||
|
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "djui_console_toggle", 0, top);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
djui_console_toggle();
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////
|
//////////////////////
|
||||||
// djui_hud_utils.h //
|
// djui_hud_utils.h //
|
||||||
//////////////////////
|
//////////////////////
|
||||||
|
@ -28953,6 +28973,23 @@ int smlua_func_is_transition_playing(UNUSED lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int smlua_func_log_to_console(lua_State* L) {
|
||||||
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
int top = lua_gettop(L);
|
||||||
|
if (top != 1) {
|
||||||
|
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "log_to_console", 1, top);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* message = smlua_to_string(L, 1);
|
||||||
|
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "log_to_console"); return 0; }
|
||||||
|
|
||||||
|
log_to_console(message);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int smlua_func_movtexqc_register(lua_State* L) {
|
int smlua_func_movtexqc_register(lua_State* L) {
|
||||||
if (L == NULL) { return 0; }
|
if (L == NULL) { return 0; }
|
||||||
|
|
||||||
|
@ -31630,6 +31667,9 @@ void smlua_bind_functions_autogen(void) {
|
||||||
// djui_chat_message.h
|
// djui_chat_message.h
|
||||||
smlua_bind_function(L, "djui_chat_message_create", smlua_func_djui_chat_message_create);
|
smlua_bind_function(L, "djui_chat_message_create", smlua_func_djui_chat_message_create);
|
||||||
|
|
||||||
|
// djui_console.h
|
||||||
|
smlua_bind_function(L, "djui_console_toggle", smlua_func_djui_console_toggle);
|
||||||
|
|
||||||
// djui_hud_utils.h
|
// djui_hud_utils.h
|
||||||
smlua_bind_function(L, "djui_hud_get_mouse_x", smlua_func_djui_hud_get_mouse_x);
|
smlua_bind_function(L, "djui_hud_get_mouse_x", smlua_func_djui_hud_get_mouse_x);
|
||||||
smlua_bind_function(L, "djui_hud_get_mouse_y", smlua_func_djui_hud_get_mouse_y);
|
smlua_bind_function(L, "djui_hud_get_mouse_y", smlua_func_djui_hud_get_mouse_y);
|
||||||
|
@ -32489,6 +32529,7 @@ void smlua_bind_functions_autogen(void) {
|
||||||
smlua_bind_function(L, "hud_show", smlua_func_hud_show);
|
smlua_bind_function(L, "hud_show", smlua_func_hud_show);
|
||||||
smlua_bind_function(L, "is_game_paused", smlua_func_is_game_paused);
|
smlua_bind_function(L, "is_game_paused", smlua_func_is_game_paused);
|
||||||
smlua_bind_function(L, "is_transition_playing", smlua_func_is_transition_playing);
|
smlua_bind_function(L, "is_transition_playing", smlua_func_is_transition_playing);
|
||||||
|
smlua_bind_function(L, "log_to_console", smlua_func_log_to_console);
|
||||||
smlua_bind_function(L, "movtexqc_register", smlua_func_movtexqc_register);
|
smlua_bind_function(L, "movtexqc_register", smlua_func_movtexqc_register);
|
||||||
smlua_bind_function(L, "play_transition", smlua_func_play_transition);
|
smlua_bind_function(L, "play_transition", smlua_func_play_transition);
|
||||||
smlua_bind_function(L, "save_file_get_using_backup_slot", smlua_func_save_file_get_using_backup_slot);
|
smlua_bind_function(L, "save_file_get_using_backup_slot", smlua_func_save_file_get_using_backup_slot);
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include "game/object_list_processor.h"
|
#include "game/object_list_processor.h"
|
||||||
#include "game/rendering_graph_node.h"
|
#include "game/rendering_graph_node.h"
|
||||||
#include "game/level_update.h"
|
#include "game/level_update.h"
|
||||||
|
#include "pc/djui/djui_console.h"
|
||||||
#include "pc/djui/djui_hud_utils.h"
|
#include "pc/djui/djui_hud_utils.h"
|
||||||
#include "game/skybox.h"
|
#include "game/skybox.h"
|
||||||
#include "pc/gfx/gfx_pc.h"
|
#include "pc/gfx/gfx_pc.h"
|
||||||
|
@ -89,6 +90,12 @@ bool hud_is_hidden(void) {
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|
||||||
|
void log_to_console(const char* message) {
|
||||||
|
djui_console_message_create((char*)message);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
|
||||||
extern u8 gLastCollectedStarOrKey;
|
extern u8 gLastCollectedStarOrKey;
|
||||||
s32 get_last_star_or_key(void) {
|
s32 get_last_star_or_key(void) {
|
||||||
return gLastCollectedStarOrKey;
|
return gLastCollectedStarOrKey;
|
||||||
|
|
|
@ -34,6 +34,7 @@ enum HudDisplayFlags {
|
||||||
};
|
};
|
||||||
|
|
||||||
void djui_popup_create_global(const char* message, int lines);
|
void djui_popup_create_global(const char* message, int lines);
|
||||||
|
void log_to_console(const char* message);
|
||||||
bool djui_is_popup_disabled(void);
|
bool djui_is_popup_disabled(void);
|
||||||
void djui_set_popup_disabled_override(bool value);
|
void djui_set_popup_disabled_override(bool value);
|
||||||
void djui_reset_popup_disabled_override(void);
|
void djui_reset_popup_disabled_override(void);
|
||||||
|
|
Loading…
Reference in a new issue