Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
Loading...
Searching...
No Matches
rtp::client::Settings Class Reference

Manages game settings and preferences. More...

#include <Settings.hpp>

Collaboration diagram for rtp::client::Settings:

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
 

Detailed Description

Manages game settings and preferences.

Definition at line 67 of file Settings.hpp.

Member Typedef Documentation

◆ LanguageCallback

using rtp::client::Settings::LanguageCallback = std::function<void(Language)>

Definition at line 121 of file Settings.hpp.

◆ VolumeCallback

using rtp::client::Settings::VolumeCallback = std::function<void(float)>

Definition at line 96 of file Settings.hpp.

Constructor & Destructor Documentation

◆ Settings()

rtp::client::Settings::Settings ( )

Member Function Documentation

◆ getColorBlindMode()

ColorBlindMode rtp::client::Settings::getColorBlindMode ( ) const
inline

◆ getColorBlindModeName()

std::string rtp::client::Settings::getColorBlindModeName ( ColorBlindMode  mode) const

◆ getDifficulty()

Difficulty rtp::client::Settings::getDifficulty ( ) const
inline

Definition at line 150 of file Settings.hpp.

References _difficulty.

Referenced by rtp::client::scenes::SettingsScene::onEnter().

◆ getDifficultyName()

std::string rtp::client::Settings::getDifficultyName ( Difficulty  difficulty) const

◆ getGamepadCursorSpeed()

float rtp::client::Settings::getGamepadCursorSpeed ( ) const
inline

Definition at line 224 of file Settings.hpp.

References _gamepadCursorSpeed.

Referenced by rtp::client::UISystem::updateGamepadCursor().

◆ getGamepadDeadzone()

float rtp::client::Settings::getGamepadDeadzone ( ) const
inline

◆ getGamepadEnabled()

◆ getGamepadPauseButton()

unsigned int rtp::client::Settings::getGamepadPauseButton ( ) const
inline

◆ getGamepadReloadButton()

unsigned int rtp::client::Settings::getGamepadReloadButton ( ) const
inline

◆ getGamepadShootButton()

unsigned int rtp::client::Settings::getGamepadShootButton ( ) const
inline

◆ getGamepadValidateButton()

unsigned int rtp::client::Settings::getGamepadValidateButton ( ) const
inline

Definition at line 214 of file Settings.hpp.

References _gamepadValidateButton.

Referenced by rtp::client::UISystem::handleGamepadInput().

◆ getHighContrast()

bool rtp::client::Settings::getHighContrast ( ) const
inline

Definition at line 140 of file Settings.hpp.

References _highContrast.

◆ getKey()

◆ getKeyName()

std::string rtp::client::Settings::getKeyName ( sf::Keyboard::Key  key) const

◆ getLanguage()

Language rtp::client::Settings::getLanguage ( ) const
inline

◆ getLanguageName()

std::string rtp::client::Settings::getLanguageName ( Language  lang) const

◆ getMasterVolume()

float rtp::client::Settings::getMasterVolume ( ) const
inline

◆ getMusicVolume()

float rtp::client::Settings::getMusicVolume ( ) const
inline

◆ getSelectedWeapon()

◆ getSfxVolume()

◆ getWeaponName()

◆ initDefaultKeyBindings()

void rtp::client::Settings::initDefaultKeyBindings ( )
private

◆ load()

bool rtp::client::Settings::load ( const std::string &  filename = "config/settings.cfg")

◆ loadFromClientJson()

bool rtp::client::Settings::loadFromClientJson ( const std::string &  filename)

◆ onLanguageChanged()

void rtp::client::Settings::onLanguageChanged ( LanguageCallback  callback)
inline

Definition at line 123 of file Settings.hpp.

References _onLanguageChanged.

Referenced by rtp::client::Application::setupSettingsCallbacks().

◆ onMasterVolumeChanged()

void rtp::client::Settings::onMasterVolumeChanged ( VolumeCallback  callback)
inline

Definition at line 98 of file Settings.hpp.

References _onMasterVolumeChanged.

Referenced by rtp::client::Application::setupSettingsCallbacks().

◆ onMusicVolumeChanged()

void rtp::client::Settings::onMusicVolumeChanged ( VolumeCallback  callback)
inline

