diff --git a/Glamourer/Automation/AutoDesignApplier.cs b/Glamourer/Automation/AutoDesignApplier.cs index 0e30244..fba1a58 100644 --- a/Glamourer/Automation/AutoDesignApplier.cs +++ b/Glamourer/Automation/AutoDesignApplier.cs @@ -287,8 +287,7 @@ public sealed class AutoDesignApplier : IDisposable set.Designs.Where(d => d.IsActive(actor)).SelectMany(d => d.Design.AllLinks.Select(l => (l.Design, l.Flags & d.Type, d.Jobs.Flags))), state.ModelData.Customize, state.BaseData, true, _config.AlwaysApplyAssociatedMods); - var resetMaterials = mergedDesign.ResetMaterials; - _state.ApplyDesign(state, mergedDesign, new ApplySettings(0, StateSource.Fixed, respectManual, fromJobChange, false, false, resetMaterials)); + _state.ApplyDesign(state, mergedDesign, new ApplySettings(0, StateSource.Fixed, respectManual, fromJobChange, false, false, false)); forcedRedraw = mergedDesign.ForcedRedraw; } diff --git a/Glamourer/Designs/Design.cs b/Glamourer/Designs/Design.cs index 2add91c..c58d74f 100644 --- a/Glamourer/Designs/Design.cs +++ b/Glamourer/Designs/Design.cs @@ -37,19 +37,19 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn // Metadata public new const int FileVersion = 2; - public Guid Identifier { get; internal init; } - public DateTimeOffset CreationDate { get; internal init; } - public DateTimeOffset LastEdit { get; internal set; } - public LowerString Name { get; internal set; } = LowerString.Empty; - public string Description { get; internal set; } = string.Empty; - public string[] Tags { get; internal set; } = []; - public int Index { get; internal set; } - public bool ForcedRedraw { get; internal set; } - public bool ResetMaterials { get; internal set; } - public bool QuickDesign { get; internal set; } = true; - public string Color { get; internal set; } = string.Empty; - public SortedList AssociatedMods { get; private set; } = []; - public LinkContainer Links { get; private set; } = []; + public Guid Identifier { get; internal init; } + public DateTimeOffset CreationDate { get; internal init; } + public DateTimeOffset LastEdit { get; internal set; } + public LowerString Name { get; internal set; } = LowerString.Empty; + public string Description { get; internal set; } = string.Empty; + public string[] Tags { get; internal set; } = []; + public int Index { get; internal set; } + public bool ForcedRedraw { get; internal set; } + public bool ResetAdvancedDyes { get; internal set; } + public bool QuickDesign { get; internal set; } = true; + public string Color { get; internal set; } = string.Empty; + public SortedList AssociatedMods { get; private set; } = []; + public LinkContainer Links { get; private set; } = []; public string Incognito => Identifier.ToString()[..8]; @@ -96,25 +96,25 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn { var ret = new JObject() { - ["FileVersion"] = FileVersion, - ["Identifier"] = Identifier, - ["CreationDate"] = CreationDate, - ["LastEdit"] = LastEdit, - ["Name"] = Name.Text, - ["Description"] = Description, - ["ForcedRedraw"] = ForcedRedraw, - ["ResetMaterials"] = ResetMaterials, - ["Color"] = Color, - ["QuickDesign"] = QuickDesign, - ["Tags"] = JArray.FromObject(Tags), - ["WriteProtected"] = WriteProtected(), - ["Equipment"] = SerializeEquipment(), - ["Bonus"] = SerializeBonusItems(), - ["Customize"] = SerializeCustomize(), - ["Parameters"] = SerializeParameters(), - ["Materials"] = SerializeMaterials(), - ["Mods"] = SerializeMods(), - ["Links"] = Links.Serialize(), + ["FileVersion"] = FileVersion, + ["Identifier"] = Identifier, + ["CreationDate"] = CreationDate, + ["LastEdit"] = LastEdit, + ["Name"] = Name.Text, + ["Description"] = Description, + ["ForcedRedraw"] = ForcedRedraw, + ["ResetAdvancedDyes"] = ResetAdvancedDyes, + ["Color"] = Color, + ["QuickDesign"] = QuickDesign, + ["Tags"] = JArray.FromObject(Tags), + ["WriteProtected"] = WriteProtected(), + ["Equipment"] = SerializeEquipment(), + ["Bonus"] = SerializeBonusItems(), + ["Customize"] = SerializeCustomize(), + ["Parameters"] = SerializeParameters(), + ["Materials"] = SerializeMaterials(), + ["Mods"] = SerializeMods(), + ["Links"] = Links.Serialize(), }; return ret; } @@ -146,7 +146,8 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn #region Deserialization - public static Design LoadDesign(SaveService saveService, CustomizeService customizations, ItemManager items, DesignLinkLoader linkLoader, JObject json) + public static Design LoadDesign(SaveService saveService, CustomizeService customizations, ItemManager items, DesignLinkLoader linkLoader, + JObject json) { var version = json["FileVersion"]?.ToObject() ?? 0; return version switch @@ -158,7 +159,8 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn } /// The values for gloss and specular strength were switched. Swap them for all appropriate designs. - private static Design LoadDesignV1(SaveService saveService, CustomizeService customizations, ItemManager items, DesignLinkLoader linkLoader, JObject json) + private static Design LoadDesignV1(SaveService saveService, CustomizeService customizations, ItemManager items, DesignLinkLoader linkLoader, + JObject json) { var design = LoadDesignV2(customizations, items, linkLoader, json); var materialDesignData = design.GetMaterialDataRef(); @@ -216,7 +218,7 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn Glamourer.Messager.AddMessage(new Notification( $"Swapped Gloss and Specular Strength in {materialDesignData.Values.Count} Rows in design {design.Incognito} {reason}", NotificationType.Info)); - saveService.Save(SaveType.ImmediateSync,design); + saveService.Save(SaveType.ImmediateSync, design); } } @@ -244,9 +246,9 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn LoadParameters(json["Parameters"], design, design.Name); LoadMaterials(json["Materials"], design, design.Name); LoadLinks(linkLoader, json["Links"], design); - design.Color = json["Color"]?.ToObject() ?? string.Empty; - design.ForcedRedraw = json["ForcedRedraw"]?.ToObject() ?? false; - design.ResetMaterials = json["ResetMaterials"]?.ToObject() ?? false; + design.Color = json["Color"]?.ToObject() ?? string.Empty; + design.ForcedRedraw = json["ForcedRedraw"]?.ToObject() ?? false; + design.ResetAdvancedDyes = json["ResetAdvancedDyes"]?.ToObject() ?? false; return design; static string[] ParseTags(JObject json) diff --git a/Glamourer/Designs/DesignEditor.cs b/Glamourer/Designs/DesignEditor.cs index cfda047..448e373 100644 --- a/Glamourer/Designs/DesignEditor.cs +++ b/Glamourer/Designs/DesignEditor.cs @@ -304,8 +304,8 @@ public class DesignEditor( /// - public void ApplyDesign(object data, MergedDesign other, ApplySettings _ = default) - => ApplyDesign(data, other.Design); + public void ApplyDesign(object data, MergedDesign other, ApplySettings settings = default) + => ApplyDesign(data, other.Design, settings); /// public void ApplyDesign(object data, DesignBase other, ApplySettings _ = default) diff --git a/Glamourer/Designs/DesignManager.cs b/Glamourer/Designs/DesignManager.cs index 8342898..a9ea66a 100644 --- a/Glamourer/Designs/DesignManager.cs +++ b/Glamourer/Designs/DesignManager.cs @@ -334,15 +334,15 @@ public sealed class DesignManager : DesignEditor DesignChanged.Invoke(DesignChanged.Type.ForceRedraw, design, null); } - public void ChangeResetMaterials(Design design, bool resetMaterials) + public void ChangeResetAdvancedDyes(Design design, bool resetAdvancedDyes) { - if (design.ResetMaterials == resetMaterials) + if (design.ResetAdvancedDyes == resetAdvancedDyes) return; - design.ResetMaterials = resetMaterials; + design.ResetAdvancedDyes = resetAdvancedDyes; SaveService.QueueSave(design); - Glamourer.Log.Debug($"Set {design.Identifier} to {(resetMaterials ? "not" : string.Empty)} reset materials."); - DesignChanged.Invoke(DesignChanged.Type.ResetMaterials, design, null); + Glamourer.Log.Debug($"Set {design.Identifier} to {(resetAdvancedDyes ? "not" : string.Empty)} reset advanced dyes."); + DesignChanged.Invoke(DesignChanged.Type.ResetAdvancedDyes, design, null); } /// Change whether to apply a specific customize value. diff --git a/Glamourer/Designs/IDesignStandIn.cs b/Glamourer/Designs/IDesignStandIn.cs index 73a4863..fd76b4b 100644 --- a/Glamourer/Designs/IDesignStandIn.cs +++ b/Glamourer/Designs/IDesignStandIn.cs @@ -26,5 +26,5 @@ public interface IDesignStandIn : IEquatable public bool ForcedRedraw { get; } - public bool ResetMaterials { get; } + public bool ResetAdvancedDyes { get; } } diff --git a/Glamourer/Designs/Links/DesignMerger.cs b/Glamourer/Designs/Links/DesignMerger.cs index 73e94c7..5767c7a 100644 --- a/Glamourer/Designs/Links/DesignMerger.cs +++ b/Glamourer/Designs/Links/DesignMerger.cs @@ -56,8 +56,8 @@ public class DesignMerger( ReduceMaterials(design, ret); if (design.ForcedRedraw) ret.ForcedRedraw = true; - if (design.ResetMaterials) - ret.ResetMaterials = true; + if (design.ResetAdvancedDyes) + ret.ResetAdvancedDyes = true; } ApplyFixFlags(ret, fixFlags); diff --git a/Glamourer/Designs/Links/MergedDesign.cs b/Glamourer/Designs/Links/MergedDesign.cs index 0fa148a..0748633 100644 --- a/Glamourer/Designs/Links/MergedDesign.cs +++ b/Glamourer/Designs/Links/MergedDesign.cs @@ -100,5 +100,5 @@ public sealed class MergedDesign public readonly SortedList AssociatedMods = []; public StateSources Sources = new(); public bool ForcedRedraw; - public bool ResetMaterials; + public bool ResetAdvancedDyes; } diff --git a/Glamourer/Designs/Special/QuickSelectedDesign.cs b/Glamourer/Designs/Special/QuickSelectedDesign.cs index 476bd62..1919929 100644 --- a/Glamourer/Designs/Special/QuickSelectedDesign.cs +++ b/Glamourer/Designs/Special/QuickSelectedDesign.cs @@ -54,6 +54,6 @@ public class QuickSelectedDesign(QuickDesignCombo combo) : IDesignStandIn, IServ public bool ForcedRedraw => combo.Design?.ForcedRedraw ?? false; - public bool ResetMaterials - => combo.Design?.ResetMaterials ?? false; + public bool ResetAdvancedDyes + => combo.Design?.ResetAdvancedDyes ?? false; } diff --git a/Glamourer/Designs/Special/RandomDesign.cs b/Glamourer/Designs/Special/RandomDesign.cs index 54ab4ab..bbb9b7d 100644 --- a/Glamourer/Designs/Special/RandomDesign.cs +++ b/Glamourer/Designs/Special/RandomDesign.cs @@ -82,6 +82,6 @@ public class RandomDesign(RandomDesignGenerator rng) : IDesignStandIn public bool ForcedRedraw => false; - public bool ResetMaterials + public bool ResetAdvancedDyes => false; } diff --git a/Glamourer/Designs/Special/RevertDesign.cs b/Glamourer/Designs/Special/RevertDesign.cs index affa203..5f8d8c6 100644 --- a/Glamourer/Designs/Special/RevertDesign.cs +++ b/Glamourer/Designs/Special/RevertDesign.cs @@ -46,6 +46,6 @@ public class RevertDesign : IDesignStandIn public bool ForcedRedraw => false; - public bool ResetMaterials - => false; + public bool ResetAdvancedDyes + => true; } diff --git a/Glamourer/Events/DesignChanged.cs b/Glamourer/Events/DesignChanged.cs index 22169c8..8cd8f5c 100644 --- a/Glamourer/Events/DesignChanged.cs +++ b/Glamourer/Events/DesignChanged.cs @@ -90,8 +90,8 @@ public sealed class DesignChanged() /// An existing design had changed whether it always forces a redraw or not. ForceRedraw, - /// An existing design had changed whether it always reset materials or not. - ResetMaterials, + /// An existing design had changed whether it always resets advanced dyes or not. + ResetAdvancedDyes, /// An existing design changed whether a specific customization is applied. ApplyCustomize, diff --git a/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs b/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs index fddf8a2..fea444c 100644 --- a/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs +++ b/Glamourer/Gui/Tabs/DesignTab/DesignDetailTab.cs @@ -143,12 +143,12 @@ public class DesignDetailTab _manager.ChangeForcedRedraw(_selector.Selected!, forceRedraw); ImGuiUtil.HoverTooltip("Set this design to always force a redraw when it is applied through any means."); - var resetMaterials = _selector.Selected!.ResetMaterials; - ImGuiUtil.DrawFrameColumn("Reset Materials"); + var resetMaterials = _selector.Selected!.ResetAdvancedDyes; + ImGuiUtil.DrawFrameColumn("Reset Advanced Dyes"); ImGui.TableNextColumn(); - if (ImGui.Checkbox("##ResetMaterials", ref resetMaterials)) - _manager.ChangeResetMaterials(_selector.Selected!, resetMaterials); - ImGuiUtil.HoverTooltip("Set this design to reset materials when it is applied through any means."); + if (ImGui.Checkbox("##ResetAdvancedDyes", ref resetMaterials)) + _manager.ChangeResetAdvancedDyes(_selector.Selected!, resetMaterials); + ImGuiUtil.HoverTooltip("Set this design to reset any previously applied advanced dyes when it is applied through any means."); ImGuiUtil.DrawFrameColumn("Color"); var colorName = _selector.Selected!.Color.Length == 0 ? DesignColors.AutomaticName : _selector.Selected!.Color; diff --git a/Glamourer/State/StateEditor.cs b/Glamourer/State/StateEditor.cs index 633fc10..d74ddf7 100644 --- a/Glamourer/State/StateEditor.cs +++ b/Glamourer/State/StateEditor.cs @@ -380,7 +380,7 @@ public class StateEditor( Editor.ChangeMetaState(state, meta, mergedDesign.Design.DesignData.GetMeta(meta), Source(meta), out _, settings.Key); } - if (settings.ResetMaterials) + if (settings.ResetMaterials || mergedDesign.ResetAdvancedDyes) state.Materials.Clear(); foreach (var (key, value) in mergedDesign.Design.Materials)