Penumbra/Penumbra.GameData/Enums/BodySlot.cs

63 lines
No EOL
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Penumbra.GameData.Enums;
public enum BodySlot : byte
{
Unknown,
Hair,
Face,
Tail,
Body,
Zear,
}
public static class BodySlotEnumExtension
{
public static string ToSuffix( this BodySlot value )
=> value switch
{
BodySlot.Zear => "zear",
BodySlot.Face => "face",
BodySlot.Hair => "hair",
BodySlot.Body => "body",
BodySlot.Tail => "tail",
_ => throw new InvalidEnumArgumentException(),
};
public static char ToAbbreviation(this BodySlot value)
=> value switch
{
BodySlot.Hair => 'h',
BodySlot.Face => 'f',
BodySlot.Tail => 't',
BodySlot.Body => 'b',
BodySlot.Zear => 'z',
_ => throw new InvalidEnumArgumentException(),
};
public static CustomizationType ToCustomizationType(this BodySlot value)
=> value switch
{
BodySlot.Hair => CustomizationType.Hair,
BodySlot.Face => CustomizationType.Face,
BodySlot.Tail => CustomizationType.Tail,
BodySlot.Body => CustomizationType.Body,
BodySlot.Zear => CustomizationType.Zear,
_ => throw new ArgumentOutOfRangeException(nameof(value), value, null)
};
}
public static partial class Names
{
public static readonly Dictionary< string, BodySlot > StringToBodySlot = new()
{
{ BodySlot.Zear.ToSuffix(), BodySlot.Zear },
{ BodySlot.Face.ToSuffix(), BodySlot.Face },
{ BodySlot.Hair.ToSuffix(), BodySlot.Hair },
{ BodySlot.Body.ToSuffix(), BodySlot.Body },
{ BodySlot.Tail.ToSuffix(), BodySlot.Tail },
};
}