//#define SHADER_FEATURES using SharpPluginLoader.Core.Configuration; namespace WorldTuningTool { using static Plugin; public enum StageExt : uint { Global = 0, InfinityOfNothingHandler = 100, AncientForest = 101, WildspireWaste = 102, CoralHighlands = 103, RottenVale = 104, ElderRecess = 105, GreatRavine = 106, GreatRavineStory = 107, HoarfrostReach = 108, GuidingLands = 109, InfinityOfNothing = 200, SpecialArena = 201, ChallengeArena = 202, Astera = 301, AsteraHub = 302, ResearchBase = 303, Seliana = 305, SelianaHub = 306, Opening = 401, Everstream = 403, ConfluenceOfFates = 405, AncientForestOpening = 406, CharacterCreation = 407, DebugMap = 408, ElDorado = 409, SelianaSupplyCache = 411, OriginIsleNergigante = 412, OriginIsleSharaIshvalda = 413, SecludedValley = 415, AlatreonStage = 416, CastleSchrade = 417, LivingQuarters = 501, PrivateQuarters = 502, PrivateSuite = 503, TrainingCamp = 504, ChamberOfFive = 505, SelianaRoom = 506 } public class Config : IConfig { public String Name => "WorldTuningTool"; public String Version => "0.9.4"; public static string StageToString(StageExt stage) { switch (stage) { case StageExt.Global: return "Global"; case StageExt.InfinityOfNothingHandler: return "Infinity Of Nothing Handler"; case StageExt.AncientForest: return "Ancient Forest"; case StageExt.WildspireWaste: return "Wildspire Waste"; case StageExt.CoralHighlands: return "Coral Highlands"; case StageExt.RottenVale: return "Rotten Vale"; case StageExt.ElderRecess: return "Elder Recess"; case StageExt.GreatRavine: return "Great Ravine"; case StageExt.GreatRavineStory: return "Great Ravine Story"; case StageExt.HoarfrostReach: return "Hoarfrost Reach"; case StageExt.GuidingLands: return "Guiding Lands"; case StageExt.InfinityOfNothing: return "Infinity Of Nothing"; case StageExt.SpecialArena: return "Special Arena"; case StageExt.ChallengeArena: return "Challenge Arena"; case StageExt.Astera: return "Astera"; case StageExt.AsteraHub: return "Astera Hub"; case StageExt.ResearchBase: return "Research Base"; case StageExt.Seliana: return "Seliana"; case StageExt.SelianaHub: return "Seliana Hub"; case StageExt.Opening: return "Opening"; case StageExt.Everstream: return "Everstream"; case StageExt.ConfluenceOfFates: return "Confluence Of Fates"; case StageExt.AncientForestOpening: return "Ancient Forest (Opening)"; case StageExt.CharacterCreation: return "Character Creation"; case StageExt.DebugMap: return "Debug Map"; case StageExt.ElDorado: return "El Dorado"; case StageExt.SelianaSupplyCache: return "Seliana Supply Cache"; case StageExt.OriginIsleNergigante: return "Origin Isle Nergigante"; case StageExt.OriginIsleSharaIshvalda: return "Origin Isle Shara Ishvalda"; case StageExt.SecludedValley: return "Secluded Valley"; case StageExt.AlatreonStage: return "Alatreon Stage"; case StageExt.CastleSchrade: return "Castle Schrade"; case StageExt.LivingQuarters: return "Living Quarters"; case StageExt.PrivateQuarters: return "Private Quarters"; case StageExt.PrivateSuite: return "Private Suite"; case StageExt.TrainingCamp: return "Training Camp"; case StageExt.ChamberOfFive: return "Chamber Of Five"; case StageExt.SelianaRoom: return "Seliana Room"; } return $"(Error: {stage})"; } public static readonly StageExt[] OrderedStages = { StageExt.Global, StageExt.Astera, StageExt.AsteraHub, StageExt.ResearchBase, StageExt.Seliana, StageExt.SelianaHub, StageExt.LivingQuarters, StageExt.PrivateQuarters, StageExt.PrivateSuite, StageExt.SelianaRoom, StageExt.TrainingCamp, StageExt.AncientForest, StageExt.WildspireWaste, StageExt.CoralHighlands, StageExt.RottenVale, StageExt.ElderRecess, StageExt.GreatRavine, StageExt.GreatRavineStory, StageExt.HoarfrostReach, StageExt.GuidingLands, StageExt.SpecialArena, StageExt.ChallengeArena, StageExt.Everstream, StageExt.ConfluenceOfFates, StageExt.ElDorado, StageExt.SelianaSupplyCache, StageExt.OriginIsleNergigante, StageExt.OriginIsleSharaIshvalda, StageExt.SecludedValley, StageExt.AlatreonStage, StageExt.CastleSchrade, StageExt.ChamberOfFive, StageExt.Opening, StageExt.AncientForestOpening, StageExt.CharacterCreation, StageExt.InfinityOfNothing, StageExt.InfinityOfNothingHandler, StageExt.DebugMap }; public struct PatchConfig { #if SHADER_FEATURES public bool FullResolutionSSLR { get; set; } = false; #endif public bool FullResolutionVolumeBlur { get; set; } = false; public bool HigherThanHighestVolumeRendering { get; set; } = false; public bool DisableLODLimits { get; set; } = false; public bool LargerFoliageSwayRange { get; set; } = false; public bool DisableReducedRateAnimations { get; set; } = false; public PatchConfig() {} } public bool DisableLightsFeature { get; set; } = false; public PatchConfig Patches { get; set; } = new PatchConfig(); public Dictionary> Globals { get; set; } = new Dictionary>(); public string SelectedGlobal { get; set; } = ""; public Dictionary> Overrides { get; set; } = new Dictionary>(); public Dictionary> Sets { get; set; } = new Dictionary>(); } }