#ifndef DUSK_CONFIG_H #define DUSK_CONFIG_H #include "dusk/config_var.hpp" namespace dusk { using namespace config; enum class BloomMode : int { Off = 0, Classic = 1, Dusk = 2, }; namespace config { template <> struct ConfigEnumRange { static constexpr auto min = BloomMode::Off; static constexpr auto max = BloomMode::Dusk; }; } // Persistent user settings struct UserSettings { // Program settings struct { // Video ConfigVar enableFullscreen; ConfigVar enableVsync; ConfigVar lockAspectRatio; } video; struct { // Audio ConfigVar masterVolume; ConfigVar mainMusicVolume; ConfigVar subMusicVolume; ConfigVar soundEffectsVolume; ConfigVar fanfareVolume; ConfigVar enableReverb; } audio; // Game settings struct { // QoL ConfigVar enableQuickTransform; ConfigVar hideTvSettingsScreen; ConfigVar skipWarningScreen; ConfigVar biggerWallets; ConfigVar noReturnRupees; ConfigVar disableRupeeCutscenes; ConfigVar noSwordRecoil; ConfigVar damageMultiplier; ConfigVar noHeartDrops; ConfigVar instantDeath; ConfigVar fastClimbing; ConfigVar noMissClimbing; ConfigVar fastTears; ConfigVar instantSaves; ConfigVar sunsSong; // Preferences ConfigVar enableMirrorMode; ConfigVar invertCameraXAxis; ConfigVar disableMainHUD; // Graphics ConfigVar bloomMode; ConfigVar bloomMultiplier; ConfigVar enableWaterRefraction; ConfigVar enableFrameInterpolation; ConfigVar shadowResolutionMultiplier; // Audio ConfigVar noLowHpSound; ConfigVar midnasLamentNonStop; // Input ConfigVar enableGyroAim; ConfigVar gyroAimSensitivityX; ConfigVar gyroAimSensitivityY; ConfigVar gyroAimInvertPitch; ConfigVar gyroAimInvertYaw; // Cheats ConfigVar enableFastIronBoots; ConfigVar canTransformAnywhere; ConfigVar fastSpinner; ConfigVar freeMagicArmor; // Technical ConfigVar restoreWiiGlitches; // Controls ConfigVar enableTurboKeybind; } game; struct { ConfigVar isoPath; ConfigVar graphicsBackend; ConfigVar skipPreLaunchUI; ConfigVar showPipelineCompilation; ConfigVar wasPresetChosen; ConfigVar enableCrashReporting; } backend; }; UserSettings& getSettings(); void registerSettings(); // Transient settings struct CollisionViewSettings { bool enableTerrainView; bool enableWireframe; bool enableAtView; bool enableTgView; bool enableCoView; float terrainViewOpacity; float colliderViewOpacity; float drawRange; }; struct TransientSettings { CollisionViewSettings collisionView; bool skipFrameRateLimit; bool moveLinkActive; }; TransientSettings& getTransientSettings(); } #endif // DUSK_CONFIG_H