chat sliders with value added

This commit is contained in:
iZePlayz 2025-11-21 00:20:57 +01:00
parent 1b5ca52394
commit df1015900b
13 changed files with 91 additions and 16 deletions

View file

@ -348,7 +348,7 @@ CHAT_SIZE_VERY_HUGE = "Obří"
CHAT_SIZE_MAXIMUM = "Maximum"
CHAT_TEXT_SCALE = "Velikost textu chatu"
CHAT_OPACITY = "Průhlednost chatu"
CHAT_LIFETIME = "Doba zobrazení zpráv (s)"
CHAT_LIFETIME = "Doba zobrazení zpráv"
CHAT_CHAR_COUNTER = "Zobrazit počitadlo znaků chatu"
DISABLE_CHAT_WHEN_CLOSED = "Skrýt chat, když je zavřený"

View file

@ -348,7 +348,7 @@ CHAT_SIZE_VERY_HUGE = "Gigantisch"
CHAT_SIZE_MAXIMUM = "Maximum"
CHAT_TEXT_SCALE = "Chat-tekstgrootte"
CHAT_OPACITY = "Chat-transparantie"
CHAT_LIFETIME = "Weergaveduur berichten (s)"
CHAT_LIFETIME = "Weergaveduur berichten"
CHAT_CHAR_COUNTER = "Chat-tekensteller weergeven"
DISABLE_CHAT_WHEN_CLOSED = "Chat verbergen wanneer gesloten"

View file

@ -347,7 +347,7 @@ CHAT_SIZE_VERY_HUGE = "Very Huge"
CHAT_SIZE_MAXIMUM = "Maximum"
CHAT_TEXT_SCALE = "Chat Text Size"
CHAT_OPACITY = "Chat Opacity"
CHAT_LIFETIME = "Chat Message Lifetime (s)"
CHAT_LIFETIME = "Chat Message Lifetime"
CHAT_CHAR_COUNTER = "Show Chat Character Counter"
DISABLE_CHAT_WHEN_CLOSED = "Hide Chat When Closed"

View file

@ -348,7 +348,7 @@ CHAT_SIZE_VERY_HUGE = "Gigantesque"
CHAT_SIZE_MAXIMUM = "Maximum"
CHAT_TEXT_SCALE = "Taille du texte du chat"
CHAT_OPACITY = "Opacité du chat"
CHAT_LIFETIME = "Durée d'affichage des messages (s)"
CHAT_LIFETIME = "Durée d'affichage des messages"
CHAT_CHAR_COUNTER = "Afficher le compteur de caractères du chat"
DISABLE_CHAT_WHEN_CLOSED = "Masquer le chat lorsqu'il est fermé"

View file

@ -348,7 +348,7 @@ CHAT_SIZE_VERY_HUGE = "Gigantisch"
CHAT_SIZE_MAXIMUM = "Maximal"
CHAT_TEXT_SCALE = "Chat-Textgröße"
CHAT_OPACITY = "Chat-Transparenz"
CHAT_LIFETIME = "Chat-Anzeigedauer (s)"
CHAT_LIFETIME = "Chat-Anzeigedauer"
CHAT_CHAR_COUNTER = "Chat-Zeichenzähler anzeigen"
DISABLE_CHAT_WHEN_CLOSED = "Verstecke Chat wenn geschlossen"

View file

@ -346,7 +346,7 @@ CHAT_SIZE_VERY_HUGE = "Enormissima"
CHAT_SIZE_MAXIMUM = "Massimo"
CHAT_TEXT_SCALE = "Dimensione testo chat"
CHAT_OPACITY = "Opacità chat"
CHAT_LIFETIME = "Durata messaggi chat (s)"
CHAT_LIFETIME = "Durata messaggi chat"
CHAT_CHAR_COUNTER = "Mostra contatore caratteri della chat"
DISABLE_CHAT_WHEN_CLOSED = "Nascondi chat quando è chiusa"

View file

@ -349,7 +349,7 @@ CHAT_SIZE_VERY_HUGE = "超巨大"
CHAT_SIZE_MAXIMUM = "最大"
CHAT_TEXT_SCALE = "チャット文字サイズ"
CHAT_OPACITY = "チャットの不透明度"
CHAT_LIFETIME = "メッセージ表示時間 (秒)"
CHAT_LIFETIME = "メッセージ表示時間"
CHAT_CHAR_COUNTER = "チャットの文字数カウンターを表示"
DISABLE_CHAT_WHEN_CLOSED = "閉じているときはチャットを隠す"

