mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 18:27:24 +01:00
Improve StateIndex.
This commit is contained in:
parent
1ad70541d3
commit
5fd4a83aa4
3 changed files with 232 additions and 1 deletions
|
|
@ -37,6 +37,16 @@ public static class MetaExtensions
|
||||||
_ => (MetaFlag)byte.MaxValue,
|
_ => (MetaFlag)byte.MaxValue,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static MetaIndex ToIndex(this MetaFlag index)
|
||||||
|
=> index switch
|
||||||
|
{
|
||||||
|
MetaFlag.Wetness => MetaIndex.Wetness,
|
||||||
|
MetaFlag.HatState => MetaIndex.HatState,
|
||||||
|
MetaFlag.VisorState => MetaIndex.VisorState,
|
||||||
|
MetaFlag.WeaponState => MetaIndex.WeaponState,
|
||||||
|
_ => (MetaIndex)byte.MaxValue,
|
||||||
|
};
|
||||||
|
|
||||||
public static string ToName(this MetaIndex index)
|
public static string ToName(this MetaIndex index)
|
||||||
=> index switch
|
=> index switch
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,227 @@ public readonly record struct StateIndex(int Value) : IEqualityOperators<StateIn
|
||||||
public const int ParamDecalColor = 80;
|
public const int ParamDecalColor = 80;
|
||||||
|
|
||||||
public const int Size = 81;
|
public const int Size = 81;
|
||||||
|
|
||||||
|
public IEnumerable<StateIndex> All
|
||||||
|
=> Enumerable.Range(0, Size - 1).Select(i => new StateIndex(i));
|
||||||
|
|
||||||
|
public bool GetApply(DesignBase data)
|
||||||
|
=> GetFlag() switch
|
||||||
|
{
|
||||||
|
EquipFlag e => data.ApplyEquip.HasFlag(e),
|
||||||
|
CustomizeFlag c => data.ApplyCustomize.HasFlag(c),
|
||||||
|
MetaFlag m => data.ApplyMeta.HasFlag(m),
|
||||||
|
CrestFlag c => data.ApplyCrest.HasFlag(c),
|
||||||
|
CustomizeParameterFlag c => data.ApplyParameters.HasFlag(c),
|
||||||
|
bool v => v,
|
||||||
|
_ => false,
|
||||||
|
};
|
||||||
|
|
||||||
|
public string ToName()
|
||||||
|
=> GetFlag() switch
|
||||||
|
{
|
||||||
|
EquipFlag e => GetName(e),
|
||||||
|
CustomizeFlag c => c.ToIndex().ToDefaultName(),
|
||||||
|
MetaFlag m => m.ToIndex().ToName(),
|
||||||
|
CrestFlag c => c.ToLabel(),
|
||||||
|
CustomizeParameterFlag c => c.ToName(),
|
||||||
|
bool v => "Model ID",
|
||||||
|
_ => "Unknown",
|
||||||
|
};
|
||||||
|
|
||||||
|
public object GetFlag()
|
||||||
|
=> Value switch
|
||||||
|
{
|
||||||
|
EquipHead => EquipFlag.Head,
|
||||||
|
EquipBody => EquipFlag.Body,
|
||||||
|
EquipHands => EquipFlag.Hands,
|
||||||
|
EquipLegs => EquipFlag.Legs,
|
||||||
|
EquipFeet => EquipFlag.Feet,
|
||||||
|
EquipEars => EquipFlag.Ears,
|
||||||
|
EquipNeck => EquipFlag.Neck,
|
||||||
|
EquipWrist => EquipFlag.Wrist,
|
||||||
|
EquipRFinger => EquipFlag.RFinger,
|
||||||
|
EquipLFinger => EquipFlag.LFinger,
|
||||||
|
EquipMainhand => EquipFlag.Mainhand,
|
||||||
|
EquipOffhand => EquipFlag.Offhand,
|
||||||
|
|
||||||
|
StainHead => EquipFlag.HeadStain,
|
||||||
|
StainBody => EquipFlag.BodyStain,
|
||||||
|
StainHands => EquipFlag.HandsStain,
|
||||||
|
StainLegs => EquipFlag.LegsStain,
|
||||||
|
StainFeet => EquipFlag.FeetStain,
|
||||||
|
StainEars => EquipFlag.EarsStain,
|
||||||
|
StainNeck => EquipFlag.NeckStain,
|
||||||
|
StainWrist => EquipFlag.WristStain,
|
||||||
|
StainRFinger => EquipFlag.RFingerStain,
|
||||||
|
StainLFinger => EquipFlag.LFingerStain,
|
||||||
|
StainMainhand => EquipFlag.MainhandStain,
|
||||||
|
StainOffhand => EquipFlag.OffhandStain,
|
||||||
|
|
||||||
|
CustomizeRace => CustomizeFlag.Race,
|
||||||
|
CustomizeGender => CustomizeFlag.Gender,
|
||||||
|
CustomizeBodyType => CustomizeFlag.BodyType,
|
||||||
|
CustomizeHeight => CustomizeFlag.Height,
|
||||||
|
CustomizeClan => CustomizeFlag.Clan,
|
||||||
|
CustomizeFace => CustomizeFlag.Face,
|
||||||
|
CustomizeHairstyle => CustomizeFlag.Hairstyle,
|
||||||
|
CustomizeHighlights => CustomizeFlag.Highlights,
|
||||||
|
CustomizeSkinColor => CustomizeFlag.SkinColor,
|
||||||
|
CustomizeEyeColorRight => CustomizeFlag.EyeColorRight,
|
||||||
|
CustomizeHairColor => CustomizeFlag.HairColor,
|
||||||
|
CustomizeHighlightsColor => CustomizeFlag.HighlightsColor,
|
||||||
|
CustomizeFacialFeature1 => CustomizeFlag.FacialFeature1,
|
||||||
|
CustomizeFacialFeature2 => CustomizeFlag.FacialFeature2,
|
||||||
|
CustomizeFacialFeature3 => CustomizeFlag.FacialFeature3,
|
||||||
|
CustomizeFacialFeature4 => CustomizeFlag.FacialFeature4,
|
||||||
|
CustomizeFacialFeature5 => CustomizeFlag.FacialFeature5,
|
||||||
|
CustomizeFacialFeature6 => CustomizeFlag.FacialFeature6,
|
||||||
|
CustomizeFacialFeature7 => CustomizeFlag.FacialFeature7,
|
||||||
|
CustomizeLegacyTattoo => CustomizeFlag.LegacyTattoo,
|
||||||
|
CustomizeTattooColor => CustomizeFlag.TattooColor,
|
||||||
|
CustomizeEyebrows => CustomizeFlag.Eyebrows,
|
||||||
|
CustomizeEyeColorLeft => CustomizeFlag.EyeColorLeft,
|
||||||
|
CustomizeEyeShape => CustomizeFlag.EyeShape,
|
||||||
|
CustomizeSmallIris => CustomizeFlag.SmallIris,
|
||||||
|
CustomizeNose => CustomizeFlag.Nose,
|
||||||
|
CustomizeJaw => CustomizeFlag.Jaw,
|
||||||
|
CustomizeMouth => CustomizeFlag.Mouth,
|
||||||
|
CustomizeLipstick => CustomizeFlag.Lipstick,
|
||||||
|
CustomizeLipColor => CustomizeFlag.LipColor,
|
||||||
|
CustomizeMuscleMass => CustomizeFlag.MuscleMass,
|
||||||
|
CustomizeTailShape => CustomizeFlag.TailShape,
|
||||||
|
CustomizeBustSize => CustomizeFlag.BustSize,
|
||||||
|
CustomizeFacePaint => CustomizeFlag.FacePaint,
|
||||||
|
CustomizeFacePaintReversed => CustomizeFlag.FacePaintReversed,
|
||||||
|
CustomizeFacePaintColor => CustomizeFlag.FacePaintColor,
|
||||||
|
|
||||||
|
MetaWetness => MetaFlag.Wetness,
|
||||||
|
MetaHatState => MetaFlag.HatState,
|
||||||
|
MetaVisorState => MetaFlag.VisorState,
|
||||||
|
MetaWeaponState => MetaFlag.WeaponState,
|
||||||
|
MetaModelId => true,
|
||||||
|
|
||||||
|
CrestHead => CrestFlag.Head,
|
||||||
|
CrestBody => CrestFlag.Body,
|
||||||
|
CrestOffhand => CrestFlag.OffHand,
|
||||||
|
|
||||||
|
ParamSkinDiffuse => CustomizeParameterFlag.SkinDiffuse,
|
||||||
|
ParamMuscleTone => CustomizeParameterFlag.MuscleTone,
|
||||||
|
ParamSkinSpecular => CustomizeParameterFlag.SkinSpecular,
|
||||||
|
ParamLipDiffuse => CustomizeParameterFlag.LipDiffuse,
|
||||||
|
ParamHairDiffuse => CustomizeParameterFlag.HairDiffuse,
|
||||||
|
ParamHairSpecular => CustomizeParameterFlag.HairSpecular,
|
||||||
|
ParamHairHighlight => CustomizeParameterFlag.HairHighlight,
|
||||||
|
ParamLeftEye => CustomizeParameterFlag.LeftEye,
|
||||||
|
ParamRightEye => CustomizeParameterFlag.RightEye,
|
||||||
|
ParamFeatureColor => CustomizeParameterFlag.FeatureColor,
|
||||||
|
ParamFacePaintUvMultiplier => CustomizeParameterFlag.FacePaintUvMultiplier,
|
||||||
|
ParamFacePaintUvOffset => CustomizeParameterFlag.FacePaintUvOffset,
|
||||||
|
ParamDecalColor => CustomizeParameterFlag.DecalColor,
|
||||||
|
|
||||||
|
_ => -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
public object? GetValue(in DesignData data)
|
||||||
|
{
|
||||||
|
return Value switch
|
||||||
|
{
|
||||||
|
EquipHead => data.Item(EquipSlot.Head),
|
||||||
|
EquipBody => data.Item(EquipSlot.Body),
|
||||||
|
EquipHands => data.Item(EquipSlot.Hands),
|
||||||
|
EquipLegs => data.Item(EquipSlot.Legs),
|
||||||
|
EquipFeet => data.Item(EquipSlot.Feet),
|
||||||
|
EquipEars => data.Item(EquipSlot.Ears),
|
||||||
|
EquipNeck => data.Item(EquipSlot.Neck),
|
||||||
|
EquipWrist => data.Item(EquipSlot.Wrists),
|
||||||
|
EquipRFinger => data.Item(EquipSlot.RFinger),
|
||||||
|
EquipLFinger => data.Item(EquipSlot.LFinger),
|
||||||
|
EquipMainhand => data.Item(EquipSlot.MainHand),
|
||||||
|
EquipOffhand => data.Item(EquipSlot.OffHand),
|
||||||
|
|
||||||
|
StainHead => data.Stain(EquipSlot.Head),
|
||||||
|
StainBody => data.Stain(EquipSlot.Body),
|
||||||
|
StainHands => data.Stain(EquipSlot.Hands),
|
||||||
|
StainLegs => data.Stain(EquipSlot.Legs),
|
||||||
|
StainFeet => data.Stain(EquipSlot.Feet),
|
||||||
|
StainEars => data.Stain(EquipSlot.Ears),
|
||||||
|
StainNeck => data.Stain(EquipSlot.Neck),
|
||||||
|
StainWrist => data.Stain(EquipSlot.Wrists),
|
||||||
|
StainRFinger => data.Stain(EquipSlot.RFinger),
|
||||||
|
StainLFinger => data.Stain(EquipSlot.LFinger),
|
||||||
|
StainMainhand => data.Stain(EquipSlot.MainHand),
|
||||||
|
StainOffhand => data.Stain(EquipSlot.OffHand),
|
||||||
|
|
||||||
|
CustomizeRace => data.Customize[CustomizeIndex.Race],
|
||||||
|
CustomizeGender => data.Customize[CustomizeIndex.Gender],
|
||||||
|
CustomizeBodyType => data.Customize[CustomizeIndex.BodyType],
|
||||||
|
CustomizeHeight => data.Customize[CustomizeIndex.Height],
|
||||||
|
CustomizeClan => data.Customize[CustomizeIndex.Clan],
|
||||||
|
CustomizeFace => data.Customize[CustomizeIndex.Face],
|
||||||
|
CustomizeHairstyle => data.Customize[CustomizeIndex.Hairstyle],
|
||||||
|
CustomizeHighlights => data.Customize[CustomizeIndex.Highlights],
|
||||||
|
CustomizeSkinColor => data.Customize[CustomizeIndex.SkinColor],
|
||||||
|
CustomizeEyeColorRight => data.Customize[CustomizeIndex.EyeColorRight],
|
||||||
|
CustomizeHairColor => data.Customize[CustomizeIndex.HairColor],
|
||||||
|
CustomizeHighlightsColor => data.Customize[CustomizeIndex.HighlightsColor],
|
||||||
|
CustomizeFacialFeature1 => data.Customize[CustomizeIndex.FacialFeature1],
|
||||||
|
CustomizeFacialFeature2 => data.Customize[CustomizeIndex.FacialFeature2],
|
||||||
|
CustomizeFacialFeature3 => data.Customize[CustomizeIndex.FacialFeature3],
|
||||||
|
CustomizeFacialFeature4 => data.Customize[CustomizeIndex.FacialFeature4],
|
||||||
|
CustomizeFacialFeature5 => data.Customize[CustomizeIndex.FacialFeature5],
|
||||||
|
CustomizeFacialFeature6 => data.Customize[CustomizeIndex.FacialFeature6],
|
||||||
|
CustomizeFacialFeature7 => data.Customize[CustomizeIndex.FacialFeature7],
|
||||||
|
CustomizeLegacyTattoo => data.Customize[CustomizeIndex.LegacyTattoo],
|
||||||
|
CustomizeTattooColor => data.Customize[CustomizeIndex.TattooColor],
|
||||||
|
CustomizeEyebrows => data.Customize[CustomizeIndex.Eyebrows],
|
||||||
|
CustomizeEyeColorLeft => data.Customize[CustomizeIndex.EyeColorLeft],
|
||||||
|
CustomizeEyeShape => data.Customize[CustomizeIndex.EyeShape],
|
||||||
|
CustomizeSmallIris => data.Customize[CustomizeIndex.SmallIris],
|
||||||
|
CustomizeNose => data.Customize[CustomizeIndex.Nose],
|
||||||
|
CustomizeJaw => data.Customize[CustomizeIndex.Jaw],
|
||||||
|
CustomizeMouth => data.Customize[CustomizeIndex.Mouth],
|
||||||
|
CustomizeLipstick => data.Customize[CustomizeIndex.Lipstick],
|
||||||
|
CustomizeLipColor => data.Customize[CustomizeIndex.LipColor],
|
||||||
|
CustomizeMuscleMass => data.Customize[CustomizeIndex.MuscleMass],
|
||||||
|
CustomizeTailShape => data.Customize[CustomizeIndex.TailShape],
|
||||||
|
CustomizeBustSize => data.Customize[CustomizeIndex.BustSize],
|
||||||
|
CustomizeFacePaint => data.Customize[CustomizeIndex.FacePaint],
|
||||||
|
CustomizeFacePaintReversed => data.Customize[CustomizeIndex.FacePaintReversed],
|
||||||
|
CustomizeFacePaintColor => data.Customize[CustomizeIndex.FacePaintColor],
|
||||||
|
|
||||||
|
MetaWetness => data.GetMeta(MetaIndex.Wetness),
|
||||||
|
MetaHatState => data.GetMeta(MetaIndex.HatState),
|
||||||
|
MetaVisorState => data.GetMeta(MetaIndex.VisorState),
|
||||||
|
MetaWeaponState => data.GetMeta(MetaIndex.WeaponState),
|
||||||
|
MetaModelId => data.ModelId,
|
||||||
|
|
||||||
|
CrestHead => data.Crest(CrestFlag.Head),
|
||||||
|
CrestBody => data.Crest(CrestFlag.Body),
|
||||||
|
CrestOffhand => data.Crest(CrestFlag.OffHand),
|
||||||
|
|
||||||
|
ParamSkinDiffuse => data.Parameters[CustomizeParameterFlag.SkinDiffuse],
|
||||||
|
ParamMuscleTone => data.Parameters[CustomizeParameterFlag.MuscleTone],
|
||||||
|
ParamSkinSpecular => data.Parameters[CustomizeParameterFlag.SkinSpecular],
|
||||||
|
ParamLipDiffuse => data.Parameters[CustomizeParameterFlag.LipDiffuse],
|
||||||
|
ParamHairDiffuse => data.Parameters[CustomizeParameterFlag.HairDiffuse],
|
||||||
|
ParamHairSpecular => data.Parameters[CustomizeParameterFlag.HairSpecular],
|
||||||
|
ParamHairHighlight => data.Parameters[CustomizeParameterFlag.HairHighlight],
|
||||||
|
ParamLeftEye => data.Parameters[CustomizeParameterFlag.LeftEye],
|
||||||
|
ParamRightEye => data.Parameters[CustomizeParameterFlag.RightEye],
|
||||||
|
ParamFeatureColor => data.Parameters[CustomizeParameterFlag.FeatureColor],
|
||||||
|
ParamFacePaintUvMultiplier => data.Parameters[CustomizeParameterFlag.FacePaintUvMultiplier],
|
||||||
|
ParamFacePaintUvOffset => data.Parameters[CustomizeParameterFlag.FacePaintUvOffset],
|
||||||
|
ParamDecalColor => data.Parameters[CustomizeParameterFlag.DecalColor],
|
||||||
|
|
||||||
|
_ => null,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetName(EquipFlag flag)
|
||||||
|
{
|
||||||
|
var slot = flag.ToSlot(out var stain);
|
||||||
|
return stain ? $"{slot.ToName()} Stain" : slot.ToName();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class StateExtensions
|
public static class StateExtensions
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 17d302a7d634cbb2c49c10d5b95236a40dbff370
|
Subproject commit 260ac69cd6f17050eaf9b7e0b5ce9a8843edfee4
|
||||||
Loading…
Add table
Add a link
Reference in a new issue