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);
|
Reduce(data.Objects[0], state, newSet, _config.RespectManualOnAutomationUpdate, false, out var forcedRedraw);
|
||||||
foreach (var actor in data.Objects)
|
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))
|
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(
|
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))),
|
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.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;
|
forcedRedraw = mergedDesign.ForcedRedraw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn
|
||||||
public string[] Tags { get; internal set; } = [];
|
public string[] Tags { get; internal set; } = [];
|
||||||
public int Index { get; internal set; }
|
public int Index { get; internal set; }
|
||||||
public bool ForcedRedraw { get; internal set; }
|
public bool ForcedRedraw { get; internal set; }
|
||||||
|
public bool ResetMaterials { get; internal set; }
|
||||||
public bool QuickDesign { get; internal set; } = true;
|
public bool QuickDesign { get; internal set; } = true;
|
||||||
public string Color { get; internal set; } = string.Empty;
|
public string Color { get; internal set; } = string.Empty;
|
||||||
public SortedList<Mod, ModSettings> AssociatedMods { get; private set; } = [];
|
public SortedList<Mod, ModSettings> AssociatedMods { get; private set; } = [];
|
||||||
|
|
@ -102,6 +103,7 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn
|
||||||
["Name"] = Name.Text,
|
["Name"] = Name.Text,
|
||||||
["Description"] = Description,
|
["Description"] = Description,
|
||||||
["ForcedRedraw"] = ForcedRedraw,
|
["ForcedRedraw"] = ForcedRedraw,
|
||||||
|
["ResetMaterials"] = ResetMaterials,
|
||||||
["Color"] = Color,
|
["Color"] = Color,
|
||||||
["QuickDesign"] = QuickDesign,
|
["QuickDesign"] = QuickDesign,
|
||||||
["Tags"] = JArray.FromObject(Tags),
|
["Tags"] = JArray.FromObject(Tags),
|
||||||
|
|
@ -244,6 +246,7 @@ public sealed class Design : DesignBase, ISavable, IDesignStandIn
|
||||||
LoadLinks(linkLoader, json["Links"], design);
|
LoadLinks(linkLoader, json["Links"], design);
|
||||||
design.Color = json["Color"]?.ToObject<string>() ?? string.Empty;
|
design.Color = json["Color"]?.ToObject<string>() ?? string.Empty;
|
||||||
design.ForcedRedraw = json["ForcedRedraw"]?.ToObject<bool>() ?? false;
|
design.ForcedRedraw = json["ForcedRedraw"]?.ToObject<bool>() ?? false;
|
||||||
|
design.ResetMaterials = json["ResetMaterials"]?.ToObject<bool>() ?? false;
|
||||||
return design;
|
return design;
|
||||||
|
|
||||||
static string[] ParseTags(JObject json)
|
static string[] ParseTags(JObject json)
|
||||||
|
|
|
||||||
|
|
@ -334,6 +334,17 @@ public sealed class DesignManager : DesignEditor
|
||||||
DesignChanged.Invoke(DesignChanged.Type.ForceRedraw, design, null);
|
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>
|
/// <summary> Change whether to apply a specific customize value. </summary>
|
||||||
public void ChangeApplyCustomize(Design design, CustomizeIndex idx, bool value)
|
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 ChangeData(object data);
|
||||||
|
|
||||||
public bool ForcedRedraw { get; }
|
public bool ForcedRedraw { get; }
|
||||||
|
|
||||||
|
public bool ResetMaterials { get; }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,8 @@ public class DesignMerger(
|
||||||
ReduceMaterials(design, ret);
|
ReduceMaterials(design, ret);
|
||||||
if (design.ForcedRedraw)
|
if (design.ForcedRedraw)
|
||||||
ret.ForcedRedraw = true;
|
ret.ForcedRedraw = true;
|
||||||
|
if (design.ResetMaterials)
|
||||||
|
ret.ResetMaterials = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ApplyFixFlags(ret, fixFlags);
|
ApplyFixFlags(ret, fixFlags);
|
||||||
|
|
|
||||||
|
|
@ -100,4 +100,5 @@ public sealed class MergedDesign
|
||||||
public readonly SortedList<Mod, ModSettings> AssociatedMods = [];
|
public readonly SortedList<Mod, ModSettings> AssociatedMods = [];
|
||||||
public StateSources Sources = new();
|
public StateSources Sources = new();
|
||||||
public bool ForcedRedraw;
|
public bool ForcedRedraw;
|
||||||
|
public bool ResetMaterials;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,4 +53,7 @@ public class QuickSelectedDesign(QuickDesignCombo combo) : IDesignStandIn, IServ
|
||||||
|
|
||||||
public bool ForcedRedraw
|
public bool ForcedRedraw
|
||||||
=> combo.Design?.ForcedRedraw ?? false;
|
=> combo.Design?.ForcedRedraw ?? false;
|
||||||
|
|
||||||
|
public bool ResetMaterials
|
||||||
|
=> combo.Design?.ResetMaterials ?? false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,4 +81,7 @@ public class RandomDesign(RandomDesignGenerator rng) : IDesignStandIn
|
||||||
|
|
||||||
public bool ForcedRedraw
|
public bool ForcedRedraw
|
||||||
=> false;
|
=> false;
|
||||||
|
|
||||||
|
public bool ResetMaterials
|
||||||
|
=> false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,4 +45,7 @@ public class RevertDesign : IDesignStandIn
|
||||||
|
|
||||||
public bool ForcedRedraw
|
public bool ForcedRedraw
|
||||||
=> false;
|
=> 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>
|
/// <summary> An existing design had changed whether it always forces a redraw or not. </summary>
|
||||||
ForceRedraw,
|
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>
|
/// <summary> An existing design changed whether a specific customization is applied. </summary>
|
||||||
ApplyCustomize,
|
ApplyCustomize,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,13 @@ public class DesignDetailTab
|
||||||
_manager.ChangeForcedRedraw(_selector.Selected!, forceRedraw);
|
_manager.ChangeForcedRedraw(_selector.Selected!, forceRedraw);
|
||||||
ImGuiUtil.HoverTooltip("Set this design to always force a redraw when it is applied through any means.");
|
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");
|
ImGuiUtil.DrawFrameColumn("Color");
|
||||||
var colorName = _selector.Selected!.Color.Length == 0 ? DesignColors.AutomaticName : _selector.Selected!.Color;
|
var colorName = _selector.Selected!.Color.Length == 0 ? DesignColors.AutomaticName : _selector.Selected!.Color;
|
||||||
ImGui.TableNextColumn();
|
ImGui.TableNextColumn();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue