mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 10:17:23 +01:00
107 lines
6.3 KiB
C#
107 lines
6.3 KiB
C#
using System;
|
|
using Penumbra.GameData.Enums;
|
|
|
|
namespace Glamourer.Customization;
|
|
|
|
public enum CustomizationId : byte
|
|
{
|
|
Race = 0,
|
|
Gender = 1,
|
|
BodyType = 2,
|
|
Height = 3,
|
|
Clan = 4,
|
|
Face = 5,
|
|
Hairstyle = 6,
|
|
HighlightsOnFlag = 7,
|
|
SkinColor = 8,
|
|
EyeColorR = 9,
|
|
HairColor = 10,
|
|
HighlightColor = 11,
|
|
FacialFeaturesTattoos = 12, // Bitmask, 1-7 per face, 8 is 1.0 tattoo
|
|
TattooColor = 13,
|
|
Eyebrows = 14,
|
|
EyeColorL = 15,
|
|
EyeShape = 16, // Flag 128 for Small
|
|
Nose = 17,
|
|
Jaw = 18,
|
|
Mouth = 19, // Flag 128 for Lip Color set
|
|
LipColor = 20, // Flag 128 for Light instead of Dark
|
|
MuscleToneOrTailEarLength = 21,
|
|
TailEarShape = 22,
|
|
BustSize = 23,
|
|
FacePaint = 24,
|
|
FacePaintColor = 25, // Flag 128 for Light instead of Dark.
|
|
}
|
|
|
|
public static class CustomizationExtensions
|
|
{
|
|
public static string ToDefaultName(this CustomizationId customizationId)
|
|
=> customizationId switch
|
|
{
|
|
CustomizationId.Race => "Race",
|
|
CustomizationId.Gender => "Gender",
|
|
CustomizationId.BodyType => "Body Type",
|
|
CustomizationId.Height => "Height",
|
|
CustomizationId.Clan => "Clan",
|
|
CustomizationId.Face => "Head Style",
|
|
CustomizationId.Hairstyle => "Hair Style",
|
|
CustomizationId.HighlightsOnFlag => "Highlights",
|
|
CustomizationId.SkinColor => "Skin Color",
|
|
CustomizationId.EyeColorR => "Right Eye Color",
|
|
CustomizationId.HairColor => "Hair Color",
|
|
CustomizationId.HighlightColor => "Highlights Color",
|
|
CustomizationId.FacialFeaturesTattoos => "Facial Features",
|
|
CustomizationId.TattooColor => "Tattoo Color",
|
|
CustomizationId.Eyebrows => "Eyebrow Style",
|
|
CustomizationId.EyeColorL => "Left Eye Color",
|
|
CustomizationId.EyeShape => "Eye Shape",
|
|
CustomizationId.Nose => "Nose Style",
|
|
CustomizationId.Jaw => "Jaw Style",
|
|
CustomizationId.Mouth => "Mouth Style",
|
|
CustomizationId.MuscleToneOrTailEarLength => "Muscle Tone",
|
|
CustomizationId.TailEarShape => "Tail Shape",
|
|
CustomizationId.BustSize => "Bust Size",
|
|
CustomizationId.FacePaint => "Face Paint",
|
|
CustomizationId.FacePaintColor => "Face Paint Color",
|
|
CustomizationId.LipColor => "Lip Color",
|
|
|
|
_ => throw new ArgumentOutOfRangeException(nameof(customizationId), customizationId, null),
|
|
};
|
|
|
|
public static CharaMakeParams.MenuType ToType(this CustomizationId customizationId, Race race = Race.Hyur)
|
|
=> customizationId switch
|
|
{
|
|
CustomizationId.Race => CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.Gender => CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.BodyType => CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.Height => CharaMakeParams.MenuType.Percentage,
|
|
CustomizationId.Clan => CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.Face => CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.Hairstyle => CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.HighlightsOnFlag => CharaMakeParams.MenuType.ListSelector,
|
|
CustomizationId.SkinColor => CharaMakeParams.MenuType.ColorPicker,
|
|
CustomizationId.EyeColorR => CharaMakeParams.MenuType.ColorPicker,
|
|
CustomizationId.HairColor => CharaMakeParams.MenuType.ColorPicker,
|
|
CustomizationId.HighlightColor => CharaMakeParams.MenuType.ColorPicker,
|
|
CustomizationId.FacialFeaturesTattoos => CharaMakeParams.MenuType.MultiIconSelector,
|
|
CustomizationId.TattooColor => CharaMakeParams.MenuType.ColorPicker,
|
|
CustomizationId.Eyebrows => CharaMakeParams.MenuType.ListSelector,
|
|
CustomizationId.EyeColorL => CharaMakeParams.MenuType.ColorPicker,
|
|
CustomizationId.EyeShape => CharaMakeParams.MenuType.ListSelector,
|
|
CustomizationId.Nose => CharaMakeParams.MenuType.ListSelector,
|
|
CustomizationId.Jaw => CharaMakeParams.MenuType.ListSelector,
|
|
CustomizationId.Mouth => CharaMakeParams.MenuType.ListSelector,
|
|
CustomizationId.MuscleToneOrTailEarLength => CharaMakeParams.MenuType.Percentage,
|
|
CustomizationId.BustSize => CharaMakeParams.MenuType.Percentage,
|
|
CustomizationId.FacePaint => CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.FacePaintColor => CharaMakeParams.MenuType.ColorPicker,
|
|
|
|
CustomizationId.TailEarShape => race is Race.Elezen or Race.Lalafell
|
|
? CharaMakeParams.MenuType.ListSelector
|
|
: CharaMakeParams.MenuType.IconSelector,
|
|
CustomizationId.LipColor => race == Race.Hrothgar
|
|
? CharaMakeParams.MenuType.IconSelector
|
|
: CharaMakeParams.MenuType.ColorPicker,
|
|
_ => throw new ArgumentOutOfRangeException(nameof(customizationId), customizationId, null),
|
|
};
|
|
}
|