#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 instantText; ConfigVar sunsSong; // Preferences ConfigVar enableMirrorMode; ConfigVar invertCameraXAxis; ConfigVar disableMainHUD; ConfigVar pauseOnFocusLost; ConfigVar enableLinkDollRotation; // Graphics ConfigVar bloomMode; ConfigVar bloomMultiplier; ConfigVar disableWaterRefraction; ConfigVar enableFrameInterpolation; ConfigVar internalResolutionScale; ConfigVar shadowResolutionMultiplier; ConfigVar enableDepthOfField; // Audio ConfigVar noLowHpSound; ConfigVar midnasLamentNonStop; // Input ConfigVar enableGyroAim; ConfigVar enableGyroRollgoal; ConfigVar gyroSensitivityX; ConfigVar gyroSensitivityY; ConfigVar gyroSensitivityRollgoal; ConfigVar gyroSmoothing; ConfigVar gyroDeadband; ConfigVar gyroInvertPitch; ConfigVar gyroInvertYaw; // Cheats ConfigVar infiniteHearts; ConfigVar infiniteArrows; ConfigVar infiniteBombs; ConfigVar infiniteOil; ConfigVar infiniteOxygen; ConfigVar infiniteRupees; ConfigVar enableIndefiniteItemDrops; ConfigVar moonJump; ConfigVar superClawshot; ConfigVar alwaysGreatspin; 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; ConfigVar duskMenuOpen; ConfigVar cardFileType; } 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; bool stateShareLoadActive; }; TransientSettings& getTransientSettings(); } #endif // DUSK_CONFIG_H