View file

@ -348,7 +348,7 @@ CHAT_SIZE_VERY_HUGE = "Olbrzymia"
CHAT_SIZE_MAXIMUM = "Maksimum"
CHAT_TEXT_SCALE = "Rozmiar tekstu czatu"
CHAT_OPACITY = "Przezroczystość czatu"
CHAT_LIFETIME = "Czas wyświetlania wiadomości (s)"
CHAT_LIFETIME = "Czas wyświetlania wiadomości"
CHAT_CHAR_COUNTER = "Pokaż licznik znaków czatu"
DISABLE_CHAT_WHEN_CLOSED = "Ukryj czat, gdy jest zamknięty"

View file

@ -348,7 +348,7 @@ CHAT_SIZE_VERY_HUGE = "Enorme demais"
CHAT_SIZE_MAXIMUM = "Máximo"
CHAT_TEXT_SCALE = "Tamanho do texto do chat"
CHAT_OPACITY = "Opacidade do chat"
CHAT_LIFETIME = "Duração da mensagem do chat (s)"
CHAT_LIFETIME = "Duração da mensagem do chat"
CHAT_CHAR_COUNTER = "Mostrar contador de caracteres do chat"
DISABLE_CHAT_WHEN_CLOSED = "Ocultar chat quando fechado"

View file

@ -346,7 +346,7 @@ CHAT_SIZE_VERY_HUGE = "Гигантская"
CHAT_SIZE_MAXIMUM = "Максимум"
CHAT_TEXT_SCALE = "Размер текста чата"
CHAT_OPACITY = "Прозрачность чата"
CHAT_LIFETIME = "Время показа сообщений (с)"
CHAT_LIFETIME = "Время показа сообщений"
CHAT_CHAR_COUNTER = "Показывать счётчик символов чата"
DISABLE_CHAT_WHEN_CLOSED = "Скрывать чат, когда он закрыт"

View file

@ -348,7 +348,7 @@ CHAT_SIZE_VERY_HUGE = "Enorme+"
CHAT_SIZE_MAXIMUM = "Máximo"
CHAT_TEXT_SCALE = "Tamaño de texto del chat"
CHAT_OPACITY = "Opacidad del chat"
CHAT_LIFETIME = "Duración del mensaje de chat (s)"
CHAT_LIFETIME = "Duración del mensaje de chat"
CHAT_CHAR_COUNTER = "Mostrar contador de caracteres del chat"
DISABLE_CHAT_WHEN_CLOSED = "Ocultar chat cuando esté cerrado"

View file