Definition at line 103 of file Settings.hpp.

References _onMusicVolumeChanged.

Referenced by rtp::client::Application::setupSettingsCallbacks().

◆ onSfxVolumeChanged()

void rtp::client::Settings::onSfxVolumeChanged ( VolumeCallback  callback)
inline

Definition at line 108 of file Settings.hpp.

References _onSfxVolumeChanged.

Referenced by rtp::client::Application::setupSettingsCallbacks().

◆ save()

◆ setColorBlindMode()

void rtp::client::Settings::setColorBlindMode ( ColorBlindMode  mode)
inline

Definition at line 133 of file Settings.hpp.

References _colorBlindMode.

Referenced by rtp::client::scenes::SettingsScene::onEnter().

◆ setDifficulty()

void rtp::client::Settings::setDifficulty ( Difficulty  difficulty)
inline

Definition at line 155 of file Settings.hpp.

References _difficulty.

Referenced by rtp::client::scenes::SettingsScene::onEnter().

◆ setGamepadCursorSpeed()

void rtp::client::Settings::setGamepadCursorSpeed ( float  speed)
inline

Definition at line 229 of file Settings.hpp.

References _gamepadCursorSpeed.

◆ setGamepadDeadzone()

void rtp::client::Settings::setGamepadDeadzone ( float  deadzone)
inline

Definition at line 189 of file Settings.hpp.

References _gamepadDeadzone.

Referenced by rtp::client::scenes::GamepadSettingsScene::onEnter().

◆ setGamepadEnabled()

void rtp::client::Settings::setGamepadEnabled ( bool  enabled)
inline

Definition at line 179 of file Settings.hpp.

References _gamepadEnabled.

Referenced by rtp::client::scenes::GamepadSettingsScene::onEnter().

◆ setGamepadPauseButton()

void rtp::client::Settings::setGamepadPauseButton ( unsigned int  button)
inline

Definition at line 239 of file Settings.hpp.

References _gamepadPauseButton.

Referenced by rtp::client::scenes::GamepadSettingsScene::handleEvent().

◆ setGamepadReloadButton()

void rtp::client::Settings::setGamepadReloadButton ( unsigned int  button)
inline

◆ setGamepadShootButton()

void rtp::client::Settings::setGamepadShootButton ( unsigned int  button)
inline

Definition at line 199 of file Settings.hpp.

References _gamepadShootButton.

Referenced by rtp::client::scenes::GamepadSettingsScene::handleEvent().

◆ setGamepadValidateButton()

void rtp::client::Settings::setGamepadValidateButton ( unsigned int  button)
inline

Definition at line 219 of file Settings.hpp.

References _gamepadValidateButton.

◆ setHighContrast()

void rtp::client::Settings::setHighContrast ( bool  enabled)
inline

Definition at line 145 of file Settings.hpp.

References _highContrast.

◆ setKey()

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().

◆ setLanguage()

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().

◆ setMasterVolume()

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().

◆ setMusicVolume()

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().

◆ setSelectedWeapon()

void rtp::client::Settings::setSelectedWeapon ( ecs::components::WeaponKind  weapon)
inline

Definition at line 167 of file Settings.hpp.

References _selectedWeapon.

Referenced by rtp::client::scenes::MenuScene::onEnter().

◆ setSfxVolume()

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().

◆ stringToKey()

sf::Keyboard::Key rtp::client::Settings::stringToKey ( const std::string &  keyName) const
private

Definition at line 128 of file Settings.cpp.

Referenced by loadFromClientJson().

Member Data Documentation

◆ _colorBlindMode

ColorBlindMode rtp::client::Settings::_colorBlindMode {ColorBlindMode::None}
private

Definition at line 260 of file Settings.hpp.

Referenced by getColorBlindMode(), load(), save(), and setColorBlindMode().

◆ _difficulty

Difficulty rtp::client::Settings::_difficulty {Difficulty::Normal}
private

Definition at line 262 of file Settings.hpp.

Referenced by getDifficulty(), load(), save(), and setDifficulty().

◆ _gamepadCursorSpeed

float rtp::client::Settings::_gamepadCursorSpeed {8.0f}
private

Definition at line 271 of file Settings.hpp.

Referenced by getGamepadCursorSpeed(), load(), save(), and setGamepadCursorSpeed().

