summaryrefslogtreecommitdiff
path: root/Config.cs
blob: d456269fc594a000b9dd40d144648a76ecdb2880 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
//#define SHADER_FEATURES

using SharpPluginLoader.Core.Configuration;
using SharpPluginLoader.Core;

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 PatchConfig Patches { get; set; } = new PatchConfig();

        public Dictionary<string, List<Override>> Globals { get; set; } = new Dictionary<string, List<Override>>();
        public string SelectedGlobal { get; set; } = "";
        public Dictionary<StageExt, List<Override>> Overrides { get; set; } = new Dictionary<StageExt, List<Override>>();
        public Dictionary<string, List<Override>> Sets { get; set; } = new Dictionary<string, List<Override>>();
    }
}