@ -17,8 +17,8 @@ static bool djui_chat_message_render(struct DjuiBase* base) {
struct DjuiBase* ctBase = &chatMessage->message->base;
f32 lifeTime = (f32)configChatMessageLifetime;
if (lifeTime < 3.0f) lifeTime = 3.0f;
if (lifeTime > 60.0f) lifeTime = 60.0f;
if (lifeTime < 1.0f) lifeTime = 1.0f;
if (lifeTime > 120.0f) lifeTime = 120.0f;
f32 seconds = clock_elapsed() - chatMessage->createTime;
f32 f = 1.0f;

View file

@ -4,6 +4,54 @@
#include "pc/utils/misc.h"
#include "pc/configfile.h"
static struct DjuiText* sChatTextScaleLabel = NULL;
static struct DjuiText* sChatOpacityLabel = NULL;
static struct DjuiText* sChatLifetimeLabel = NULL;
static void djui_panel_chat_update_value_labels(void) {
if (sChatTextScaleLabel != NULL) {
char buf[16];
snprintf(buf, sizeof(buf), "%u%%", configChatTextScale);
djui_text_set_text(sChatTextScaleLabel, buf);
struct DjuiBase* base = &sChatTextScaleLabel->base;
if (configChatTextScale < 100) {
djui_base_set_color(base, 64, 64, 255, 255);
} else if (configChatTextScale == 100) {
djui_base_set_color(base, 48, 224, 48, 255);
} else {
djui_base_set_color(base, 255, 64, 64, 255);
}
}
if (sChatOpacityLabel != NULL) {
char buf[16];
snprintf(buf, sizeof(buf), "%u%%", configChatOpacity);
djui_text_set_text(sChatOpacityLabel, buf);
struct DjuiBase* base = &sChatOpacityLabel->base;
if (configChatOpacity < 70) {
djui_base_set_color(base, 64, 64, 255, 255);
} else if (configChatOpacity == 70) {
djui_base_set_color(base, 48, 224, 48, 255);
} else {
djui_base_set_color(base, 255, 64, 64, 255);
}
}
if (sChatLifetimeLabel != NULL) {
char buf[16];
snprintf(buf, sizeof(buf), "%us", configChatMessageLifetime);
djui_text_set_text(sChatLifetimeLabel, buf);
struct DjuiBase* base = &sChatLifetimeLabel->base;
if (configChatMessageLifetime < 10) {
djui_base_set_color(base, 64, 64, 255, 255);
} else if (configChatMessageLifetime == 10) {
djui_base_set_color(base, 64, 255, 64, 255);
} else {
djui_base_set_color(base, 255, 64, 64, 255);
}
}
}
void djui_panel_chat_create(struct DjuiBase* caller) {
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CHAT_OPTIONS, CHAT), false);
struct DjuiBase* body = djui_three_panel_get_body(panel);
@ -91,11 +139,38 @@ void djui_panel_chat_create(struct DjuiBase* caller) {
}
djui_base_set_color(&gDjuiChatBox->chatFlow->base, 0, 0, 0, alpha);
}
djui_panel_chat_update_value_labels();
}
void on_chat_lifetime_change(UNUSED struct DjuiBase* b) {
djui_panel_chat_update_value_labels();
}
djui_slider_create(body, DLANG(CHAT_OPTIONS, CHAT_TEXT_SCALE), &configChatTextScale, 50, 150, on_chat_style_change);
djui_slider_create(body, DLANG(CHAT_OPTIONS, CHAT_OPACITY), &configChatOpacity, 0, 100, on_chat_style_change);
djui_slider_create(body, DLANG(CHAT_OPTIONS, CHAT_LIFETIME), &configChatMessageLifetime, 3, 60, NULL);
struct DjuiSlider* sliderTextScale = djui_slider_create(body, DLANG(CHAT_OPTIONS, CHAT_TEXT_SCALE), &configChatTextScale, 50, 150, on_chat_style_change);
struct DjuiSlider* sliderOpacity = djui_slider_create(body, DLANG(CHAT_OPTIONS, CHAT_OPACITY), &configChatOpacity, 0, 100, on_chat_style_change);
struct DjuiSlider* sliderLifetime = djui_slider_create(body, DLANG(CHAT_OPTIONS, CHAT_LIFETIME), &configChatMessageLifetime, 1, 120, on_chat_lifetime_change);
sChatTextScaleLabel = djui_text_create(&sliderTextScale->rect->base, "");
djui_base_set_alignment(&sChatTextScaleLabel->base, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
djui_base_set_size_type(&sChatTextScaleLabel->base, DJUI_SVT_RELATIVE, DJUI_SVT_RELATIVE);
djui_base_set_size(&sChatTextScaleLabel->base, 1.0f, 1.0f);
djui_text_set_alignment(sChatTextScaleLabel, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
djui_text_set_drop_shadow(sChatTextScaleLabel, 64, 64, 64, 100);
sChatOpacityLabel = djui_text_create(&sliderOpacity->rect->base, "");
djui_base_set_alignment(&sChatOpacityLabel->base, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
djui_base_set_size_type(&sChatOpacityLabel->base, DJUI_SVT_RELATIVE, DJUI_SVT_RELATIVE);
djui_base_set_size(&sChatOpacityLabel->base, 1.0f, 1.0f);
djui_text_set_alignment(sChatOpacityLabel, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
djui_text_set_drop_shadow(sChatOpacityLabel, 64, 64, 64, 100);
sChatLifetimeLabel = djui_text_create(&sliderLifetime->rect->base, "");
djui_base_set_alignment(&sChatLifetimeLabel->base, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
djui_base_set_size_type(&sChatLifetimeLabel->base, DJUI_SVT_RELATIVE, DJUI_SVT_RELATIVE);
djui_base_set_size(&sChatLifetimeLabel->base, 1.0f, 1.0f);
djui_text_set_alignment(sChatLifetimeLabel, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER);
djui_text_set_drop_shadow(sChatLifetimeLabel, 64, 64, 64, 100);
djui_panel_chat_update_value_labels();
djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);
}