@@ -25,30 +25,26 @@ sound_menu_state::sound_menu_state(::game& ctx):
25
25
ambience_volume_value_text = std::make_unique<scene::text>();
26
26
effects_volume_name_text = std::make_unique<scene::text>();
27
27
effects_volume_value_text = std::make_unique<scene::text>();
28
- mono_audio_name_text = std::make_unique<scene::text>();
29
- mono_audio_value_text = std::make_unique<scene::text>();
30
- captions_name_text = std::make_unique<scene::text>();
31
- captions_value_text = std::make_unique<scene::text>();
32
- captions_size_name_text = std::make_unique<scene::text>();
33
- captions_size_value_text = std::make_unique<scene::text>();
28
+ // captions_name_text = std::make_unique<scene::text>();
29
+ // captions_value_text = std::make_unique<scene::text>();
30
+ // captions_size_name_text = std::make_unique<scene::text>();
31
+ // captions_size_value_text = std::make_unique<scene::text>();
34
32
back_text = std::make_unique<scene::text>();
35
33
36
34
// Build list of menu item texts
37
35
ctx.menu_item_texts .push_back ({master_volume_name_text.get (), master_volume_value_text.get ()});
38
36
ctx.menu_item_texts .push_back ({ambience_volume_name_text.get (), ambience_volume_value_text.get ()});
39
37
ctx.menu_item_texts .push_back ({effects_volume_name_text.get (), effects_volume_value_text.get ()});
40
- ctx.menu_item_texts .push_back ({mono_audio_name_text.get (), mono_audio_value_text.get ()});
41
- ctx.menu_item_texts .push_back ({captions_name_text.get (), captions_value_text.get ()});
42
- ctx.menu_item_texts .push_back ({captions_size_name_text.get (), captions_size_value_text.get ()});
38
+ // ctx.menu_item_texts.push_back({captions_name_text.get(), captions_value_text.get()});
39
+ // ctx.menu_item_texts.push_back({captions_size_name_text.get(), captions_size_value_text.get()});
43
40
ctx.menu_item_texts .push_back ({back_text.get (), nullptr });
44
41
45
42
// Set content of menu item texts
46
43
master_volume_name_text->set_content (get_string (ctx, " sound_menu_master_volume" ));
47
44
ambience_volume_name_text->set_content (get_string (ctx, " sound_menu_ambience_volume" ));
48
45
effects_volume_name_text->set_content (get_string (ctx, " sound_menu_effects_volume" ));
49
- mono_audio_name_text->set_content (get_string (ctx, " sound_menu_mono_audio" ));
50
- captions_name_text->set_content (get_string (ctx, " sound_menu_captions" ));
51
- captions_size_name_text->set_content (get_string (ctx, " sound_menu_captions_size" ));
46
+ // captions_name_text->set_content(get_string(ctx, "sound_menu_captions"));
47
+ // captions_size_name_text->set_content(get_string(ctx, "sound_menu_captions_size"));
52
48
back_text->set_content (get_string (ctx, " back" ));
53
49
update_value_text_content ();
54
50
@@ -61,45 +57,119 @@ sound_menu_state::sound_menu_state(::game& ctx):
61
57
::menu::add_text_to_ui (ctx);
62
58
63
59
// Construct menu item callbacks
64
- auto increase_volume_callback = [this , &ctx](float * volume)
60
+
61
+ auto increase_master_volume_callback = [this , &ctx]()
65
62
{
66
63
// Increase volume
67
64
if (ctx.menu_modifier_action .is_active ())
68
- *volume += 0 .01f ;
65
+ ctx. master_volume += 0 .01f ;
69
66
else
70
- *volume += 0 .1f ;
71
-
67
+ ctx. master_volume += 0 .1f ;
68
+
72
69
// Limit volume
73
- if (*volume > 1 .0f )
74
- *volume = 1 .0f ;
75
-
70
+ ctx.master_volume = math::clamp (ctx.master_volume , 0 .0f , 1 .0f );
71
+
72
+ // Update listener gain
73
+ ctx.sound_system ->get_listener ().set_gain (ctx.master_volume );
74
+
75
+ // Update master volume setting
76
+ (*ctx.settings )[" master_volume" ] = ctx.master_volume ;
77
+
76
78
this ->update_value_text_content ();
77
79
::menu::align_text (ctx);
78
80
};
79
- auto decrease_volume_callback = [this , &ctx](float * volume )
81
+ auto decrease_master_volume_callback = [this , &ctx]()
80
82
{
81
83
// Decrease volume
82
84
if (ctx.menu_modifier_action .is_active ())
83
- *volume -= 0 .01f ;
85
+ ctx. master_volume -= 0 .01f ;
84
86
else
85
- *volume -= 0 .1f ;
86
-
87
+ ctx. master_volume -= 0 .1f ;
88
+
87
89
// Limit volume
88
- if (*volume < 0 .0f )
89
- *volume = 0 .0f ;
90
-
90
+ ctx.master_volume = math::clamp (ctx.master_volume , 0 .0f , 1 .0f );
91
+
92
+ // Update listener gain
93
+ ctx.sound_system ->get_listener ().set_gain (ctx.master_volume );
94
+
95
+ // Update master volume setting
96
+ (*ctx.settings )[" master_volume" ] = ctx.master_volume ;
97
+
91
98
this ->update_value_text_content ();
92
99
::menu::align_text (ctx);
93
100
};
94
-
95
- auto toggle_mono_audio_callback = [this , &ctx]()
101
+
102
+ auto increase_ambience_volume_callback = [this , &ctx]()
96
103
{
97
- ctx.mono_audio = !ctx.mono_audio ;
98
-
104
+ // Increase volume
105
+ if (ctx.menu_modifier_action .is_active ())
106
+ ctx.ambience_volume += 0 .01f ;
107
+ else
108
+ ctx.ambience_volume += 0 .1f ;
109
+
110
+ // Limit volume
111
+ ctx.ambience_volume = math::clamp (ctx.ambience_volume , 0 .0f , 1 .0f );
112
+
113
+ // Update volume setting
114
+ (*ctx.settings )[" ambience_volume" ] = ctx.ambience_volume ;
115
+
116
+ this ->update_value_text_content ();
117
+ ::menu::align_text (ctx);
118
+ };
119
+ auto decrease_ambience_volume_callback = [this , &ctx]()
120
+ {
121
+ // Decrease volume
122
+ if (ctx.menu_modifier_action .is_active ())
123
+ ctx.ambience_volume -= 0 .01f ;
124
+ else
125
+ ctx.ambience_volume -= 0 .1f ;
126
+
127
+ // Limit volume
128
+ ctx.ambience_volume = math::clamp (ctx.ambience_volume , 0 .0f , 1 .0f );
129
+
130
+ // Update volume setting
131
+ (*ctx.settings )[" ambience_volume" ] = ctx.ambience_volume ;
132
+
133
+ this ->update_value_text_content ();
134
+ ::menu::align_text (ctx);
135
+ };
136
+
137
+ auto increase_effects_volume_callback = [this , &ctx]()
138
+ {
139
+ // Increase volume
140
+ if (ctx.menu_modifier_action .is_active ())
141
+ ctx.effects_volume += 0 .01f ;
142
+ else
143
+ ctx.effects_volume += 0 .1f ;
144
+
145
+ // Limit volume
146
+ ctx.effects_volume = math::clamp (ctx.effects_volume , 0 .0f , 1 .0f );
147
+
148
+ // Update volume setting
149
+ (*ctx.settings )[" effects_volume" ] = ctx.effects_volume ;
150
+
151
+ this ->update_value_text_content ();
152
+ ::menu::align_text (ctx);
153
+ };
154
+ auto decrease_effects_volume_callback = [this , &ctx]()
155
+ {
156
+ // Decrease volume
157
+ if (ctx.menu_modifier_action .is_active ())
158
+ ctx.effects_volume -= 0 .01f ;
159
+ else
160
+ ctx.effects_volume -= 0 .1f ;
161
+
162
+ // Limit volume
163
+ ctx.effects_volume = math::clamp (ctx.effects_volume , 0 .0f , 1 .0f );
164
+
165
+ // Update volume setting
166
+ (*ctx.settings )[" effects_volume" ] = ctx.effects_volume ;
167
+
99
168
this ->update_value_text_content ();
100
169
::menu::align_text (ctx);
101
170
};
102
171
172
+ /*
103
173
auto toggle_captions_callback = [this, &ctx]()
104
174
{
105
175
ctx.captions = !ctx.captions;
@@ -139,6 +209,8 @@ sound_menu_state::sound_menu_state(::game& ctx):
139
209
this->update_value_text_content();
140
210
::menu::align_text(ctx);
141
211
};
212
+ */
213
+
142
214
auto select_back_callback = [&ctx]()
143
215
{
144
216
// Disable menu controls
@@ -163,30 +235,27 @@ sound_menu_state::sound_menu_state(::game& ctx):
163
235
};
164
236
165
237
// Build list of menu select callbacks
166
- ctx.menu_select_callbacks .push_back (std::bind (increase_volume_callback, &ctx.master_volume ));
167
- ctx.menu_select_callbacks .push_back (std::bind (increase_volume_callback, &ctx.ambience_volume ));
168
- ctx.menu_select_callbacks .push_back (std::bind (increase_volume_callback, &ctx.effects_volume ));
169
- ctx.menu_select_callbacks .push_back (toggle_mono_audio_callback);
170
- ctx.menu_select_callbacks .push_back (toggle_captions_callback);
171
- ctx.menu_select_callbacks .push_back (increase_captions_size_callback);
238
+ ctx.menu_select_callbacks .push_back (std::bind (increase_master_volume_callback));
239
+ ctx.menu_select_callbacks .push_back (std::bind (increase_ambience_volume_callback));
240
+ ctx.menu_select_callbacks .push_back (std::bind (increase_effects_volume_callback));
241
+ // ctx.menu_select_callbacks.push_back(toggle_captions_callback);
242
+ // ctx.menu_select_callbacks.push_back(increase_captions_size_callback);
172
243
ctx.menu_select_callbacks .push_back (select_back_callback);
173
244
174
245
// Build list of menu left callbacks
175
- ctx.menu_left_callbacks .push_back (std::bind (decrease_volume_callback, &ctx.master_volume ));
176
- ctx.menu_left_callbacks .push_back (std::bind (decrease_volume_callback, &ctx.ambience_volume ));
177
- ctx.menu_left_callbacks .push_back (std::bind (decrease_volume_callback, &ctx.effects_volume ));
178
- ctx.menu_left_callbacks .push_back (toggle_mono_audio_callback);
179
- ctx.menu_left_callbacks .push_back (toggle_captions_callback);
180
- ctx.menu_left_callbacks .push_back (decrease_captions_size_callback);
246
+ ctx.menu_left_callbacks .push_back (std::bind (decrease_master_volume_callback));
247
+ ctx.menu_left_callbacks .push_back (std::bind (decrease_ambience_volume_callback));
248
+ ctx.menu_left_callbacks .push_back (std::bind (decrease_effects_volume_callback));
249
+ // ctx.menu_left_callbacks.push_back(toggle_captions_callback);
250
+ // ctx.menu_left_callbacks.push_back(decrease_captions_size_callback);
181
251
ctx.menu_left_callbacks .push_back (nullptr );
182
252
183
253
// Build list of menu right callbacks
184
- ctx.menu_right_callbacks .push_back (std::bind (increase_volume_callback, &ctx.master_volume ));
185
- ctx.menu_right_callbacks .push_back (std::bind (increase_volume_callback, &ctx.ambience_volume ));
186
- ctx.menu_right_callbacks .push_back (std::bind (increase_volume_callback, &ctx.effects_volume ));
187
- ctx.menu_right_callbacks .push_back (toggle_mono_audio_callback);
188
- ctx.menu_right_callbacks .push_back (toggle_captions_callback);
189
- ctx.menu_right_callbacks .push_back (increase_captions_size_callback);
254
+ ctx.menu_right_callbacks .push_back (std::bind (increase_master_volume_callback));
255
+ ctx.menu_right_callbacks .push_back (std::bind (increase_ambience_volume_callback));
256
+ ctx.menu_right_callbacks .push_back (std::bind (increase_effects_volume_callback));
257
+ // ctx.menu_right_callbacks.push_back(toggle_captions_callback);
258
+ // ctx.menu_right_callbacks.push_back(increase_captions_size_callback);
190
259
ctx.menu_right_callbacks .push_back (nullptr );
191
260
192
261
// Set menu back callback
@@ -222,7 +291,6 @@ void sound_menu_state::update_value_text_content()
222
291
std::get<1 >(ctx.menu_item_texts [0 ])->set_content (std::to_string (static_cast <int >(std::round (ctx.master_volume * 100 .0f ))) + " %" );
223
292
std::get<1 >(ctx.menu_item_texts [1 ])->set_content (std::to_string (static_cast <int >(std::round (ctx.ambience_volume * 100 .0f ))) + " %" );
224
293
std::get<1 >(ctx.menu_item_texts [2 ])->set_content (std::to_string (static_cast <int >(std::round (ctx.effects_volume * 100 .0f ))) + " %" );
225
- std::get<1 >(ctx.menu_item_texts [3 ])->set_content ((ctx.mono_audio ) ? string_on : string_off);
226
- std::get<1 >(ctx.menu_item_texts [4 ])->set_content ((ctx.captions ) ? string_on : string_off);
227
- std::get<1 >(ctx.menu_item_texts [5 ])->set_content (std::to_string (static_cast <int >(std::round (ctx.captions_size * 100 .0f ))) + " %" );
294
+ // std::get<1>(ctx.menu_item_texts[4])->set_content((ctx.captions) ? string_on : string_off);
295
+ // std::get<1>(ctx.menu_item_texts[5])->set_content(std::to_string(static_cast<int>(std::round(ctx.captions_size * 100.0f))) + "%");
228
296
}
0 commit comments