|
Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
|
Manages game settings and preferences. More...
#include <Settings.hpp>
Public Types | |
| using | VolumeCallback = std::function< void(float)> |
| using | LanguageCallback = std::function< void(Language)> |
Public Member Functions | |
| Settings () | |
| sf::Keyboard::Key | getKey (KeyAction action) const |
| void | setKey (KeyAction action, sf::Keyboard::Key key) |
| std::string | getKeyName (sf::Keyboard::Key key) const |
| float | getMasterVolume () const |
| void | setMasterVolume (float volume) |
| float | getMusicVolume () const |
| void | setMusicVolume (float volume) |
| float | getSfxVolume () const |
| void | setSfxVolume (float volume) |
| void | onMasterVolumeChanged (VolumeCallback callback) |
| void | onMusicVolumeChanged (VolumeCallback callback) |
| void | onSfxVolumeChanged (VolumeCallback callback) |
| Language | getLanguage () const |
| void | setLanguage (Language lang) |
| std::string | getLanguageName (Language lang) const |
| void | onLanguageChanged (LanguageCallback callback) |
| ColorBlindMode | getColorBlindMode () const |
| void | setColorBlindMode (ColorBlindMode mode) |
| std::string | getColorBlindModeName (ColorBlindMode mode) const |
| bool | getHighContrast () const |
| void | setHighContrast (bool enabled) |
| Difficulty | getDifficulty () const |
| void | setDifficulty (Difficulty difficulty) |
| std::string | getDifficultyName (Difficulty difficulty) const |
| ecs::components::WeaponKind | getSelectedWeapon () const |
| void | setSelectedWeapon (ecs::components::WeaponKind weapon) |
| std::string | getWeaponName (ecs::components::WeaponKind weapon) const |
| bool | getGamepadEnabled () const |
| void | setGamepadEnabled (bool enabled) |
| float | getGamepadDeadzone () const |
| void | setGamepadDeadzone (float deadzone) |
| unsigned int | getGamepadShootButton () const |
| void | setGamepadShootButton (unsigned int button) |
| unsigned int | getGamepadReloadButton () const |
| void | setGamepadReloadButton (unsigned int button) |
| unsigned int | getGamepadValidateButton () const |
| void | setGamepadValidateButton (unsigned int button) |
| float | getGamepadCursorSpeed () const |
| void | setGamepadCursorSpeed (float speed) |
| unsigned int | getGamepadPauseButton () const |
| void | setGamepadPauseButton (unsigned int button) |
| bool | save (const std::string &filename="config/settings.cfg") |
| bool | load (const std::string &filename="config/settings.cfg") |
| bool | loadFromClientJson (const std::string &filename) |
Private Member Functions | |
| void | initDefaultKeyBindings () |
| sf::Keyboard::Key | stringToKey (const std::string &keyName) const |
Private Attributes | |
| std::unordered_map< KeyAction, sf::Keyboard::Key > | _keyBindings |
| float | _masterVolume {1.0f} |
| float | _musicVolume {0.7f} |
| float | _sfxVolume {0.8f} |
| Language | _language {Language::English} |
| ColorBlindMode | _colorBlindMode {ColorBlindMode::None} |
| bool | _highContrast {false} |
| Difficulty | _difficulty {Difficulty::Normal} |
| ecs::components::WeaponKind | _selectedWeapon {ecs::components::WeaponKind::Classic} |
| bool | _gamepadEnabled {true} |
| float | _gamepadDeadzone {15.0f} |
| unsigned int | _gamepadShootButton {0} |
| unsigned int | _gamepadReloadButton {2} |
| unsigned int | _gamepadValidateButton {0} |
| float | _gamepadCursorSpeed {8.0f} |
| unsigned int | _gamepadPauseButton {7} |
| std::vector< VolumeCallback > | _onMasterVolumeChanged |
| std::vector< VolumeCallback > | _onMusicVolumeChanged |
| std::vector< VolumeCallback > | _onSfxVolumeChanged |
| std::vector< LanguageCallback > | _onLanguageChanged |
Manages game settings and preferences.
Definition at line 67 of file Settings.hpp.
| using rtp::client::Settings::LanguageCallback = std::function<void(Language)> |
Definition at line 121 of file Settings.hpp.
| using rtp::client::Settings::VolumeCallback = std::function<void(float)> |
Definition at line 96 of file Settings.hpp.
| rtp::client::Settings::Settings | ( | ) |
Definition at line 15 of file Settings.cpp.
References rtp::log::info(), initDefaultKeyBindings(), load(), loadFromClientJson(), and rtp::log::warning().
|
inline |
Definition at line 128 of file Settings.hpp.
References _colorBlindMode.
Referenced by rtp::client::scenes::SettingsScene::onEnter(), and rtp::client::Application::render().
| std::string rtp::client::Settings::getColorBlindModeName | ( | ColorBlindMode | mode | ) | const |
Definition at line 284 of file Settings.cpp.
References rtp::client::Deuteranopia, rtp::client::None, rtp::client::Protanopia, and rtp::client::Tritanopia.
|
inline |
Definition at line 150 of file Settings.hpp.
References _difficulty.
Referenced by rtp::client::scenes::SettingsScene::onEnter().
| std::string rtp::client::Settings::getDifficultyName | ( | Difficulty | difficulty | ) | const |
Definition at line 300 of file Settings.cpp.
References rtp::client::Easy, rtp::client::Hard, rtp::client::Infernal, and rtp::client::Normal.
|
inline |
Definition at line 224 of file Settings.hpp.
References _gamepadCursorSpeed.
Referenced by rtp::client::UISystem::updateGamepadCursor().
|
inline |
Definition at line 184 of file Settings.hpp.
References _gamepadDeadzone.
Referenced by rtp::client::scenes::GamepadSettingsScene::onEnter(), rtp::client::InputSystem::update(), and rtp::client::UISystem::updateGamepadCursor().
|
inline |
Definition at line 174 of file Settings.hpp.
References _gamepadEnabled.
Referenced by rtp::client::scenes::GamepadSettingsScene::handleEvent(), rtp::client::scenes::PlayingScene::handleEvent(), rtp::client::UISystem::handleGamepadInput(), rtp::client::scenes::GamepadSettingsScene::onEnter(), rtp::client::UISystem::renderGamepadCursor(), rtp::client::InputSystem::update(), and rtp::client::UISystem::updateGamepadCursor().
|
inline |
Definition at line 234 of file Settings.hpp.
References _gamepadPauseButton.
Referenced by rtp::client::scenes::PlayingScene::handleEvent(), rtp::client::scenes::GamepadSettingsScene::onEnter(), and rtp::client::scenes::GamepadSettingsScene::refreshButtonLabel().
|
inline |
Definition at line 204 of file Settings.hpp.
References _gamepadReloadButton.
Referenced by rtp::client::scenes::GamepadSettingsScene::onEnter(), rtp::client::scenes::GamepadSettingsScene::refreshButtonLabel(), and rtp::client::InputSystem::update().
|
inline |
Definition at line 194 of file Settings.hpp.
References _gamepadShootButton.
Referenced by rtp::client::scenes::GamepadSettingsScene::onEnter(), rtp::client::scenes::GamepadSettingsScene::refreshButtonLabel(), and rtp::client::InputSystem::update().
|
inline |
Definition at line 214 of file Settings.hpp.
References _gamepadValidateButton.
Referenced by rtp::client::UISystem::handleGamepadInput().
|
inline |
Definition at line 140 of file Settings.hpp.
References _highContrast.
| sf::Keyboard::Key rtp::client::Settings::getKey | ( | KeyAction | action | ) | const |
Definition at line 171 of file Settings.cpp.
References _keyBindings.
Referenced by rtp::client::scenes::KeyBindingScene::onEnter(), rtp::client::scenes::KeyBindingScene::refreshButtonLabel(), rtp::client::scenes::PlayingScene::update(), and rtp::client::InputSystem::update().
| std::string rtp::client::Settings::getKeyName | ( | sf::Keyboard::Key | key | ) | const |
Definition at line 185 of file Settings.cpp.
Referenced by rtp::client::scenes::KeyBindingScene::handleEvent(), rtp::client::scenes::KeyBindingScene::onEnter(), and rtp::client::scenes::KeyBindingScene::refreshButtonLabel().
|
inline |
Definition at line 113 of file Settings.hpp.
References _language.
Referenced by rtp::client::scenes::SettingsScene::onEnter(), and rtp::client::scenes::SettingsScene::onExit().
| std::string rtp::client::Settings::getLanguageName | ( | Language | lang | ) | const |
Definition at line 266 of file Settings.cpp.
References rtp::client::English, rtp::client::French, rtp::client::German, rtp::client::Italian, and rtp::client::Spanish.
|
inline |
Definition at line 75 of file Settings.hpp.
References _masterVolume.
Referenced by rtp::client::Application::initUiSystems(), rtp::client::Application::initWorldSystems(), and rtp::client::scenes::SettingsScene::onEnter().
|
inline |
Definition at line 82 of file Settings.hpp.
References _musicVolume.
Referenced by rtp::client::Application::initUiSystems(), rtp::client::Application::initWorldSystems(), and rtp::client::scenes::SettingsScene::onEnter().
|
inline |
Definition at line 162 of file Settings.hpp.
References _selectedWeapon.
Referenced by rtp::client::scenes::LoginScene::onEnter(), rtp::client::scenes::MenuScene::onEnter(), and rtp::client::scenes::MenuScene::updateWeaponDisplay().
|
inline |
Definition at line 89 of file Settings.hpp.
References _sfxVolume.
Referenced by rtp::client::Application::initUiSystems(), rtp::client::Application::initWorldSystems(), rtp::client::scenes::SettingsScene::onEnter(), and rtp::client::InputSystem::playShotSound().
| std::string rtp::client::Settings::getWeaponName | ( | ecs::components::WeaponKind | weapon | ) | const |
Definition at line 316 of file Settings.cpp.
References rtp::ecs::components::Beam, rtp::ecs::components::Boomerang, rtp::ecs::components::Classic, rtp::config::getWeaponDisplayName(), rtp::config::hasWeaponConfigs(), and rtp::ecs::components::Tracker.
Referenced by rtp::client::scenes::MenuScene::onEnter(), and rtp::client::scenes::MenuScene::updateWeaponDisplay().
|
private |
Definition at line 28 of file Settings.cpp.
References _keyBindings, rtp::client::Menu, rtp::client::MoveDown, rtp::client::MoveLeft, rtp::client::MoveRight, rtp::client::MoveUp, rtp::client::Pause, rtp::client::Reload, and rtp::client::Shoot.
Referenced by Settings().
| bool rtp::client::Settings::load | ( | const std::string & | filename = "config/settings.cfg" | ) |
Definition at line 379 of file Settings.cpp.
References _colorBlindMode, _difficulty, _gamepadCursorSpeed, _gamepadDeadzone, _gamepadEnabled, _gamepadPauseButton, _gamepadReloadButton, _gamepadShootButton, _gamepadValidateButton, _highContrast, _keyBindings, _language, _masterVolume, _musicVolume, _selectedWeapon, and _sfxVolume.
Referenced by Settings().
| bool rtp::client::Settings::loadFromClientJson | ( | const std::string & | filename | ) |
Definition at line 40 of file Settings.cpp.
References _keyBindings, _masterVolume, _musicVolume, _sfxVolume, rtp::log::error(), rtp::log::info(), rtp::client::MoveDown, rtp::client::MoveLeft, rtp::client::MoveRight, rtp::client::MoveUp, rtp::client::Reload, rtp::client::Shoot, and stringToKey().
Referenced by Settings().
|
inline |
Definition at line 123 of file Settings.hpp.
References _onLanguageChanged.
Referenced by rtp::client::Application::setupSettingsCallbacks().
|
inline |
Definition at line 98 of file Settings.hpp.
References _onMasterVolumeChanged.
Referenced by rtp::client::Application::setupSettingsCallbacks().
|
inline |
Definition at line 103 of file Settings.hpp.
References _onMusicVolumeChanged.
Referenced by rtp::client::Application::setupSettingsCallbacks().
|
inline |
Definition at line 108 of file Settings.hpp.
References _onSfxVolumeChanged.
Referenced by rtp::client::Application::setupSettingsCallbacks().
| bool rtp::client::Settings::save | ( | const std::string & | filename = "config/settings.cfg" | ) |
Definition at line 339 of file Settings.cpp.
References _colorBlindMode, _difficulty, _gamepadCursorSpeed, _gamepadDeadzone, _gamepadEnabled, _gamepadPauseButton, _gamepadReloadButton, _gamepadShootButton, _gamepadValidateButton, _highContrast, _keyBindings, _language, _masterVolume, _musicVolume, _selectedWeapon, _sfxVolume, rtp::log::error(), and rtp::log::info().
Referenced by rtp::client::scenes::GamepadSettingsScene::handleEvent(), rtp::client::scenes::KeyBindingScene::handleEvent(), rtp::client::scenes::GamepadSettingsScene::onEnter(), rtp::client::scenes::SettingsScene::onEnter(), rtp::client::scenes::KeyBindingScene::onEnter(), and rtp::client::scenes::MenuScene::onEnter().
|
inline |
Definition at line 133 of file Settings.hpp.
References _colorBlindMode.
Referenced by rtp::client::scenes::SettingsScene::onEnter().
|
inline |
Definition at line 155 of file Settings.hpp.
References _difficulty.
Referenced by rtp::client::scenes::SettingsScene::onEnter().
|
inline |
Definition at line 229 of file Settings.hpp.
References _gamepadCursorSpeed.
|
inline |
Definition at line 189 of file Settings.hpp.
References _gamepadDeadzone.
Referenced by rtp::client::scenes::GamepadSettingsScene::onEnter().
|
inline |
Definition at line 179 of file Settings.hpp.
References _gamepadEnabled.
Referenced by rtp::client::scenes::GamepadSettingsScene::onEnter().
|
inline |
Definition at line 239 of file Settings.hpp.
References _gamepadPauseButton.
Referenced by rtp::client::scenes::GamepadSettingsScene::handleEvent().
|
inline |
Definition at line 209 of file Settings.hpp.
References _gamepadReloadButton.
Referenced by rtp::client::scenes::GamepadSettingsScene::handleEvent().
|
inline |
Definition at line 199 of file Settings.hpp.
References _gamepadShootButton.
Referenced by rtp::client::scenes::GamepadSettingsScene::handleEvent().
|
inline |
Definition at line 219 of file Settings.hpp.
References _gamepadValidateButton.
|
inline |
Definition at line 145 of file Settings.hpp.
References _highContrast.
| void rtp::client::Settings::setKey | ( | KeyAction | action, |
| sf::Keyboard::Key | key | ||
| ) |
Definition at line 180 of file Settings.cpp.
References _keyBindings.
Referenced by rtp::client::scenes::KeyBindingScene::handleEvent().
| void rtp::client::Settings::setLanguage | ( | Language | lang | ) |
Definition at line 255 of file Settings.cpp.
References _language, and _onLanguageChanged.
Referenced by rtp::client::scenes::SettingsScene::onEnter().
| void rtp::client::Settings::setMasterVolume | ( | float | volume | ) |
Definition at line 228 of file Settings.cpp.
References _masterVolume, and _onMasterVolumeChanged.
Referenced by rtp::client::scenes::SettingsScene::onEnter().
| void rtp::client::Settings::setMusicVolume | ( | float | volume | ) |
Definition at line 237 of file Settings.cpp.
References _musicVolume, and _onMusicVolumeChanged.
Referenced by rtp::client::scenes::SettingsScene::onEnter().
|
inline |
Definition at line 167 of file Settings.hpp.
References _selectedWeapon.
Referenced by rtp::client::scenes::MenuScene::onEnter().
| void rtp::client::Settings::setSfxVolume | ( | float | volume | ) |
Definition at line 246 of file Settings.cpp.
References _onSfxVolumeChanged, and _sfxVolume.
Referenced by rtp::client::scenes::SettingsScene::onEnter().
|
private |
Definition at line 128 of file Settings.cpp.
Referenced by loadFromClientJson().
|
private |
Definition at line 260 of file Settings.hpp.
Referenced by getColorBlindMode(), load(), save(), and setColorBlindMode().
|
private |
Definition at line 262 of file Settings.hpp.
Referenced by getDifficulty(), load(), save(), and setDifficulty().
|
private |
Definition at line 271 of file Settings.hpp.
Referenced by getGamepadCursorSpeed(), load(), save(), and setGamepadCursorSpeed().
|
private |
Definition at line 267 of file Settings.hpp.
Referenced by getGamepadDeadzone(), load(), save(), and setGamepadDeadzone().
|
private |
Definition at line 266 of file Settings.hpp.
Referenced by getGamepadEnabled(), load(), save(), and setGamepadEnabled().
|
private |
Definition at line 272 of file Settings.hpp.
Referenced by getGamepadPauseButton(), load(), save(), and setGamepadPauseButton().
|
private |
Definition at line 269 of file Settings.hpp.
Referenced by getGamepadReloadButton(), load(), save(), and setGamepadReloadButton().
|
private |
Definition at line 268 of file Settings.hpp.
Referenced by getGamepadShootButton(), load(), save(), and setGamepadShootButton().
|
private |
Definition at line 270 of file Settings.hpp.
Referenced by getGamepadValidateButton(), load(), save(), and setGamepadValidateButton().
|
private |
Definition at line 261 of file Settings.hpp.
Referenced by getHighContrast(), load(), save(), and setHighContrast().
|
private |
Definition at line 250 of file Settings.hpp.
Referenced by getKey(), initDefaultKeyBindings(), load(), loadFromClientJson(), save(), and setKey().
|
private |
Definition at line 258 of file Settings.hpp.
Referenced by getLanguage(), load(), save(), and setLanguage().
|
private |
Definition at line 254 of file Settings.hpp.
Referenced by getMasterVolume(), load(), loadFromClientJson(), save(), and setMasterVolume().
|
private |
Definition at line 255 of file Settings.hpp.
Referenced by getMusicVolume(), load(), loadFromClientJson(), save(), and setMusicVolume().
|
private |
Definition at line 277 of file Settings.hpp.
Referenced by onLanguageChanged(), and setLanguage().
|
private |
Definition at line 274 of file Settings.hpp.
Referenced by onMasterVolumeChanged(), and setMasterVolume().
|
private |
Definition at line 275 of file Settings.hpp.
Referenced by onMusicVolumeChanged(), and setMusicVolume().
|
private |
Definition at line 276 of file Settings.hpp.
Referenced by onSfxVolumeChanged(), and setSfxVolume().
|
private |
Definition at line 263 of file Settings.hpp.
Referenced by getSelectedWeapon(), load(), save(), and setSelectedWeapon().
|
private |
Definition at line 256 of file Settings.hpp.
Referenced by getSfxVolume(), load(), loadFromClientJson(), save(), and setSfxVolume().