◆ _gamepadDeadzone

float rtp::client::Settings::_gamepadDeadzone {15.0f}
private

Definition at line 267 of file Settings.hpp.

Referenced by getGamepadDeadzone(), load(), save(), and setGamepadDeadzone().

◆ _gamepadEnabled

bool rtp::client::Settings::_gamepadEnabled {true}
private

Definition at line 266 of file Settings.hpp.

Referenced by getGamepadEnabled(), load(), save(), and setGamepadEnabled().

◆ _gamepadPauseButton

unsigned int rtp::client::Settings::_gamepadPauseButton {7}
private

Definition at line 272 of file Settings.hpp.

Referenced by getGamepadPauseButton(), load(), save(), and setGamepadPauseButton().

◆ _gamepadReloadButton

unsigned int rtp::client::Settings::_gamepadReloadButton {2}
private

Definition at line 269 of file Settings.hpp.

Referenced by getGamepadReloadButton(), load(), save(), and setGamepadReloadButton().

◆ _gamepadShootButton

unsigned int rtp::client::Settings::_gamepadShootButton {0}
private

Definition at line 268 of file Settings.hpp.

Referenced by getGamepadShootButton(), load(), save(), and setGamepadShootButton().

◆ _gamepadValidateButton

unsigned int rtp::client::Settings::_gamepadValidateButton {0}
private

Definition at line 270 of file Settings.hpp.

Referenced by getGamepadValidateButton(), load(), save(), and setGamepadValidateButton().

◆ _highContrast

bool rtp::client::Settings::_highContrast {false}
private

Definition at line 261 of file Settings.hpp.

Referenced by getHighContrast(), load(), save(), and setHighContrast().

◆ _keyBindings

std::unordered_map<KeyAction, sf::Keyboard::Key> rtp::client::Settings::_keyBindings
private

Definition at line 250 of file Settings.hpp.

Referenced by getKey(), initDefaultKeyBindings(), load(), loadFromClientJson(), save(), and setKey().

◆ _language

Language rtp::client::Settings::_language {Language::English}
private

Definition at line 258 of file Settings.hpp.

Referenced by getLanguage(), load(), save(), and setLanguage().

◆ _masterVolume

float rtp::client::Settings::_masterVolume {1.0f}
private

Definition at line 254 of file Settings.hpp.

Referenced by getMasterVolume(), load(), loadFromClientJson(), save(), and setMasterVolume().

◆ _musicVolume

float rtp::client::Settings::_musicVolume {0.7f}
private

Definition at line 255 of file Settings.hpp.

Referenced by getMusicVolume(), load(), loadFromClientJson(), save(), and setMusicVolume().

◆ _onLanguageChanged

std::vector<LanguageCallback> rtp::client::Settings::_onLanguageChanged
private

Definition at line 277 of file Settings.hpp.

Referenced by onLanguageChanged(), and setLanguage().

◆ _onMasterVolumeChanged

std::vector<VolumeCallback> rtp::client::Settings::_onMasterVolumeChanged
private

Definition at line 274 of file Settings.hpp.

Referenced by onMasterVolumeChanged(), and setMasterVolume().

◆ _onMusicVolumeChanged

std::vector<VolumeCallback> rtp::client::Settings::_onMusicVolumeChanged
private

Definition at line 275 of file Settings.hpp.

Referenced by onMusicVolumeChanged(), and setMusicVolume().

◆ _onSfxVolumeChanged

std::vector<VolumeCallback> rtp::client::Settings::_onSfxVolumeChanged
private

Definition at line 276 of file Settings.hpp.

Referenced by onSfxVolumeChanged(), and setSfxVolume().

◆ _selectedWeapon

ecs::components::WeaponKind rtp::client::Settings::_selectedWeapon {ecs::components::WeaponKind::Classic}
private

Definition at line 263 of file Settings.hpp.

Referenced by getSelectedWeapon(), load(), save(), and setSelectedWeapon().

◆ _sfxVolume

float rtp::client::Settings::_sfxVolume {0.8f}
private

Definition at line 256 of file Settings.hpp.

Referenced by getSfxVolume(), load(), loadFromClientJson(), save(), and setSfxVolume().


The documentation for this class was generated from the following files: