diff options
| author | 2026-06-18 09:44:53 -0400 | |
|---|---|---|
| committer | 2026-06-18 09:48:11 -0400 | |
| commit | 9ba1a9422b9a1e8ad40a7be84acd7d4b944c267d (patch) | |
| tree | 788c671be0316a295d45f0670bb2cdfca0f1ca13 /Plugin.cs | |
| parent | c691596de197ce3feec1217643b09783010fc415 (diff) | |
| download | WorldTuningTool-9ba1a9422b9a1e8ad40a7be84acd7d4b944c267d.tar.gz WorldTuningTool-9ba1a9422b9a1e8ad40a7be84acd7d4b944c267d.tar.bz2 WorldTuningTool-9ba1a9422b9a1e8ad40a7be84acd7d4b944c267d.zip | |
Cleanup and comment some stuff
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'Plugin.cs')
| -rwxr-xr-x | Plugin.cs | 70 |
1 files changed, 42 insertions, 28 deletions
@@ -22,6 +22,7 @@ using SharpPluginLoader.Core.Memory; using SharpPluginLoader.Core.Entities;
// @TODO:
+// - Configurable Broad Area Shadow Resolution.
// - Optimized update logic.
// - Only update non-override values when ui is shown.
// - Map sky params.
@@ -205,13 +206,18 @@ namespace WorldTuningTool return false;
}
+ // globalOverrides == null: selectedStage is globalStage.
private static bool selectedOverrideSuperseded(Config config, List<Override>? globalOverrides, List<Override>? stageOverrides, Parameter? param)
{
+ // Non-current stage always superseded (inactive).
bool superseded = globalOverrides != null && selectedStage != currentStage;
- if (param != null)
+ if (!superseded && param != null)
{
+ // If Global is selected, check if superseded by a currentStage override.
superseded |= globalOverrides == null && stageOverrides != null &&
overridesContainsParam(stageOverrides, param);
+ // Any other selectedStage override is either inactive or could only be superseded by a
+ // preset or external override.
superseded |= selectedPreset != "" && overridesContainsParam(config.Presets[selectedPreset], param);
superseded |= overridesContainsParam(externalOverrides.Values, param);
}
@@ -301,20 +307,24 @@ namespace WorldTuningTool public void Resolve()
{
- Assert(!InTransition);
- if (pendingWrite)
- {
- pendingWrite = false;
- maybeWriteCurrentValue();
- }
+ Assert(!InTransition && pendingWrite);
+ pendingWrite = false;
+ maybeWriteCurrentValue();
}
private void maybeWriteCurrentValue()
{
if (InTransition)
{
- pendingWrite = true;
- DirtyParams.Add(this);
+ if (!DirtyParams.Contains(this))
+ {
+ pendingWrite = true;
+ DirtyParams.Add(this);
+ }
+ else
+ {
+ Assert(pendingWrite);
+ }
return;
}
Assert(!pendingWrite);
@@ -873,6 +883,8 @@ namespace WorldTuningTool List<Override> selectedOverrides = config.Overrides[selectedStage];
List<Override>? stageOverrides = maybeGetStageOverrides(config);
// Deciding when to set globalOverrides copies the logic in OnImGuiRender().
+ // Selected: Set if selectedStage != globalStage.
+ // Preset: Always set.
List<Override>? globalOverrides = null;
if (selectedPreset != "")
{
@@ -882,7 +894,8 @@ namespace WorldTuningTool ImGui.SameLine();
if (ImGui.Button("▲"))
{
- // Create override before unsetting global.
+ // Create the new override before unsetting any lower priority overrides.
+ // Effectively, copy the current override value.
Override ov = new Override(this, v4, i1);
globalOverrides = config.Overrides[globalStage];
bool superseded = overridesContainsParam(externalOverrides.Values, this);
@@ -911,7 +924,6 @@ namespace WorldTuningTool ImGui.SameLine();
if (ImGui.Button("▲"))
{
- // Create override before unsetting global.
Override ov = new Override(this, v4, i1);
if (selectedStage != globalStage)
{
@@ -1150,7 +1162,7 @@ namespace WorldTuningTool }
}
- public void Draw(List<Override>? currentOverrides, List<Override>? stageOverrides, List<Override>? globalOverrides, bool superseded, bool preset, float width)
+ public void Draw(bool forPreset, List<Override>? currentOverrides, List<Override>? stageOverrides, List<Override>? globalOverrides, bool superseded, float width)
{
bool fade = superseded;
if (fade)
@@ -1181,6 +1193,7 @@ namespace WorldTuningTool Unset();
if (Param != null)
{
+ Assert(stageOverrides == null || forPreset);
if (!(stageOverrides != null && setIfOverridesContainsParam(stageOverrides, Param)))
{
if (globalOverrides != null)
@@ -1193,26 +1206,25 @@ namespace WorldTuningTool Param = iterParam;
(valueV, valueInt) = Param.GetValue();
Save();
- if (preset)
+ if (forPreset)
{
+ Assert(globalOverrides != null);
superseded = overridesContainsParam(externalOverrides.Values, Param);
- if (!superseded && wasSet)
+ if (!superseded)
{
if (!(stageOverrides != null && unsetIfOverridesContainsParam(stageOverrides, Param)))
{
- if (globalOverrides != null)
- {
- unsetIfOverridesContainsParam(globalOverrides, Param);
- }
+ unsetIfOverridesContainsParam(globalOverrides!, Param);
}
Set();
}
+ presetOrderChanged = true;
}
else
{
Config config = getConfig();
superseded = selectedOverrideSuperseded(config, globalOverrides, stageOverrides, Param);
- if (!superseded && wasSet)
+ if (!superseded)
{
if (globalOverrides != null)
{
@@ -1220,6 +1232,7 @@ namespace WorldTuningTool }
Set();
}
+ selectedOrderChanged = true;
}
EndTransition();
}
@@ -2204,17 +2217,18 @@ namespace WorldTuningTool config.Overrides.Add(area, new List<Override>());
}
}
- foreach (Override ovG in config.Overrides[globalStage])
+ BeginTransition();
+ List<Override> globalOverrides = config.Overrides[globalStage];
+ foreach (Override ovG in globalOverrides)
{
ovG.Set();
}
selectedPreset = config.SelectedPreset;
if (selectedPreset != "")
{
- List<Override> globalOverrides = config.Overrides[globalStage];
- List<Override>? stageOverrides = maybeGetStageOverrides(config);
- HandlePresetChange("", globalOverrides, stageOverrides);
+ HandlePresetChange("", globalOverrides, maybeGetStageOverrides(config));
}
+ EndTransition();
saveConfig();
}
@@ -2705,7 +2719,6 @@ namespace WorldTuningTool private void HandlePresetChange(string prevPreset, List<Override> globalOverrides, List<Override>? stageOverrides)
{
Config config = getConfig();
- BeginTransition();
if (prevPreset != "")
{
List<Override> prevOverrides = config.Presets[prevPreset];
@@ -2744,7 +2757,6 @@ namespace WorldTuningTool }
}
}
- EndTransition();
}
private void HandleAreaChange(StageExt stage)
@@ -2880,7 +2892,7 @@ namespace WorldTuningTool (selectedOverrides[i], selectedOverrides[i + 1]) = (selectedOverrides[i + 1], selectedOverrides[i]);
selectedOrderChanged = true;
}
- ovS.Draw(selectedOverrides, null, globalOverrides, superseded, false, width);
+ ovS.Draw(false, selectedOverrides, null, globalOverrides, superseded, width);
if (requestUp && i > 0)
{
(selectedOverrides[i], selectedOverrides[i - 1]) = (selectedOverrides[i - 1], selectedOverrides[i]);
@@ -2974,7 +2986,9 @@ namespace WorldTuningTool }
if (prevPreset != selectedPreset)
{
+ BeginTransition();
HandlePresetChange(prevPreset, globalOverrides, stageOverrides);
+ EndTransition();
config.SelectedPreset = selectedPreset;
saveConfig();
}
@@ -3053,7 +3067,7 @@ namespace WorldTuningTool (presetOverrides[i], presetOverrides[i + 1]) = (presetOverrides[i + 1], presetOverrides[i]);
presetOrderChanged = true;
}
- ovP.Draw(presetOverrides, stageOverrides, globalOverrides, superseded, true, width);
+ ovP.Draw(true, presetOverrides, stageOverrides, globalOverrides, superseded, width);
if (requestUp && i > 0)
{
(presetOverrides[i], presetOverrides[i - 1]) = (presetOverrides[i - 1], presetOverrides[i]);
@@ -3111,7 +3125,7 @@ namespace WorldTuningTool ImGui.Text("External:");
foreach (Override ovE in externalOverrides.Values)
{
- ovE.Draw(null, null, null, false, false, width);
+ ovE.Draw(false, null, null, null, false, width);
}
ImGui.PopID();
|