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; internal MetaFlag ApplyMeta = MetaFlag.HatState | MetaFlag.VisorState | MetaFlag.WeaponState;
private bool _writeProtected; 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)) 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 = customizeService.Manager.GetSet(customize.Clan, customize.Gender); CustomizeSet = set;
return true; return true;
} }

View file

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

View file

@ -227,7 +227,7 @@ public class DesignMerger(
ret.Sources[CustomizeIndex.Face] = source; 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; var face = customize.Face;
foreach (var index in Enum.GetValues<CustomizeIndex>()) foreach (var index in Enum.GetValues<CustomizeIndex>())
{ {
@ -248,7 +248,7 @@ public class DesignMerger(
fixFlags &= ~flag; fixFlags &= ~flag;
} }
ret.Design.SetCustomize(_customize, customize); ret.Design.SetCustomize(_customize, customize, set);
} }
private static void ApplyFixFlags(MergedDesign ret, CustomizeFlag fixFlags) 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, protected DesignComboBase(Func<IReadOnlyList<Tuple<Design, string>>> generator, Logger log, DesignChanged designChanged,
TabSelected tabSelected, EphemeralConfig config, DesignColors designColors) TabSelected tabSelected, EphemeralConfig config, DesignColors designColors)
: base(generator, MouseWheelType.Unmodified, log) : base(generator, MouseWheelType.Control, log)
{ {
_designChanged = designChanged; _designChanged = designChanged;
TabSelected = tabSelected; TabSelected = tabSelected;
@ -169,21 +169,24 @@ public abstract class DesignCombo : DesignComboBase
=> Draw(Design, (Incognito ? Design?.Incognito : Design?.Name.Text) ?? string.Empty, width); => Draw(Design, (Incognito ? Design?.Incognito : Design?.Name.Text) ?? string.Empty, width);
} }
public sealed class QuickDesignCombo( public sealed class QuickDesignCombo : DesignCombo
DesignManager designs, {
public QuickDesignCombo(DesignManager designs,
DesignFileSystem fileSystem, DesignFileSystem fileSystem,
Logger log, Logger log,
DesignChanged designChanged, DesignChanged designChanged,
TabSelected tabSelected, TabSelected tabSelected,
EphemeralConfig config, EphemeralConfig config,
DesignColors designColors) DesignColors designColors)
: DesignCombo(log, designChanged, tabSelected, config, designColors, () => : base(log, designChanged, tabSelected, config, designColors, () =>
[ [
.. designs.Designs .. designs.Designs
.Where(d => d.QuickDesign) .Where(d => d.QuickDesign)
.Select(d => new Tuple<Design, string>(d, fileSystem.FindLeaf(d, out var l) ? l.FullName() : string.Empty)) .Select(d => new Tuple<Design, string>(d, fileSystem.FindLeaf(d, out var l) ? l.FullName() : string.Empty))
.OrderBy(d => d.Item2), .OrderBy(d => d.Item2),
]); ])
=> AllowMouseWheel = MouseWheelType.Unmodified;
}
public sealed class LinkDesignCombo( public sealed class LinkDesignCombo(
DesignManager designs, DesignManager designs,

View file

@ -277,7 +277,7 @@ public class StateEditor(
(m.Item1, settings.UseSingleSource ? settings.Source : (m.Item1, settings.UseSingleSource ? settings.Source :
m.Item2 is StateSource.Game ? StateSource.Game : m.Item2))); 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()) if (!settings.RespectManual || !state.Sources[meta].IsManual())
Editor.ChangeMetaState(state, meta, mergedDesign.Design.DesignData.GetMeta(meta), Source(meta), out _, settings.Key); Editor.ChangeMetaState(state, meta, mergedDesign.Design.DesignData.GetMeta(meta), Source(meta), out _, settings.Key);