mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 10:17:23 +01:00
Merge pull request #100 from anya-hichu/main
Add ResetMaterials option to Design
This commit is contained in:
commit
ef96dadba5
11 changed files with 42 additions and 2 deletions
|
|
@ -154,7 +154,7 @@ public sealed class AutoDesignApplier : IDisposable
|
|||
{
|
||||
Reduce(data.Objects[0], state, newSet, _config.RespectManualOnAutomationUpdate, false, out var forcedRedraw);
|
||||
foreach (var actor in data.Objects)
|
||||
_state.ReapplyState(actor, forcedRedraw,StateSource.Fixed);
|
||||
_state.ReapplyState(actor, forcedRedraw, StateSource.Fixed);
|
||||
}
|
||||
}
|
||||
else if (_objects.TryGetValueAllWorld(id, out data) || _objects.TryGetValueNonOwned(id, out data))
|
||||
|
|
@ -286,7 +286,9 @@ public sealed class AutoDesignApplier : IDisposable
|
|||
var mergedDesign = _designMerger.Merge(
|
||||
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);
|
||||
_state.ApplyDesign(state, mergedDesign, new ApplySettings(0, StateSource.Fixed, respectManual, fromJobChange, false, false, false));
|
||||
|
||||
var resetMaterials = mergedDesign.ResetMaterials;
|
||||
_state.ApplyDesign(state, mergedDesign, new ApplySettings(0, StateSource.Fixed, respectManual, fromJobChange, false, false, resetMaterials));
|
||||
forcedRedraw = mergedDesign.ForcedRedraw;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn
|
|||
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<Mod, ModSettings> AssociatedMods { get; private set; } = [];
|
||||
|
|
@ -102,6 +103,7 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn
|
|||
["Name"] = Name.Text,
|
||||
["Description"] = Description,
|
||||
["ForcedRedraw"] = ForcedRedraw,
|
||||
["ResetMaterials"] = ResetMaterials,
|
||||
["Color"] = Color,
|
||||
["QuickDesign"] = QuickDesign,
|
||||
["Tags"] = JArray.FromObject(Tags),
|
||||
|
|
@ -244,6 +246,7 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn
|
|||
LoadLinks(linkLoader, json["Links"], design);
|
||||
design.Color = json["Color"]?.ToObject<string>() ?? string.Empty;
|
||||
design.ForcedRedraw = json["ForcedRedraw"]?.ToObject<bool>() ?? false;
|
||||
design.ResetMaterials = json["ResetMaterials"]?.ToObject<bool>() ?? false;
|
||||
return design;
|
||||
|
||||
static string[] ParseTags(JObject json)
|
||||
|
|
|
|||
|
|
@ -334,6 +334,17 @@ public sealed class DesignManager : DesignEditor
|
|||
DesignChanged.Invoke(DesignChanged.Type.ForceRedraw, design, null);
|
||||
}
|
||||
|
||||
public void ChangeResetMaterials(Design design, bool resetMaterials)
|
||||
{
|
||||
if (design.ResetMaterials == resetMaterials)
|
||||
return;
|
||||
|
||||
design.ResetMaterials = resetMaterials;
|
||||
SaveService.QueueSave(design);
|
||||
Glamourer.Log.Debug($"Set {design.Identifier} to {(resetMaterials ? "not" : string.Empty)} reset materials.");
|
||||
DesignChanged.Invoke(DesignChanged.Type.ResetMaterials, design, null);
|
||||
}
|
||||
|
||||
/// <summary> Change whether to apply a specific customize value. </summary>
|
||||
public void ChangeApplyCustomize(Design design, CustomizeIndex idx, bool value)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,4 +25,6 @@ public interface IDesignStandIn : IEquatable<IDesignStandIn>
|
|||
public bool ChangeData(object data);
|
||||
|
||||
public bool ForcedRedraw { get; }
|
||||
|
||||
public bool ResetMaterials { get; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ public class DesignMerger(
|
|||
ReduceMaterials(design, ret);
|
||||
if (design.ForcedRedraw)
|
||||
ret.ForcedRedraw = true;
|
||||
if (design.ResetMaterials)
|
||||
ret.ResetMaterials = true;
|
||||
}
|
||||
|
||||
ApplyFixFlags(ret, fixFlags);
|
||||
|
|
|
|||
|
|
@ -100,4 +100,5 @@ public sealed class MergedDesign
|
|||
public readonly SortedList<Mod, ModSettings> AssociatedMods = [];
|
||||
public StateSources Sources = new();
|
||||
public bool ForcedRedraw;
|
||||
public bool ResetMaterials;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,4 +53,7 @@ public class QuickSelectedDesign(QuickDesignCombo combo) : IDesignStandIn, IServ
|
|||
|
||||
public bool ForcedRedraw
|
||||
=> combo.Design?.ForcedRedraw ?? false;
|
||||
|
||||
public bool ResetMaterials
|
||||
=> combo.Design?.ResetMaterials ?? false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,4 +81,7 @@ public class RandomDesign(RandomDesignGenerator rng) : IDesignStandIn
|
|||
|
||||
public bool ForcedRedraw
|
||||
=> false;
|
||||
|
||||
public bool ResetMaterials
|
||||
=> false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,4 +45,7 @@ public class RevertDesign : IDesignStandIn
|
|||
|
||||
public bool ForcedRedraw
|
||||
=> false;
|
||||
|
||||
public bool ResetMaterials
|
||||
=> false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,6 +90,9 @@ public sealed class DesignChanged()
|
|||
/// <summary> An existing design had changed whether it always forces a redraw or not. </summary>
|
||||
ForceRedraw,
|
||||
|
||||
/// <summary> An existing design had changed whether it always reset materials or not. </summary>
|
||||
ResetMaterials,
|
||||
|
||||
/// <summary> An existing design changed whether a specific customization is applied. </summary>
|
||||
ApplyCustomize,
|
||||
|
||||
|
|
|
|||
|
|
@ -143,6 +143,13 @@ 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");
|
||||
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.");
|
||||
|
||||
ImGuiUtil.DrawFrameColumn("Color");
|
||||
var colorName = _selector.Selected!.Color.Length == 0 ? DesignColors.AutomaticName : _selector.Selected!.Color;
|
||||
ImGui.TableNextColumn();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue