diff --git a/Glamourer/Events/StateChanged.cs b/Glamourer/Events/StateChanged.cs index 58dd49c..8555838 100644 --- a/Glamourer/Events/StateChanged.cs +++ b/Glamourer/Events/StateChanged.cs @@ -58,6 +58,8 @@ public sealed class StateChanged() Manual, Fixed, Ipc, + // Only used for CustomizeParameters. + Outstanding, } public enum Priority diff --git a/Glamourer/State/StateListener.cs b/Glamourer/State/StateListener.cs index 7b40d69..54b6ed0 100644 --- a/Glamourer/State/StateListener.cs +++ b/Glamourer/State/StateListener.cs @@ -752,6 +752,15 @@ public class StateListener : IDisposable case StateChanged.Source.Ipc: state.BaseData.Parameters.Set(flag, newValue); model.ApplySingleParameterData(flag, state.ModelData.Parameters); + break; + case StateChanged.Source.Outstanding: + state.BaseData.Parameters.Set(flag, newValue); + if (_config.UseAdvancedParameters) + { + model.ApplySingleParameterData(flag, state.ModelData.Parameters); + state[flag] = StateChanged.Source.Manual; + } + break; } } diff --git a/Glamourer/State/StateManager.cs b/Glamourer/State/StateManager.cs index 0eace8b..a8fc7b9 100644 --- a/Glamourer/State/StateManager.cs +++ b/Glamourer/State/StateManager.cs @@ -403,8 +403,12 @@ public class StateManager( foreach (var slot in CrestExtensions.AllRelevantSet.Where(design.DoApplyCrest)) _editor.ChangeCrest(state, slot, design.DesignData.Crest(slot), source, out _, key); + var paramSource = source is StateChanged.Source.Manual && redraw + ? StateChanged.Source.Outstanding + : source; + foreach (var flag in CustomizeParameterExtensions.AllFlags.Where(design.DoApplyParameter)) - _editor.ChangeParameter(state, flag, design.DesignData.Parameters[flag], source, out _, key); + _editor.ChangeParameter(state, flag, design.DesignData.Parameters[flag], paramSource, out _, key); } var actors = ApplyAll(state, redraw, false);