summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xPlugin.cs70
-rw-r--r--changelog.txt27
2 files changed, 69 insertions, 28 deletions
diff --git a/Plugin.cs b/Plugin.cs
index 93119c3..d023e01 100755
--- a/Plugin.cs
+++ b/Plugin.cs
@@ -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();
diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 0000000..10d8127
--- /dev/null
+++ b/changelog.txt
@@ -0,0 +1,27 @@
+= 0.9.3
+ WorldTuningTool_0.9.3.zip: 6/16/26, sha256-8d6457f1d7123ff315ba3dad02da8f30e9b301183641cacd800e9795868b81d3
+== Changelog
+* Fix crash on creating a new character.
+* Optimize updating parameters when transitioning between areas and presets.
+* Make Area -> Global transition actually proc and fix related logic inconsistencies.
+* Save selected "Quick Preset" to the config.
+* Make the value being used for "Shadow Map Size" more clear.
+* Tweak some UI stuff.
+
+= 0.9.2
+ WorldTuningTool_0.9.2.zip: 6/14/26, sha256-7922f9a62baadcd9753bcb4e8473c26e8c40add51a83f9fc9c44e34e59bf4b3e
+== Changelog
+* Fixed config parsing on systems with different locale settings, likely related to "." vs "," as a decimal separator.
+* Adjusted some parameters' min, max, and step settings.
+
+= 0.9.1
+ WorldTuningTool_0.9.1.zip: 6/9/26, sha256-211bcc20f939df485920e37193c191231c5a6207031c1fcefde62458f622dccf
+== Changelog
+* Fix "Lighting" parameters.
+
+= 0.9
+ WorldTuningTool_0.9.zip: 6/8/26, sha256-4a8a6790db99092efa847469db789f2000bce71d0da3b29a43dcbb98d7a1407a
+== Changelog
+* Release
+
+// vim: set syntax=asciidoc: