#pragma once #include /** * Settings - Persistent game settings manager * Handles loading/saving settings to settings.ini */ class Settings { public: // Singleton access static Settings& instance(); // Load settings from file (returns true if file existed) bool load(); // Save settings to file bool save(); // Settings accessors bool isFullscreen() const { return m_fullscreen; } void setFullscreen(bool value) { m_fullscreen = value; } bool isMusicEnabled() const { return m_musicEnabled; } void setMusicEnabled(bool value) { m_musicEnabled = value; } bool isSoundEnabled() const { return m_soundEnabled; } void setSoundEnabled(bool value) { m_soundEnabled = value; } bool isDebugEnabled() const { return m_debugEnabled; } void setDebugEnabled(bool value) { m_debugEnabled = value; } bool isSmoothScrollEnabled() const { return m_smoothScrollEnabled; } void setSmoothScrollEnabled(bool value) { m_smoothScrollEnabled = value; } // Rotation behavior: should pressing UP rotate clockwise? (true = clockwise) bool isUpRotateClockwise() const { return m_upRotateClockwise; } void setUpRotateClockwise(bool value) { m_upRotateClockwise = value; } const std::string& getPlayerName() const { return m_playerName; } void setPlayerName(const std::string& name) { m_playerName = name; } // Get the settings file path static std::string getSettingsPath(); private: Settings(); // Private constructor for singleton Settings(const Settings&) = delete; Settings& operator=(const Settings&) = delete; // Settings values bool m_fullscreen = false; bool m_musicEnabled = true; bool m_soundEnabled = true; bool m_debugEnabled = false; bool m_smoothScrollEnabled = true; std::string m_playerName = "Player"; // Default: UP rotates clockwise bool m_upRotateClockwise = true; };