From 3b5f89e6a1b6ead9f6089abdfe9ffe5cfe6db821 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Wed, 17 Jan 2024 13:31:22 +0100 Subject: [PATCH] Fix palettes not resetting on Reapply Automation with Use Game State as Base. --- Glamourer/Automation/AutoDesignApplier.cs | 2 +- Glamourer/State/StateManager.cs | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Glamourer/Automation/AutoDesignApplier.cs b/Glamourer/Automation/AutoDesignApplier.cs index aa808d1..52df3e9 100644 --- a/Glamourer/Automation/AutoDesignApplier.cs +++ b/Glamourer/Automation/AutoDesignApplier.cs @@ -274,7 +274,7 @@ public class AutoDesignApplier : IDisposable CustomizeParameterFlag totalParameterFlags = 0; byte totalMetaFlags = 0; if (set.BaseState == AutoDesignSet.Base.Game) - _state.ResetStateFixed(state); + _state.ResetStateFixed(state, respectManual); else if (!respectManual) state.RemoveFixedDesignSources(); diff --git a/Glamourer/State/StateManager.cs b/Glamourer/State/StateManager.cs index a8fc7b9..807f5c8 100644 --- a/Glamourer/State/StateManager.cs +++ b/Glamourer/State/StateManager.cs @@ -504,7 +504,7 @@ public class StateManager( _event.Invoke(StateChanged.Type.Reset, StateChanged.Source.Manual, state, actors, null); } - public void ResetStateFixed(ActorState state, uint key = 0) + public void ResetStateFixed(ActorState state, bool respectManualPalettes, uint key = 0) { if (!state.Unlock(key)) return; @@ -541,10 +541,13 @@ public class StateManager( foreach (var flag in CustomizeParameterExtensions.AllFlags) { - if (state[flag] is StateChanged.Source.Fixed) + switch (state[flag]) { - state[flag] = StateChanged.Source.Game; - state.ModelData.Parameters[flag] = state.BaseData.Parameters[flag]; + case StateChanged.Source.Fixed: + case StateChanged.Source.Manual when !respectManualPalettes: + state[flag] = StateChanged.Source.Game; + state.ModelData.Parameters[flag] = state.BaseData.Parameters[flag]; + break; } }