GlobalSettings.hh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef GLOBALSETTINGS_HH
  2. #define GLOBALSETTINGS_HH
  3. #include "Observer.hh"
  4. #include "BooleanSetting.hh"
  5. #include "EnumSetting.hh"
  6. #include "IntegerSetting.hh"
  7. #include "StringSetting.hh"
  8. #include "SpeedManager.hh"
  9. #include "ThrottleManager.hh"
  10. #include "ResampledSoundDevice.hh"
  11. #include <memory>
  12. #include <vector>
  13. namespace openmsx {
  14. class GlobalCommandController;
  15. /**
  16. * This class contains settings that are used by several other class
  17. * (including some singletons). This class was introduced to solve
  18. * lifetime management issues.
  19. */
  20. class GlobalSettings final : private Observer<Setting>
  21. {
  22. public:
  23. explicit GlobalSettings(GlobalCommandController& commandController);
  24. ~GlobalSettings();
  25. BooleanSetting& getPauseSetting() {
  26. return pauseSetting;
  27. }
  28. BooleanSetting& getPowerSetting() {
  29. return powerSetting;
  30. }
  31. BooleanSetting& getAutoSaveSetting() {
  32. return autoSaveSetting;
  33. }
  34. StringSetting& getUMRCallBackSetting() {
  35. return umrCallBackSetting;
  36. }
  37. StringSetting& getInvalidPsgDirectionsSetting() {
  38. return invalidPsgDirectionsSetting;
  39. }
  40. StringSetting& getInvalidPpiModeSetting() {
  41. return invalidPpiModeSetting;
  42. }
  43. EnumSetting<ResampledSoundDevice::ResampleType>& getResampleSetting() {
  44. return resampleSetting;
  45. }
  46. IntegerSetting& getJoyDeadzoneSetting(int i) {
  47. return *deadzoneSettings[i];
  48. }
  49. SpeedManager& getSpeedManager() {
  50. return speedManager;
  51. }
  52. ThrottleManager& getThrottleManager() {
  53. return throttleManager;
  54. }
  55. private:
  56. // Observer<Setting>
  57. void update(const Setting& setting) override;
  58. GlobalCommandController& commandController;
  59. BooleanSetting pauseSetting;
  60. BooleanSetting powerSetting;
  61. BooleanSetting autoSaveSetting;
  62. StringSetting umrCallBackSetting;
  63. StringSetting invalidPsgDirectionsSetting;
  64. StringSetting invalidPpiModeSetting;
  65. EnumSetting<ResampledSoundDevice::ResampleType> resampleSetting;
  66. std::vector<std::unique_ptr<IntegerSetting>> deadzoneSettings;
  67. SpeedManager speedManager;
  68. ThrottleManager throttleManager;
  69. };
  70. } // namespace openmsx
  71. #endif