This commit is contained in:
Ottermandias 2024-02-08 20:35:38 +01:00
parent 7a33daf954
commit 7dfc20ce23
5 changed files with 29 additions and 23 deletions

View file

@ -92,13 +92,15 @@ public class DesignBase
internal MetaFlag ApplyMeta = MetaFlag.HatState | MetaFlag.VisorState | MetaFlag.WeaponState;
private bool _writeProtected;
public bool SetCustomize(CustomizeService customizeService, CustomizeArray customize)
public bool SetCustomize(CustomizeService customizeService, CustomizeArray customize, CustomizeSet? set = null)
{
if (customize.Equals(_designData.Customize))
return false;
_designData.Customize = customize;
CustomizeSet = customizeService.Manager.GetSet(customize.Clan, customize.Gender);
set ??= customizeService.Manager.GetSet(customize.Clan, customize.Gender);
Debug.Assert(set.Clan == customize.Clan && set.Gender == customize.Gender, "Invalid CustomizeSet provided.");
_designData.Customize = customize;
CustomizeSet = set;
return true;
}

View file

@ -124,7 +124,8 @@ public class DesignConverter(
}
ret.SetApplyMeta(MetaIndex.Wetness, customize);
ret.ApplyCustomize = customize ? CustomizeFlagExtensions.AllRelevant : 0;
if (!customize)
ret.ApplyCustomize = 0;
if (!equip)
{

View file

@ -227,7 +227,7 @@ public class DesignMerger(
ret.Sources[CustomizeIndex.Face] = source;
}
var set = _customize.Manager.GetSet(customize.Clan, customize.Gender);
var set = _customize.Manager.GetSet(ret.Design.DesignData.Customize.Clan, ret.Design.DesignData.Customize.Gender);
var face = customize.Face;
foreach (var index in Enum.GetValues<CustomizeIndex>())
{
@ -248,7 +248,7 @@ public class DesignMerger(
fixFlags &= ~flag;
}
ret.Design.SetCustomize(_customize, customize);
ret.Design.SetCustomize(_customize, customize, set);
}
private static void ApplyFixFlags(MergedDesign ret, CustomizeFlag fixFlags)

View file

@ -24,7 +24,7 @@ public abstract class DesignComboBase : FilterComboCache<Tuple<Design, string>>,
protected DesignComboBase(Func<IReadOnlyList<Tuple<Design, string>>> generator, Logger log, DesignChanged designChanged,
TabSelected tabSelected, EphemeralConfig config, DesignColors designColors)
: base(generator, MouseWheelType.Unmodified, log)
: base(generator, MouseWheelType.Control, log)
{
_designChanged = designChanged;
TabSelected = tabSelected;
@ -169,21 +169,24 @@ public abstract class DesignCombo : DesignComboBase
=> Draw(Design, (Incognito ? Design?.Incognito : Design?.Name.Text) ?? string.Empty, width);
}
public sealed class QuickDesignCombo(
DesignManager designs,
DesignFileSystem fileSystem,
Logger log,
DesignChanged designChanged,
TabSelected tabSelected,
EphemeralConfig config,
DesignColors designColors)
: DesignCombo(log, designChanged, tabSelected, config, designColors, () =>
[
.. designs.Designs
.Where(d => d.QuickDesign)
.Select(d => new Tuple<Design, string>(d, fileSystem.FindLeaf(d, out var l) ? l.FullName() : string.Empty))
.OrderBy(d => d.Item2),
]);
public sealed class QuickDesignCombo : DesignCombo
{
public QuickDesignCombo(DesignManager designs,
DesignFileSystem fileSystem,
Logger log,
DesignChanged designChanged,
TabSelected tabSelected,
EphemeralConfig config,
DesignColors designColors)
: base(log, designChanged, tabSelected, config, designColors, () =>
[
.. designs.Designs
.Where(d => d.QuickDesign)
.Select(d => new Tuple<Design, string>(d, fileSystem.FindLeaf(d, out var l) ? l.FullName() : string.Empty))
.OrderBy(d => d.Item2),
])
=> AllowMouseWheel = MouseWheelType.Unmodified;
}
public sealed class LinkDesignCombo(
DesignManager designs,

View file

@ -277,7 +277,7 @@ public class StateEditor(
(m.Item1, settings.UseSingleSource ? settings.Source :
m.Item2 is StateSource.Game ? StateSource.Game : m.Item2)));
foreach (var meta in MetaExtensions.AllRelevant)
foreach (var meta in MetaExtensions.AllRelevant.Where(mergedDesign.Design.DoApplyMeta))
{
if (!settings.RespectManual || !state.Sources[meta].IsManual())
Editor.ChangeMetaState(state, meta, mergedDesign.Design.DesignData.GetMeta(meta), Source(meta), out _, settings.Key);