mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 18:27:24 +01:00
Fix customize check to use correct gender/clan.
This commit is contained in:
parent
488bea0e78
commit
c40853e5b2
5 changed files with 16 additions and 12 deletions
|
|
@ -264,7 +264,7 @@ 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.Design, d.Type)]),
|
set.Designs.Where(d => d.IsActive(actor)).SelectMany(d => d.Design?.AllLinks.Select(l => (l.Design, l.Flags & d.Type)) ?? [(d.Design, d.Type)]),
|
||||||
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));
|
_state.ApplyDesign(state, mergedDesign, new ApplySettings(0, StateSource.Fixed, respectManual, fromJobChange, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,15 +92,13 @@ public class DesignBase
|
||||||
internal MetaFlag ApplyMeta = MetaFlag.HatState | MetaFlag.VisorState | MetaFlag.WeaponState;
|
internal MetaFlag ApplyMeta = MetaFlag.HatState | MetaFlag.VisorState | MetaFlag.WeaponState;
|
||||||
private bool _writeProtected;
|
private bool _writeProtected;
|
||||||
|
|
||||||
public bool SetCustomize(CustomizeService customizeService, CustomizeArray customize, CustomizeSet? set = null)
|
public bool SetCustomize(CustomizeService customizeService, CustomizeArray customize)
|
||||||
{
|
{
|
||||||
if (customize.Equals(_designData.Customize))
|
if (customize.Equals(_designData.Customize))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
set ??= customizeService.Manager.GetSet(customize.Clan, customize.Gender);
|
|
||||||
Debug.Assert(set.Clan == customize.Clan && set.Gender == customize.Gender, "Invalid CustomizeSet provided.");
|
|
||||||
_designData.Customize = customize;
|
_designData.Customize = customize;
|
||||||
CustomizeSet = set;
|
CustomizeSet = customizeService.Manager.GetSet(customize.Clan, customize.Gender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ using Glamourer.State;
|
||||||
using Glamourer.Unlocks;
|
using Glamourer.Unlocks;
|
||||||
using OtterGui.Services;
|
using OtterGui.Services;
|
||||||
using Penumbra.GameData.Enums;
|
using Penumbra.GameData.Enums;
|
||||||
|
using Penumbra.GameData.Structs;
|
||||||
|
|
||||||
namespace Glamourer.Designs.Links;
|
namespace Glamourer.Designs.Links;
|
||||||
|
|
||||||
|
|
@ -15,13 +16,14 @@ public class DesignMerger(
|
||||||
ItemUnlockManager _itemUnlocks,
|
ItemUnlockManager _itemUnlocks,
|
||||||
CustomizeUnlockManager _customizeUnlocks) : IService
|
CustomizeUnlockManager _customizeUnlocks) : IService
|
||||||
{
|
{
|
||||||
public MergedDesign Merge(LinkContainer designs, in DesignData baseRef, bool respectOwnership, bool modAssociations)
|
public MergedDesign Merge(LinkContainer designs, in CustomizeArray currentCustomize, in DesignData baseRef, bool respectOwnership, bool modAssociations)
|
||||||
=> Merge(designs.Select(d => ((DesignBase?) d.Link, d.Type)), baseRef, respectOwnership, modAssociations);
|
=> Merge(designs.Select(d => ((DesignBase?) d.Link, d.Type)), currentCustomize, baseRef, respectOwnership, modAssociations);
|
||||||
|
|
||||||
public MergedDesign Merge(IEnumerable<(DesignBase?, ApplicationType)> designs, in DesignData baseRef, bool respectOwnership,
|
public MergedDesign Merge(IEnumerable<(DesignBase?, ApplicationType)> designs, in CustomizeArray currentCustomize, in DesignData baseRef, bool respectOwnership,
|
||||||
bool modAssociations)
|
bool modAssociations)
|
||||||
{
|
{
|
||||||
var ret = new MergedDesign(designManager);
|
var ret = new MergedDesign(designManager);
|
||||||
|
ret.Design.SetCustomize(_customize, currentCustomize);
|
||||||
CustomizeFlag fixFlags = 0;
|
CustomizeFlag fixFlags = 0;
|
||||||
respectOwnership &= _config.UnlockedItemMode;
|
respectOwnership &= _config.UnlockedItemMode;
|
||||||
foreach (var (design, type) in designs)
|
foreach (var (design, type) in designs)
|
||||||
|
|
@ -63,6 +65,8 @@ public class DesignMerger(
|
||||||
private static void ReduceMeta(in DesignData design, MetaFlag applyMeta, MergedDesign ret, StateSource source)
|
private static void ReduceMeta(in DesignData design, MetaFlag applyMeta, MergedDesign ret, StateSource source)
|
||||||
{
|
{
|
||||||
applyMeta &= ~ret.Design.ApplyMeta;
|
applyMeta &= ~ret.Design.ApplyMeta;
|
||||||
|
if (applyMeta == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach (var index in MetaExtensions.AllRelevant)
|
foreach (var index in MetaExtensions.AllRelevant)
|
||||||
{
|
{
|
||||||
|
|
@ -227,7 +231,7 @@ public class DesignMerger(
|
||||||
ret.Sources[CustomizeIndex.Face] = source;
|
ret.Sources[CustomizeIndex.Face] = source;
|
||||||
}
|
}
|
||||||
|
|
||||||
var set = _customize.Manager.GetSet(ret.Design.DesignData.Customize.Clan, ret.Design.DesignData.Customize.Gender);
|
var set = _customize.Manager.GetSet(customize.Clan, customize.Gender);
|
||||||
var face = customize.Face;
|
var face = customize.Face;
|
||||||
foreach (var index in Enum.GetValues<CustomizeIndex>())
|
foreach (var index in Enum.GetValues<CustomizeIndex>())
|
||||||
{
|
{
|
||||||
|
|
@ -248,7 +252,7 @@ public class DesignMerger(
|
||||||
fixFlags &= ~flag;
|
fixFlags &= ~flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.Design.SetCustomize(_customize, customize, set);
|
ret.Design.SetCustomize(_customize, customize);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ApplyFixFlags(MergedDesign ret, CustomizeFlag fixFlags)
|
private static void ApplyFixFlags(MergedDesign ret, CustomizeFlag fixFlags)
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,8 @@ public class DesignConverterPanel(DesignConverter _designConverter) : IGameDataD
|
||||||
{
|
{
|
||||||
using var f = ImRaii.PushFont(UiBuilder.MonoFont);
|
using var f = ImRaii.PushFont(UiBuilder.MonoFont);
|
||||||
ImGuiUtil.TextWrapped(_textUncompressed);
|
ImGuiUtil.TextWrapped(_textUncompressed);
|
||||||
|
if (ImGui.IsItemClicked())
|
||||||
|
ImGui.SetClipboardText(_textUncompressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_json != null)
|
if (_json != null)
|
||||||
|
|
|
||||||
|
|
@ -321,7 +321,7 @@ public class StateEditor(
|
||||||
public void ApplyDesign(object data, DesignBase design, ApplySettings settings)
|
public void ApplyDesign(object data, DesignBase design, ApplySettings settings)
|
||||||
{
|
{
|
||||||
var merged = settings.MergeLinks && design is Design d
|
var merged = settings.MergeLinks && design is Design d
|
||||||
? merger.Merge(d.AllLinks, ((ActorState)data).BaseData, false, Config.AlwaysApplyAssociatedMods)
|
? merger.Merge(d.AllLinks, ((ActorState)data).ModelData.Customize, ((ActorState)data).BaseData, false, Config.AlwaysApplyAssociatedMods)
|
||||||
: new MergedDesign(design);
|
: new MergedDesign(design);
|
||||||
|
|
||||||
ApplyDesign(data, merged, settings with
|
ApplyDesign(data, merged, settings with
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue