diff --git a/gumps/AudioOptions_gump.cc b/gumps/AudioOptions_gump.cc
index 7e4f961c..6ba492f5 100644
--- a/gumps/AudioOptions_gump.cc
+++ b/gumps/AudioOptions_gump.cc
@@ -145,6 +145,8 @@ void AudioOptions_gump::rebuild_buttons() {
// speech on/off
buttons[id_speech_enabled] = std::make_unique<AudioEnabledToggle>(this, &AudioOptions_gump::toggle_speech_enabled,
speech_enabled, colx[2], rowy[11], 59);
+ if (speech_enabled)
+ rebuild_speech_buttons();
}
void AudioOptions_gump::rebuild_midi_buttons() {
@@ -204,6 +206,17 @@ void AudioOptions_gump::rebuild_sfx_buttons() {
#endif
}
+void AudioOptions_gump::rebuild_speech_buttons() {
+ buttons[id_speech_subtitles].reset();
+
+ if (!speech_enabled)
+ return;
+ else {
+ buttons[id_speech_subtitles] = std::make_unique<AudioEnabledToggle>(this, &AudioOptions_gump::toggle_speech_subtitles,
+ speech_subtitles, colx[2], rowy[12], 59);
+ }
+}
+
void AudioOptions_gump::rebuild_mididriveroption_buttons() {
std::string s = "Default";
if (midi_driver != MidiDriver::getDriverCount()) s = MidiDriver::getDriverName(midi_driver);
@@ -340,6 +353,9 @@ void AudioOptions_gump::load_settings() {
config->value("config/audio/midi/chorus/enabled", s, "no");
midi_reverb_chorus |= (s == "yes" ? 2 : 0);
+ config->value("config/audio/speech/with_subs", s, "no");
+ speech_subtitles |= (s == "yes" ? 1 : 0);
+
std::string d = "config/disk/game/" + Game::get_gametitle() + "/waves";
config->value(d.c_str(), s, "---");
if (have_roland_pack && s == rolandpack)
@@ -451,6 +467,7 @@ void AudioOptions_gump::save_settings() {
config->set("config/audio/midi/chorus/enabled", (midi_reverb_chorus & 2) ? "yes" : "no", false);
config->set("config/audio/midi/reverb/enabled", (midi_reverb_chorus & 1) ? "yes" : "no", false);
config->set("config/audio/midi/looping", midi_looping ? "yes" : "no", false);
+ config->set("config/audio/speech/with_subs", speech_subtitles ? "yes" : "no", false);
std::string d = "config/disk/game/" + Game::get_gametitle() + "/waves";
std::string waves;
@@ -556,6 +573,8 @@ void AudioOptions_gump::paint() {
}
#endif
font->paint_text(iwin->get_ib8(), "Speech:", x + colx[0], y + rowy[11] + 1);
+ if (speech_enabled == 1)
+ font->paint_text(iwin->get_ib8(), "subtitles", x + colx[1], y + rowy[12] + 1);
}
gwin->set_painted();
}
diff --git a/gumps/AudioOptions_gump.h b/gumps/AudioOptions_gump.h
index aa401d1a..54d84d6c 100644
--- a/gumps/AudioOptions_gump.h
+++ b/gumps/AudioOptions_gump.h
@@ -46,6 +46,7 @@ class AudioOptions_gump : public Modal_gump {
id_sfx_pack,
id_sfx_conv = id_sfx_pack,
id_speech_enabled,
+ id_speech_subtitles,
id_count
};
std::array<std::unique_ptr<Gump_button>, id_count> buttons;
@@ -70,6 +71,7 @@ class AudioOptions_gump : public Modal_gump {
int sfx_conversion;
#endif
int speech_enabled;
+ int speech_subtitles;
// Auxiliary variables for digital SFX packages:
int nsfxopts, nsfxpacks;
@@ -101,6 +103,7 @@ class AudioOptions_gump : public Modal_gump {
void rebuild_midi_buttons();
void rebuild_mididriveroption_buttons();
void rebuild_sfx_buttons();
+ void rebuild_speech_buttons();
void load_settings();
void save_settings();
@@ -146,6 +149,11 @@ class AudioOptions_gump : public Modal_gump {
void toggle_sfx_pack(int state);
void toggle_speech_enabled(int state) {
speech_enabled = state;
+ rebuild_speech_buttons();
+ paint();
+ }
+ void toggle_speech_subtitles(int state) {
+ speech_subtitles = state;
}
};
Comments
0 B
|👍
/👎
0 B
|👍
/👎