Add transport/transfer effect for NEXT → grid with cross-fade and preview swap Integrate in-grid Starfield3D with magnet targeting tied to active piece Spawn ambient sparkles and impact sparks (hard-drop crackle + burst on expiry) Smooth horizontal/fall interpolation for active piece (configurable smooth scroll) Refactor next panel / preview rendering and connector drawing Tweak stats/score panel layout, progress bars and typography for compact view Preserve safe alpha handling and restore renderer blend/scale state after overlays
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
#pragma once
|
|
#include <string>
|
|
|
|
/**
|
|
* 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;
|
|
};
|