diff --git a/lang/Czech.ini b/lang/Czech.ini index 9a905997a..f712b1930 100644 --- a/lang/Czech.ini +++ b/lang/Czech.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pauza v hře s jedním hráčem" DISABLE_POPUPS = "Vypnout vyskakovací okna" USE_STANDARD_KEY_BINDINGS_CHAT = "Použít ovládání chatu Terminal/CMD" CHAT_WIDTH = "Šířka chatu" +CHAT_WIDTH_TINY = "Drobná" +CHAT_WIDTH_VERY_SMALL = "Velmi malá" +CHAT_WIDTH_SMALL = "Malá" +CHAT_WIDTH_NORMAL = "Normální" +CHAT_WIDTH_BIG = "Velká" +CHAT_WIDTH_VERY_BIG = "Velmi velká" +CHAT_WIDTH_HUGE = "Obrovská" +CHAT_CHAR_COUNTER = "Zobrazit počitadlo znaků chatu" +DISABLE_CHAT_WHEN_CLOSED = "Skrýt chat, když je zavřený" MENU_OPTIONS = "Nastavení hlavního menu" INFORMATION = "Informace" DEBUG = "Debug" diff --git a/lang/Dutch.ini b/lang/Dutch.ini index 0d6f4dfcf..169a26920 100644 --- a/lang/Dutch.ini +++ b/lang/Dutch.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pauzeer in een speler" DISABLE_POPUPS = "Popups uitzetten" USE_STANDARD_KEY_BINDINGS_CHAT = "Terminal/CMD Chatbox besturingen gebruiken" CHAT_WIDTH = "Chatbreedte" +CHAT_WIDTH_TINY = "Zeer klein" +CHAT_WIDTH_VERY_SMALL = "Erg klein" +CHAT_WIDTH_SMALL = "Klein" +CHAT_WIDTH_NORMAL = "Normaal" +CHAT_WIDTH_BIG = "Groot" +CHAT_WIDTH_VERY_BIG = "Zeer groot" +CHAT_WIDTH_HUGE = "Enorm" +CHAT_CHAR_COUNTER = "Chat-tekensteller weergeven" +DISABLE_CHAT_WHEN_CLOSED = "Chat verbergen wanneer gesloten" MENU_OPTIONS = "Menu Instellingen" INFORMATION = "Informatie" DEBUG = "Debug" diff --git a/lang/English.ini b/lang/English.ini index c57c0db68..9dc2446d4 100644 --- a/lang/English.ini +++ b/lang/English.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pause In Singleplayer" DISABLE_POPUPS = "Disable Popups" USE_STANDARD_KEY_BINDINGS_CHAT = "Use Terminal/CMD Chatbox Controls" CHAT_WIDTH = "Chat Width" +CHAT_WIDTH_TINY = "Tiny" +CHAT_WIDTH_VERY_SMALL = "Very Small" +CHAT_WIDTH_SMALL = "Small" +CHAT_WIDTH_NORMAL = "Normal" +CHAT_WIDTH_BIG = "Big" +CHAT_WIDTH_VERY_BIG = "Very Big" +CHAT_WIDTH_HUGE = "Huge" +CHAT_CHAR_COUNTER = "Show Chat Character Counter" +DISABLE_CHAT_WHEN_CLOSED = "Hide Chat When Closed" MENU_OPTIONS = "Menu Options" INFORMATION = "Info" DEBUG = "Debug" diff --git a/lang/French.ini b/lang/French.ini index 7c371b68a..515483825 100644 --- a/lang/French.ini +++ b/lang/French.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pause en Solo" DISABLE_POPUPS = "Désactiver les Pop-ups" USE_STANDARD_KEY_BINDINGS_CHAT = "Utiliser les contrôles de chat Terminal/CMD" CHAT_WIDTH = "Largeur du chat" +CHAT_WIDTH_TINY = "Minuscule" +CHAT_WIDTH_VERY_SMALL = "Très petite" +CHAT_WIDTH_SMALL = "Petite" +CHAT_WIDTH_NORMAL = "Normale" +CHAT_WIDTH_BIG = "Grande" +CHAT_WIDTH_VERY_BIG = "Très grande" +CHAT_WIDTH_HUGE = "Énorme" +CHAT_CHAR_COUNTER = "Afficher le compteur de caractères du chat" +DISABLE_CHAT_WHEN_CLOSED = "Masquer le chat lorsqu'il est fermé" MENU_OPTIONS = "Options du menu" INFORMATION = "Information" DEBUG = "Débogage" diff --git a/lang/German.ini b/lang/German.ini index dfd581d2e..1b7c79807 100644 --- a/lang/German.ini +++ b/lang/German.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pause im Einzelspieler" DISABLE_POPUPS = "Pop-ups deaktivieren" USE_STANDARD_KEY_BINDINGS_CHAT = "Terminal/CMD Chatbox-Steuerung verwenden" CHAT_WIDTH = "Chatbreite" +CHAT_WIDTH_TINY = "Winzig" +CHAT_WIDTH_VERY_SMALL = "Sehr klein" +CHAT_WIDTH_SMALL = "Klein" +CHAT_WIDTH_NORMAL = "Normal" +CHAT_WIDTH_BIG = "Groß" +CHAT_WIDTH_VERY_BIG = "Sehr groß" +CHAT_WIDTH_HUGE = "Riesig" +CHAT_CHAR_COUNTER = "Chat-Zeichenzähler anzeigen" +DISABLE_CHAT_WHEN_CLOSED = "Verstecke Chat wenn geschlossen" MENU_OPTIONS = "Menüoptionen" INFORMATION = "Info" DEBUG = "Debug" diff --git a/lang/Italian.ini b/lang/Italian.ini index 6ef6525da..5de5c378d 100644 --- a/lang/Italian.ini +++ b/lang/Italian.ini @@ -322,6 +322,15 @@ PAUSE_IN_SINGLEPLAYER = "Pausa in Giocatore Singolo" DISABLE_POPUPS = "Disabilita Popup" USE_STANDARD_KEY_BINDINGS_CHAT = "Usa controlli chat Terminale/CMD" CHAT_WIDTH = "Larghezza chat" +CHAT_WIDTH_TINY = "Minuscola" +CHAT_WIDTH_VERY_SMALL = "Molto piccola" +CHAT_WIDTH_SMALL = "Piccola" +CHAT_WIDTH_NORMAL = "Normale" +CHAT_WIDTH_BIG = "Grande" +CHAT_WIDTH_VERY_BIG = "Molto grande" +CHAT_WIDTH_HUGE = "Enorme" +CHAT_CHAR_COUNTER = "Mostra contatore caratteri della chat" +DISABLE_CHAT_WHEN_CLOSED = "Nascondi chat quando è chiusa" MENU_OPTIONS = "Opzioni Menù" INFORMATION = "Informazione" DEBUG = "Debug" diff --git a/lang/Japanese.ini b/lang/Japanese.ini index a6984c171..ff085530c 100644 --- a/lang/Japanese.ini +++ b/lang/Japanese.ini @@ -325,6 +325,15 @@ PAUSE_IN_SINGLEPLAYER = "ソロプレイでの一時停止" DISABLE_POPUPS = "ポップアップを無効にする" USE_STANDARD_KEY_BINDINGS_CHAT = "ターミナル/CMDチャットボックスコントロールを使用" CHAT_WIDTH = "チャット幅" +CHAT_WIDTH_TINY = "とても小さい" +CHAT_WIDTH_VERY_SMALL = "かなり小さい" +CHAT_WIDTH_SMALL = "小さい" +CHAT_WIDTH_NORMAL = "標準" +CHAT_WIDTH_BIG = "大きい" +CHAT_WIDTH_VERY_BIG = "とても大きい" +CHAT_WIDTH_HUGE = "巨大" +CHAT_CHAR_COUNTER = "チャットの文字数カウンターを表示" +DISABLE_CHAT_WHEN_CLOSED = "閉じているときはチャットを隠す" MENU_OPTIONS = "メニューの設定" INFORMATION = "情報" DEBUG = "デバッグ" diff --git a/lang/Polish.ini b/lang/Polish.ini index d59b6e678..3a21bfcec 100644 --- a/lang/Polish.ini +++ b/lang/Polish.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pauza w Trybie Pojedynczego Gracza" DISABLE_POPUPS = "Wyłącz Dymki Powiadomień" USE_STANDARD_KEY_BINDINGS_CHAT = "Użyj sterowania czatu Terminal/CMD" CHAT_WIDTH = "Szerokość czatu" +CHAT_WIDTH_TINY = "Maleńka" +CHAT_WIDTH_VERY_SMALL = "Bardzo mała" +CHAT_WIDTH_SMALL = "Mała" +CHAT_WIDTH_NORMAL = "Normalna" +CHAT_WIDTH_BIG = "Duża" +CHAT_WIDTH_VERY_BIG = "Bardzo duża" +CHAT_WIDTH_HUGE = "Ogromna" +CHAT_CHAR_COUNTER = "Pokaż licznik znaków czatu" +DISABLE_CHAT_WHEN_CLOSED = "Ukryj czat, gdy jest zamknięty" MENU_OPTIONS = "Opcje Menu" INFORMATION = "Informacja" DEBUG = "Debugowanie" diff --git a/lang/Portuguese.ini b/lang/Portuguese.ini index 5471ecba3..566d1d2b7 100644 --- a/lang/Portuguese.ini +++ b/lang/Portuguese.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pausar com apenas um jogador" DISABLE_POPUPS = "Desativar pop-ups" USE_STANDARD_KEY_BINDINGS_CHAT = "Usar controles de chat Terminal/CMD" CHAT_WIDTH = "Largura do chat" +CHAT_WIDTH_TINY = "Minúsculo" +CHAT_WIDTH_VERY_SMALL = "Muito pequena" +CHAT_WIDTH_SMALL = "Pequena" +CHAT_WIDTH_NORMAL = "Normal" +CHAT_WIDTH_BIG = "Grande" +CHAT_WIDTH_VERY_BIG = "Muito grande" +CHAT_WIDTH_HUGE = "Enorme" +CHAT_CHAR_COUNTER = "Mostrar contador de caracteres do chat" +DISABLE_CHAT_WHEN_CLOSED = "Ocultar chat quando fechado" MENU_OPTIONS = "Opções de menu" INFORMATION = "Informações" DEBUG = "Debug" diff --git a/lang/Russian.ini b/lang/Russian.ini index 43ee484ff..8f474904f 100644 --- a/lang/Russian.ini +++ b/lang/Russian.ini @@ -323,6 +323,15 @@ PAUSE_IN_SINGLEPLAYER = "Пауза в одиночной игре" DISABLE_POPUPS = "Отключить всплывающие окна" USE_STANDARD_KEY_BINDINGS_CHAT = "Использовать управление чатом Terminal/CMD" CHAT_WIDTH = "Ширина чата" +CHAT_WIDTH_TINY = "Крошечная" +CHAT_WIDTH_VERY_SMALL = "Очень маленькая" +CHAT_WIDTH_SMALL = "Маленькая" +CHAT_WIDTH_NORMAL = "Обычная" +CHAT_WIDTH_BIG = "Большая" +CHAT_WIDTH_VERY_BIG = "Очень большая" +CHAT_WIDTH_HUGE = "Огромная" +CHAT_CHAR_COUNTER = "Показывать счётчик символов чата" +DISABLE_CHAT_WHEN_CLOSED = "Скрывать чат, когда он закрыт" MENU_OPTIONS = "Параметры меню" INFORMATION = "Информация" DEBUG = "Отладка" diff --git a/lang/Spanish.ini b/lang/Spanish.ini index 086442076..7e422eaf6 100644 --- a/lang/Spanish.ini +++ b/lang/Spanish.ini @@ -324,6 +324,15 @@ PAUSE_IN_SINGLEPLAYER = "Pausa en modo de un jugador" DISABLE_POPUPS = "Deshabilitar mensajes emergentes" USE_STANDARD_KEY_BINDINGS_CHAT = "Usar controles de chat Terminal/CMD" CHAT_WIDTH = "Ancho del chat" +CHAT_WIDTH_TINY = "Minúsculo" +CHAT_WIDTH_VERY_SMALL = "Muy pequeño" +CHAT_WIDTH_SMALL = "Pequeño" +CHAT_WIDTH_NORMAL = "Normal" +CHAT_WIDTH_BIG = "Grande" +CHAT_WIDTH_VERY_BIG = "Muy grande" +CHAT_WIDTH_HUGE = "Enorme" +CHAT_CHAR_COUNTER = "Mostrar contador de caracteres del chat" +DISABLE_CHAT_WHEN_CLOSED = "Ocultar chat cuando esté cerrado" MENU_OPTIONS = "Opciones del menú" INFORMATION = "Información" DEBUG = "Depuración" diff --git a/src/pc/configfile.c b/src/pc/configfile.c index a7627b3b5..76e08e158 100644 --- a/src/pc/configfile.c +++ b/src/pc/configfile.c @@ -133,6 +133,8 @@ unsigned int configGamepadNumber = 0; bool configBackgroundGamepad = true; bool configDisableGamepads = false; bool configUseStandardKeyBindingsChat = true; +bool configChatCharCounter = true; +bool configDisableChatWhenClosed = false; unsigned int configChatWidth = 800; bool configSmoothScrolling = false; // free camera settings @@ -281,6 +283,8 @@ static const struct ConfigOption options[] = { #endif {.name = "use_standard_key_bindings_chat", .type = CONFIG_TYPE_BOOL, .boolValue = &configUseStandardKeyBindingsChat}, {.name = "chat_width", .type = CONFIG_TYPE_UINT, .uintValue = &configChatWidth}, + {.name = "chat_char_counter", .type = CONFIG_TYPE_BOOL, .boolValue = &configChatCharCounter}, + {.name = "disable_chat_when_closed", .type = CONFIG_TYPE_BOOL, .boolValue = &configDisableChatWhenClosed}, {.name = "smooth_scrolling", .type = CONFIG_TYPE_BOOL, .boolValue = &configSmoothScrolling}, {.name = "stick_rotate_left", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.rotateLeft}, {.name = "stick_invert_left_x", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.invertLeftX}, diff --git a/src/pc/configfile.h b/src/pc/configfile.h index 1a4aaec59..1048baea1 100644 --- a/src/pc/configfile.h +++ b/src/pc/configfile.h @@ -96,6 +96,8 @@ extern unsigned int configGamepadNumber; extern bool configBackgroundGamepad; extern bool configDisableGamepads; extern bool configUseStandardKeyBindingsChat; +extern bool configChatCharCounter; +extern bool configDisableChatWhenClosed; extern unsigned int configChatWidth; extern bool configSmoothScrolling; // free camera settings diff --git a/src/pc/djui/djui_chat_message.c b/src/pc/djui/djui_chat_message.c index 397dbaffd..91afb1797 100644 --- a/src/pc/djui/djui_chat_message.c +++ b/src/pc/djui/djui_chat_message.c @@ -28,6 +28,8 @@ static bool djui_chat_message_render(struct DjuiBase* base) { djui_base_set_color(ctBase, 255, 255, 255, 255); djui_base_set_size_type(base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE); djui_base_set_size(base, 1.0f, chatMessage->base.height.value); + } else if (configDisableChatWhenClosed) { + return false; } else if (f <= 0.1f) { return false; } else { diff --git a/src/pc/djui/djui_inputbox.c b/src/pc/djui/djui_inputbox.c index ea31c1956..296b9e5c6 100644 --- a/src/pc/djui/djui_inputbox.c +++ b/src/pc/djui/djui_inputbox.c @@ -8,6 +8,7 @@ #include "pc/pc_main.h" #include "game/segment2.h" #include "pc/controller/controller_keyboard.h" +#include "pc/configfile.h" #define DJUI_INPUTBOX_YOFF (-2) #define DJUI_INPUTBOX_MAX_BLINK 50 @@ -736,7 +737,7 @@ static bool djui_inputbox_render(struct DjuiBase* base) { gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW); gSPDisplayList(gDisplayListHead++, dl_ia_text_end); - if (isChatInput && djui_interactable_is_input_focus(&inputbox->base)) { + if (isChatInput && djui_interactable_is_input_focus(&inputbox->base) && configChatCharCounter) { char charCountText[32]; int currentLength = djui_unicode_len(inputbox->buffer); snprintf(charCountText, sizeof(charCountText), "%d", currentLength); diff --git a/src/pc/djui/djui_panel_controls.c b/src/pc/djui/djui_panel_controls.c index ac6f63827..d86e72b88 100644 --- a/src/pc/djui/djui_panel_controls.c +++ b/src/pc/djui/djui_panel_controls.c @@ -42,6 +42,9 @@ void djui_panel_controls_create(struct DjuiBase* caller) { #endif djui_checkbox_create(body, DLANG(MISC, USE_STANDARD_KEY_BINDINGS_CHAT), &configUseStandardKeyBindingsChat, NULL); + djui_checkbox_create(body, DLANG(MISC, CHAT_CHAR_COUNTER), &configChatCharCounter, NULL); + djui_checkbox_create(body, DLANG(MISC, DISABLE_CHAT_WHEN_CLOSED), &configDisableChatWhenClosed, NULL); + static unsigned int sChatWidthIndex = 3; switch (configChatWidth) { case 500: sChatWidthIndex = 0; break; @@ -50,19 +53,20 @@ void djui_panel_controls_create(struct DjuiBase* caller) { case 800: sChatWidthIndex = 3; break; case 900: sChatWidthIndex = 4; break; case 1000: sChatWidthIndex = 5; break; + case 1100: sChatWidthIndex = 6; break; default: sChatWidthIndex = 3; break; } - char* chatWidthChoices[] = { "500", "600", "700", "800", "900", "1000" }; - void on_chat_width_change(struct DjuiBase* b) { + char* chatWidthChoices[] = { DLANG(MISC, CHAT_WIDTH_TINY), DLANG(MISC, CHAT_WIDTH_VERY_SMALL), DLANG(MISC, CHAT_WIDTH_SMALL), DLANG(MISC, CHAT_WIDTH_NORMAL), DLANG(MISC, CHAT_WIDTH_BIG), DLANG(MISC, CHAT_WIDTH_VERY_BIG), DLANG(MISC, CHAT_WIDTH_HUGE) }; + void on_chat_width_change(UNUSED struct DjuiBase* b) { unsigned int idx = sChatWidthIndex; - unsigned int widths[] = {500,600,700,800,900,1000}; + unsigned int widths[] = {500,600,700,800,900,1000,1100}; configChatWidth = widths[idx]; if (gDjuiChatBox != NULL) { djui_base_set_size(&gDjuiChatBox->base, configChatWidth, gDjuiChatBox->base.height.value); } } - djui_selectionbox_create(body, DLANG(MISC, CHAT_WIDTH), chatWidthChoices, 6, &sChatWidthIndex, on_chat_width_change); + djui_selectionbox_create(body, DLANG(MISC, CHAT_WIDTH), chatWidthChoices, 7, &sChatWidthIndex, on_chat_width_change); #ifdef HAVE_SDL2 int numJoys = SDL_NumJoysticks();