From 3a55fb5c7cb8ef09fbdf7041db6f31088c181dc6 Mon Sep 17 00:00:00 2001 From: Tavlin Date: Wed, 31 Dec 2025 14:06:36 +0100 Subject: [PATCH 1/3] Add ambient and noise subtitle options - Add flag `showSubtitlesAmbient` and `showSubtitlesNoise` for enabling/disabling ambient and noise subtitles. - Modify `DialogMenu::setupSettings` to set the new flags - Modify `DialogMenu::haveToShowSubtitles` to use the new flags to decide if subtiltes need to be shown. Changes are made similar to #PR810 https://github.com/Try/OpenGothic/pull/810 --- game/ui/dialogmenu.cpp | 27 ++++++++++++++++++++++++++- game/ui/dialogmenu.h | 10 ++++++---- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/game/ui/dialogmenu.cpp b/game/ui/dialogmenu.cpp index dfab7d113..019a8485e 100644 --- a/game/ui/dialogmenu.cpp +++ b/game/ui/dialogmenu.cpp @@ -57,7 +57,9 @@ DialogMenu::~DialogMenu() { void DialogMenu::setupSettings() { dlgAnimation = Gothic::settingsGetI("GAME","animatedWindows"); showSubtitles = Gothic::settingsGetI("GAME","subTitles"); + showSubtitlesAmbient = Gothic::settingsGetI("GAME","subTitlesAmbient"); showSubtitlesPlayer = Gothic::settingsGetI("GAME","subTitlesPlayer"); + showSubtitlesNoise = Gothic::settingsGetI("GAME","subTitlesNoise"); } void DialogMenu::tick(uint64_t dt) { @@ -374,7 +376,30 @@ bool DialogMenu::haveToWaitOutput() const { } bool DialogMenu::haveToShowSubtitles(bool isPl) const { - return showSubtitles && (showSubtitlesPlayer || !isPl); + if(!showSubtitles){ + return false; + } + if(isPl){ + return showSubtitlesPlayer; + } else if(other != nullptr) { + switch (other.processPolicy()) { + case(ProcessPolicy::AiNormal): + return showSubtitlesAmbient; + + case(ProcessPolicy::AiFar): + case(ProcessPolicy::AiFar2): + return showSubtitlesNoise; + + case(ProcessPolicy::Player): + // since other is the player, this is considered player subtitles again + return showSubtitlesPlayer; + + case default: + return false; + } + } else { + return false; + } } void DialogMenu::startTrade() { diff --git a/game/ui/dialogmenu.h b/game/ui/dialogmenu.h index f08a36e5c..48ad70142 100644 --- a/game/ui/dialogmenu.h +++ b/game/ui/dialogmenu.h @@ -142,8 +142,10 @@ class DialogMenu : public Tempest::Widget { PScreen printMsg[MAX_PRINT]; uint64_t remPrint=0; - bool dlgAnimation = true; - bool showSubtitles = true; - bool showSubtitlesPlayer = true; - uint64_t choiceAnimTime = 0; + bool dlgAnimation = true; + bool showSubtitles = true; + bool showSubtitlesAmbient = true; + bool showSubtitlesPlayer = true; + bool showSubtitlesNoise = false; + uint64_t choiceAnimTime = 0; }; From 2191874eceb9649601160e34ab68d3fbe6ef253a Mon Sep 17 00:00:00 2001 From: Tavlin <34885144+Tavlin@users.noreply.github.com> Date: Fri, 16 Jan 2026 12:13:00 +0100 Subject: [PATCH 2/3] Update dialogmenu.cpp - Fix build crashes --- game/ui/dialogmenu.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/game/ui/dialogmenu.cpp b/game/ui/dialogmenu.cpp index 019a8485e..336aa2e8f 100644 --- a/game/ui/dialogmenu.cpp +++ b/game/ui/dialogmenu.cpp @@ -382,15 +382,15 @@ bool DialogMenu::haveToShowSubtitles(bool isPl) const { if(isPl){ return showSubtitlesPlayer; } else if(other != nullptr) { - switch (other.processPolicy()) { - case(ProcessPolicy::AiNormal): + switch (other->processPolicy()) { + case(NpcProcessPolicy::AiNormal): return showSubtitlesAmbient; - case(ProcessPolicy::AiFar): - case(ProcessPolicy::AiFar2): + case(NpcProcessPolicy::AiFar): + case(NpcProcessPolicy::AiFar2): return showSubtitlesNoise; - case(ProcessPolicy::Player): + case(NpcProcessPolicy::Player): // since other is the player, this is considered player subtitles again return showSubtitlesPlayer; From 867e6762a4a83b34597688bbcf6ebd27d7978019 Mon Sep 17 00:00:00 2001 From: Tavlin <34885144+Tavlin@users.noreply.github.com> Date: Fri, 16 Jan 2026 13:54:25 +0100 Subject: [PATCH 3/3] Update dialogmenu.cpp - fix `case default:` -> `default:` --- game/ui/dialogmenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/ui/dialogmenu.cpp b/game/ui/dialogmenu.cpp index 336aa2e8f..025143ae0 100644 --- a/game/ui/dialogmenu.cpp +++ b/game/ui/dialogmenu.cpp @@ -394,7 +394,7 @@ bool DialogMenu::haveToShowSubtitles(bool isPl) const { // since other is the player, this is considered player subtitles again return showSubtitlesPlayer; - case default: + default: return false; } } else {