| 211 | } |
| 212 | |
| 213 | void Scene_Settings::vUpdate() { |
| 214 | if (RefreshInputEmergencyReset()) { |
| 215 | return; |
| 216 | } |
| 217 | |
| 218 | main_window->Update(); |
| 219 | help_window->Update(); |
| 220 | help_window2->Update(); |
| 221 | options_window->Update(); |
| 222 | input_window->Update(); |
| 223 | input_mode_window->Update(); |
| 224 | |
| 225 | auto opt_mode = options_window->GetMode(); |
| 226 | |
| 227 | SetMode(opt_mode); |
| 228 | |
| 229 | if (Input::IsTriggered(Input::CANCEL) && opt_mode != Window_Settings::eInputButtonAdd) { |
| 230 | Main_Data::game_system->SePlay(Main_Data::game_system->GetSystemSE(Game_System::SFX_Cancel)); |
| 231 | |
| 232 | if (number_window) { |
| 233 | number_window.reset(); |
| 234 | auto& option = options_window->GetCurrentOption(); |
| 235 | option.current_value = option.original_value; |
| 236 | option.action(); |
| 237 | options_window->SetActive(true); |
| 238 | return; |
| 239 | } |
| 240 | |
| 241 | if (picker_window) { |
| 242 | picker_window.reset(); |
| 243 | auto& option = options_window->GetCurrentOption(); |
| 244 | option.current_value = option.original_value; |
| 245 | option.action(); |
| 246 | options_window->SetActive(true); |
| 247 | return; |
| 248 | } |
| 249 | |
| 250 | help_window2->SetFont(nullptr); |
| 251 | options_window->Pop(); |
| 252 | SetMode(options_window->GetMode()); |
| 253 | if (mode == Window_Settings::eNone) { |
| 254 | Scene::Pop(); |
| 255 | } |
| 256 | } |
| 257 | |
| 258 | switch (opt_mode) { |
| 259 | case Window_Settings::eNone: |
| 260 | case Window_Settings::eSave: |
| 261 | case Window_Settings::eEnd: |
| 262 | case Window_Settings::eAbout: |
| 263 | case Window_Settings::eLanguage: // fix compiler warning, not implemented |
| 264 | break; |
| 265 | case Window_Settings::eMain: |
| 266 | UpdateMain(); |
| 267 | break; |
| 268 | case Window_Settings::eInput: |
| 269 | case Window_Settings::eVideo: |
| 270 | case Window_Settings::eAudio: |