group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
SettingsEditor.hpp
Go to the documentation of this file.
1#pragma once
2
6
7#include <SDL3/SDL_events.h>
8
9#include <cstddef>
10#include <optional>
11#include <string>
12#include <string_view>
13
16{
17 bool applied = false;
18 bool closeRequested = false;
19};
20
23{
24public:
26 void open(const UserSettings& settings);
27
29 void close();
30
32 [[nodiscard]] bool isOpen() const;
33
36 bool handleEscape(const UserSettings& settings);
37
39 bool consumeEvent(const SDL_Event& event);
40
42 SettingsEditorResult render(UserSettings& settings, std::string_view settingsPath, float uiScale);
43
44private:
52
59
60 void resetDraft(const UserSettings& settings);
61 void closeEditor();
62 bool requestClose(const UserSettings& settings);
64 void apply(UserSettings& settings, std::string_view settingsPath, SettingsEditorResult& result);
65 void resetToDefaults(UserSettings& settings);
68 void renderGeneralTab();
69 void renderAudioTab(UserSettings& settings);
70 void renderKeyboardMouseTab(float uiScale);
71 void renderControllerTab(float uiScale);
72 void renderBindingsTable(BindingDevice device, float uiScale);
73
74 bool open_ = false;
88 float draftMusicVolume_ = 0.7f;
89 float draftSfxVolume_ = 1.0f;
93 float originalSfxVolume_ = 1.0f;
96 bool dirty_ = false;
97 std::optional<ListeningBinding> listeningBinding_;
98 std::string statusMessage_;
100};
Action
Player-configurable gameplay and HUD actions sampled by the client.
Definition InputBindings.hpp:16
@ Forward
Move forward.
Definition InputBindings.hpp:17
BindingDevice
Definition InputBindings.hpp:44
@ KeyboardMouse
Definition InputBindings.hpp:45
Definition ConfirmModal.hpp:22
Stores action-to-input bindings and helper conversions for UI and persistence.
Definition InputBindings.hpp:128
static InputBindings defaults()
Return bindings matching the game's historical default controls.
Definition InputBindings.cpp:294
Shared tabbed settings editor used by front-end screens and the pause menu.
Definition SettingsEditor.hpp:23
float draftMouseSensitivity_
Definition SettingsEditor.hpp:77
std::string originalAudioOutputDeviceName_
Definition SettingsEditor.hpp:94
void updateLiveAudioSettings(UserSettings &settings)
Definition SettingsEditor.cpp:428
std::string draftAudioOutputDeviceName_
Definition SettingsEditor.hpp:90
bool draftMuzzleFlashEnabled_
Definition SettingsEditor.hpp:87
void apply(UserSettings &settings, std::string_view settingsPath, SettingsEditorResult &result)
Definition SettingsEditor.cpp:379
Tab activeTab_
Definition SettingsEditor.hpp:75
bool isOpen() const
True while the settings editor is active.
Definition SettingsEditor.cpp:163
float draftMusicVolume_
Definition SettingsEditor.hpp:88
bool consumeEvent(const SDL_Event &event)
Consume input events while the editor owns menu focus.
Definition SettingsEditor.cpp:181
void restoreOriginalAudioSettings(UserSettings &settings)
Definition SettingsEditor.cpp:420
float draftGamepadLookDeadzone_
Definition SettingsEditor.hpp:82
void resetToDefaults(UserSettings &settings)
Definition SettingsEditor.cpp:410
float originalMusicVolume_
Definition SettingsEditor.hpp:92
float draftSfxVolume_
Definition SettingsEditor.hpp:89
Tab
Definition SettingsEditor.hpp:46
@ General
Definition SettingsEditor.hpp:47
@ Controller
Definition SettingsEditor.hpp:50
@ Audio
Definition SettingsEditor.hpp:48
@ KeyboardMouse
Definition SettingsEditor.hpp:49
float draftGamepadPitchSensitivity_
Definition SettingsEditor.hpp:81
bool draftAimAssistEnabled_
Definition SettingsEditor.hpp:84
void resetDraft(const UserSettings &settings)
Definition SettingsEditor.cpp:327
float draftAimAssistStrength_
Definition SettingsEditor.hpp:85
void renderControllerTab(float uiScale)
Definition SettingsEditor.cpp:520
void renderKeyboardMouseTab(float uiScale)
Definition SettingsEditor.cpp:497
std::string draftAudioInputDeviceName_
Definition SettingsEditor.hpp:91
float originalSfxVolume_
Definition SettingsEditor.hpp:93
std::string statusMessage_
Definition SettingsEditor.hpp:98
ConfirmModal confirm_
Definition SettingsEditor.hpp:99
void close()
Close the editor and discard transient UI state.
Definition SettingsEditor.cpp:158
void renderGeneralTab()
Definition SettingsEditor.cpp:436
void requestDiscardConfirm()
Definition SettingsEditor.cpp:369
bool open_
Definition SettingsEditor.hpp:74
bool requestClose(const UserSettings &settings)
Definition SettingsEditor.cpp:357
SettingsEditorResult render(UserSettings &settings, std::string_view settingsPath, float uiScale)
Draw the tabbed editor inside the current ImGui window.
Definition SettingsEditor.cpp:245
void closeEditor()
Definition SettingsEditor.cpp:348
std::optional< ListeningBinding > listeningBinding_
Definition SettingsEditor.hpp:97
bool handleEscape(const UserSettings &settings)
Handle Escape according to the current listening/dirty/modal state.
Definition SettingsEditor.cpp:168
float draftGamepadMoveDeadzone_
Definition SettingsEditor.hpp:83
void open(const UserSettings &settings)
Open the editor with a fresh draft copied from live settings.
Definition SettingsEditor.cpp:145
InputBindings draftBindings_
Definition SettingsEditor.hpp:76
bool draftShowControllerBindings_
Definition SettingsEditor.hpp:79
bool draftGamepadSwapSticks_
Definition SettingsEditor.hpp:86
float draftGamepadYawSensitivity_
Definition SettingsEditor.hpp:80
float draftHorizontalFovDegrees_
Definition SettingsEditor.hpp:78
std::string originalAudioInputDeviceName_
Definition SettingsEditor.hpp:95
void renderAudioTab(UserSettings &settings)
Definition SettingsEditor.cpp:456
bool dirty_
Definition SettingsEditor.hpp:96
void renderBindingsTable(BindingDevice device, float uiScale)
Definition SettingsEditor.cpp:600
constexpr float kDefaultMouseSensitivity
Mouse-look sensitivity in radians per SDL relative mouse unit.
Definition UserSettings.hpp:15
Result commands emitted by one settings-editor render pass.
Definition SettingsEditor.hpp:16
bool applied
Settings were applied and saved this frame.
Definition SettingsEditor.hpp:17
bool closeRequested
Caller should leave the settings page.
Definition SettingsEditor.hpp:18
Definition SettingsEditor.hpp:54
std::size_t slot
Definition SettingsEditor.hpp:57
Action action
Definition SettingsEditor.hpp:55
BindingDevice device
Definition SettingsEditor.hpp:56
Per-user gameplay settings loaded from SDL's pref-path TOML file.
Definition UserSettings.hpp:25