diff --git a/lang/Czech.ini b/lang/Czech.ini index 9ffcd158..d45eeef5 100644 --- a/lang/Czech.ini +++ b/lang/Czech.ini @@ -145,6 +145,7 @@ SHOW_FPS = "Zobrazit FPS" DJUI_THEMES = "TÉMATA DJUI" CENTER = "Střed" DJUI_THEME = "Téma DJUI" +DJUI_SCALE = "Stupnice DJUI" CENTER = "Střed" LIGHT_THEME = "Světlo" DARK_THEME = "Tmavý" diff --git a/lang/Dutch.ini b/lang/Dutch.ini index 4696c7a3..6153063b 100644 --- a/lang/Dutch.ini +++ b/lang/Dutch.ini @@ -145,6 +145,7 @@ SHOW_FPS = "Toon FPS" DJUI_THEMES = "DJUI THEMA'S" CENTER = "Centreren" DJUI_THEME = "DJUI Thema" +DJUI_SCALE = "DJUI Schaal" CENTER = "Centreren" LIGHT_THEME = "Licht" DARK_THEME = "Donker" diff --git a/lang/English.ini b/lang/English.ini index 5aaaf862..fc1635d6 100644 --- a/lang/English.ini +++ b/lang/English.ini @@ -145,6 +145,7 @@ SHOW_FPS = "Show FPS" DJUI_THEMES = "DJUI THEMES" CENTER = "Center" DJUI_THEME = "DJUI Theme" +DJUI_SCALE = "DJUI Scale" CENTER = "Center" LIGHT_THEME = "Light" DARK_THEME = "Dark" diff --git a/lang/French.ini b/lang/French.ini index b8ea35d4..695f9b98 100644 --- a/lang/French.ini +++ b/lang/French.ini @@ -146,6 +146,7 @@ SHOW_FPS = "Afficher FPS" DJUI_THEMES = "THÈMES DJUI" CENTER = "Centrer" DJUI_THEME = "Thème DJUI" +DJUI_SCALE = "Échelle DJUI" CENTER = "Centrer" LIGHT_THEME = "Lumière" DARK_THEME = "Sombre" diff --git a/lang/German.ini b/lang/German.ini index 2eae5816..7bb632e0 100644 --- a/lang/German.ini +++ b/lang/German.ini @@ -145,6 +145,7 @@ SHOW_FPS = "FPS anzeigen" DJUI_THEMES = "DJUI-THEMEN" CENTER = "Zentrieren" DJUI_THEME = "DJUI-Thema" +DJUI_SCALE = "DJUI-Skala" CENTER = "Zentrieren" LIGHT_THEME = "Litch" DARK_THEME = "Dunkel" diff --git a/lang/Italian.ini b/lang/Italian.ini index 0228948d..4ff234db 100644 --- a/lang/Italian.ini +++ b/lang/Italian.ini @@ -143,6 +143,7 @@ SHOW_FPS = "Mostra FPS" DJUI_THEMES = "TEMI DJUI" CENTER = "Centrare" DJUI_THEME = "Tema DJUI" +DJUI_SCALE = "Scala DJUI" CENTER = "Centrare" LIGHT_THEME = "Luce" DARK_THEME = "Scuro" diff --git a/lang/Polish.ini b/lang/Polish.ini index 4c53595c..20a19b12 100644 --- a/lang/Polish.ini +++ b/lang/Polish.ini @@ -145,6 +145,7 @@ SHOW_FPS = "Pokaż FPS" DJUI_THEMES = "TEMATY DJUI" CENTER = "Środek" DJUI_THEME = "Motyw DJUI" +DJUI_SCALE = "Skala DJUI" CENTER = "Środek" LIGHT_THEME = "Światło" DARK_THEME = "Ciemny" diff --git a/lang/Portuguese.ini b/lang/Portuguese.ini index 240e11cb..c7876d7a 100644 --- a/lang/Portuguese.ini +++ b/lang/Portuguese.ini @@ -145,6 +145,7 @@ SHOW_FPS = "Mostrar FPS" DJUI_THEMES = "TEMAS DJUI" CENTER = "Centralizar" DJUI_THEME = "Tema DJUI" +DJUI_SCALE = "Tamanho da DJUI" CENTER = "Centralizar" LIGHT_THEME = "Claro" DARK_THEME = "Escuro" diff --git a/lang/Russian.ini b/lang/Russian.ini index 28eade1c..3a4a0774 100644 --- a/lang/Russian.ini +++ b/lang/Russian.ini @@ -144,6 +144,7 @@ SHOW_FPS = "Показывать FPS" DJUI_THEMES = "ТЕМЫ DJUI" CENTER = "Центр" DJUI_THEME = "Темы DJUI" +DJUI_SCALE = "Шкала DJUI" CENTER = "Центр" LIGHT_THEME = "Свет" DARK_THEME = "Темный" diff --git a/lang/SpanishES.ini b/lang/SpanishES.ini index d132ccb9..90ea9199 100644 --- a/lang/SpanishES.ini +++ b/lang/SpanishES.ini @@ -144,6 +144,7 @@ MUST_RESTART = "Tienes que reiniciar el juego para que algunos cambios surtan ef DJUI_THEMES = "TEMAS de DJUI" CENTER = "Centrar" DJUI_THEME = "Tema de DJUI" +DJUI_SCALE = "Tamaño de DJUI" CENTER = "Centrar" LIGHT_THEME = "Claro" DARK_THEME = "Oscuro" diff --git a/lang/SpanishUS.ini b/lang/SpanishUS.ini index ca6ea338..68251337 100644 --- a/lang/SpanishUS.ini +++ b/lang/SpanishUS.ini @@ -145,6 +145,7 @@ SHOW_FPS = "Mostrar FPS" DJUI_THEMES = "TEMAS de DJUI" CENTER = "Centrar" DJUI_THEME = "Tema de DJUI" +DJUI_SCALE = "Tamaño de DJUI" CENTER = "Centrar" LIGHT_THEME = "Claro" DARK_THEME = "Oscuro" diff --git a/src/pc/configfile.c b/src/pc/configfile.c index d9f54ee0..223303d4 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -162,6 +162,7 @@ char configDestId[MAX_CONFIG_STRING] = "0"; bool configFadeoutDistantSounds = false; unsigned int configDjuiTheme = DJUI_THEME_DARK; bool configDjuiThemeCenter = true; +unsigned int configDjuiScale = 1; bool configCoopCompatibility = true; static const struct ConfigOption options[] = { @@ -277,7 +278,8 @@ static const struct ConfigOption options[] = { {.name = "coopnet_dest", .type = CONFIG_TYPE_STRING, .stringValue = (char*)&configDestId, .maxStringLength = MAX_CONFIG_STRING}, {.name = "fade_distant_sounds", .type = CONFIG_TYPE_BOOL , .boolValue = &configFadeoutDistantSounds}, {.name = "djui_theme", .type = CONFIG_TYPE_UINT , .uintValue = &configDjuiTheme}, - {.name = "djui_theme_center", .type = CONFIG_TYPE_BOOL , .boolValue = &configDjuiThemeCenter} + {.name = "djui_theme_center", .type = CONFIG_TYPE_BOOL , .boolValue = &configDjuiThemeCenter}, + {.name = "djui_scale", .type = CONFIG_TYPE_UINT , .uintValue = &configDjuiScale} }; // FunctionConfigOption functions diff --git a/src/pc/configfile.h b/src/pc/configfile.h index aaad0637..e920b471 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -119,6 +119,7 @@ extern char configDestId[]; extern bool configFadeoutDistantSounds; extern unsigned int configDjuiTheme; extern bool configDjuiThemeCenter; +extern unsigned int configDjuiScale; extern bool configCoopCompatibility; void enable_queued_mods(); diff --git a/src/pc/djui/djui_gfx.c b/src/pc/djui/djui_gfx.c index 6e7ee313..ed4f60e9 100644 --- a/src/pc/djui/djui_gfx.c +++ b/src/pc/djui/djui_gfx.c @@ -47,12 +47,12 @@ const Gfx dl_djui_simple_rect[] = { f32 djui_gfx_get_scale(void) { u32 windowWidth, windowHeight; wm_api->get_dimensions(&windowWidth, &windowHeight); - if (windowHeight < 768) { - return 0.5f; - } else if (windowHeight < 1440) { - return 1.0f; - } else { - return 2.0f; + switch (configDjuiScale) { + case 0: return 0.85f; + case 1: return 1.0f; + case 2: return 1.25f; + case 3: return 1.5f; + default: return 1.0f; } } ///////////////////////////////////////////// diff --git a/src/pc/djui/djui_panel_menu_options.c b/src/pc/djui/djui_panel_menu_options.c index eb4c904d..9d692dc4 100644 --- a/src/pc/djui/djui_panel_menu_options.c +++ b/src/pc/djui/djui_panel_menu_options.c @@ -1,6 +1,8 @@ #include "djui.h" +#include "djui_theme.h" #include "djui_panel.h" #include "djui_panel_menu.h" +#include "djui_panel_pause.h" #include "src/pc/utils/misc.h" #include "src/pc/configfile.h" #include "src/game/level_update.h" @@ -15,6 +17,25 @@ static void djui_panel_level_menu(UNUSED struct DjuiBase* caller) { } } +static void djui_panel_misc_djui_setting_change(UNUSED struct DjuiBase* caller) { + // god this is so hacky and terrible - djoslin0, 2023 + if (gDjuiInMainMenu) { + djui_panel_shutdown(); + gDjuiInMainMenu = true; + djui_panel_main_create(NULL); + djui_panel_options_create(NULL); + djui_panel_misc_create(NULL); + } else if (gDjuiPanelPauseCreated) { + djui_panel_shutdown(); + djui_panel_pause_create(NULL); + djui_panel_options_create(NULL); + djui_panel_misc_create(NULL); + } else { + djui_panel_shutdown(); + } + +} + void djui_panel_main_menu_create(struct DjuiBase* caller) { struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MENU_OPTIONS, MAIN_MENU)); struct DjuiBase* body = djui_three_panel_get_body(panel); @@ -40,6 +61,9 @@ void djui_panel_main_menu_create(struct DjuiBase* caller) { "TTC", "WDW" }; + + char* djuiScaleChoices[4] = {"x0.85", "x1.0", "x1.25", "x1.5"}; + struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(body, DLANG(MENU_OPTIONS, LEVEL), levelChoices, 18, &configMenuLevel, NULL); djui_base_set_enabled(&selectionbox1->base, !(configMenuRandom || configMenuStaffRoll)); sLevelBox = selectionbox1; @@ -49,6 +73,15 @@ void djui_panel_main_menu_create(struct DjuiBase* caller) { djui_checkbox_create(body, DLANG(MENU_OPTIONS, RANDOM_STAGE), &configMenuRandom, djui_panel_level_menu); djui_checkbox_create(body, DLANG(MENU_OPTIONS, PLAY_VANILLA_DEMOS), &configMenuDemos, stop_demo); + char* themeChoices[DJUI_THEME_MAX]; + for (int i = 0; i < DJUI_THEME_MAX; i++) { + themeChoices[i] = (char*)gDjuiThemes[i]->name; + } + djui_selectionbox_create(body, DLANG(DJUI_THEMES, DJUI_THEME), themeChoices, DJUI_THEME_MAX, &configDjuiTheme, djui_panel_misc_djui_setting_change); + + djui_checkbox_create(body, DLANG(DJUI_THEMES, CENTER), &configDjuiThemeCenter, djui_panel_misc_djui_setting_change); + + djui_selectionbox_create(body, DLANG(DJUI_THEMES, DJUI_SCALE), djuiScaleChoices, 4, &configDjuiScale, djui_panel_misc_djui_setting_change); djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back); } diff --git a/src/pc/djui/djui_panel_misc.c b/src/pc/djui/djui_panel_misc.c index 7e493520..7cf07ec9 100644 --- a/src/pc/djui/djui_panel_misc.c +++ b/src/pc/djui/djui_panel_misc.c @@ -1,11 +1,10 @@ #include "djui.h" -#include "djui_theme.h" #include "djui_panel.h" #include "djui_panel_menu.h" #include "djui_panel_menu_options.h" #include "djui_panel_main.h" #include "djui_panel_options.h" -#include "djui_panel_pause.h" +//#include "djui_panel_pause.h" #include "djui_panel_language.h" #include "djui_panel_info.h" #include "pc/utils/misc.h" @@ -25,25 +24,6 @@ static void djui_panel_compatibility_checkbox_on_value_change(UNUSED struct Djui void djui_panel_misc_create(struct DjuiBase* caller); -static void djui_panel_misc_djui_theme_change(UNUSED struct DjuiBase* caller) { - // god this is so hacky and terrible - djoslin0, 2023 - if (gDjuiInMainMenu) { - djui_panel_shutdown(); - gDjuiInMainMenu = true; - djui_panel_main_create(NULL); - djui_panel_options_create(NULL); - djui_panel_misc_create(NULL); - } else if (gDjuiPanelPauseCreated) { - djui_panel_shutdown(); - djui_panel_pause_create(NULL); - djui_panel_options_create(NULL); - djui_panel_misc_create(NULL); - } else { - djui_panel_shutdown(); - } - -} - #ifdef DEVELOPMENT void djui_panel_options_debug_create(struct DjuiBase* caller) { struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MISC, DEBUG_TITLE)); @@ -74,14 +54,6 @@ void djui_panel_misc_create(struct DjuiBase* caller) { djui_checkbox_create(body, DLANG(MISC, PAUSE_IN_SINGLEPLAYER), &configSingleplayerPause, NULL); djui_checkbox_create(body, DLANG(MISC, DISABLE_POPUPS), &configDisablePopups, NULL); - char* themeChoices[DJUI_THEME_MAX]; - for (int i = 0; i < DJUI_THEME_MAX; i++) { - themeChoices[i] = (char*)gDjuiThemes[i]->name; - } - djui_selectionbox_create(body, DLANG(DJUI_THEMES, DJUI_THEME), themeChoices, DJUI_THEME_MAX, &configDjuiTheme, djui_panel_misc_djui_theme_change); - - djui_checkbox_create(body, DLANG(DJUI_THEMES, CENTER), &configDjuiThemeCenter, djui_panel_misc_djui_theme_change); - djui_checkbox_create(body, DLANG(MISC, COOP_COMPATIBILITY), &configCoopCompatibility, djui_panel_compatibility_checkbox_on_value_change); djui_button_create(body, DLANG(MISC, LANGUAGE), DJUI_BUTTON_STYLE_NORMAL, djui_panel_language_create); diff --git a/tools/ido5.3_compiler/usr/lib/libc.so.1 b/tools/ido5.3_compiler/usr/lib/libc.so.1 index 17495ef6..28e2d8e1 100755 Binary files a/tools/ido5.3_compiler/usr/lib/libc.so.1 and b/tools/ido5.3_compiler/usr/lib/libc.so.1 differ