#ifndef DUSK_CONFIG_H #define DUSK_CONFIG_H #include "dusk/config_var.hpp" namespace dusk { using namespace config; // 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 biggerWallets; ConfigVar noReturnRupees; ConfigVar disableRupeeCutscenes; ConfigVar noSwordRecoil; ConfigVar damageMultiplier; ConfigVar instantDeath; ConfigVar fastClimbing; ConfigVar noMissClimbing; ConfigVar fastTears; ConfigVar instantSaves; // Preferences ConfigVar enableMirrorMode; ConfigVar invertCameraXAxis; // Graphics ConfigVar enableBloom; ConfigVar useWaterProjectionOffset; ConfigVar enableFrameInterpolation; // Audio ConfigVar noLowHpSound; ConfigVar midnasLamentNonStop; // 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; } 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; }; TransientSettings& getTransientSettings(); } #endif // DUSK_CONFIG_H