Glamourer/Glamourer.GameData/CharacterCustomization.cs
2022-07-27 13:47:48 +02:00

162 lines
3.8 KiB
C#

using System;
using Glamourer.Customization;
using Penumbra.GameData.Enums;
namespace Glamourer;
public readonly unsafe struct CharacterCustomization
{
public static readonly CharacterCustomization Null = new(null);
private readonly CustomizationData* _data;
public IntPtr Address
=> (IntPtr)_data;
public CharacterCustomization(CustomizationData* data)
=> _data = data;
public void Load(CharacterCustomization other)
=> *_data = *other._data;
public ref Race Race
=> ref _data->Race;
public ref SubRace Clan
=> ref _data->Clan;
public Gender Gender
{
get => _data->Gender;
set => _data->Gender = value;
}
public ref byte BodyType
=> ref _data->BodyType;
public ref byte Height
=> ref _data->Height;
public ref byte Face
=> ref _data->Face;
public ref byte Hairstyle
=> ref _data->Hairstyle;
public bool HighlightsOn
{
get => _data->HighlightsOn;
set => _data->HighlightsOn = value;
}
public ref byte SkinColor
=> ref _data->SkinColor;
public ref byte EyeColorRight
=> ref _data->EyeColorRight;
public ref byte HairColor
=> ref _data->HairColor;
public ref byte HighlightsColor
=> ref _data->HighlightsColor;
public ref byte FacialFeatures
=> ref _data->FacialFeatures;
public ref byte TattooColor
=> ref _data->TattooColor;
public ref byte Eyebrow
=> ref _data->Eyebrow;
public ref byte EyeColorLeft
=> ref _data->EyeColorLeft;
public byte EyeShape
{
get => _data->EyeShape;
set => _data->EyeShape = value;
}
public byte FacePaint
{
get => _data->FacePaint;
set => _data->FacePaint = value;
}
public bool FacePaintReversed
{
get => _data->FacePaintReversed;
set => _data->FacePaintReversed = value;
}
public byte Mouth
{
get => _data->Mouth;
set => _data->Mouth = value;
}
public bool SmallIris
{
get => _data->SmallIris;
set => _data->SmallIris = value;
}
public bool Lipstick
{
get => _data->Lipstick;
set => _data->Lipstick = value;
}
public ref byte Nose
=> ref _data->Nose;
public ref byte Jaw
=> ref _data->Jaw;
public ref byte LipColor
=> ref _data->LipColor;
public ref byte MuscleMass
=> ref _data->MuscleMass;
public ref byte TailShape
=> ref _data->TailShape;
public ref byte BustSize
=> ref _data->BustSize;
public ref byte FacePaintColor
=> ref _data->FacePaintColor;
public bool FacialFeature(int idx)
=> _data->FacialFeature(idx);
public void FacialFeature(int idx, bool set)
=> _data->FacialFeature(idx, set);
public byte this[CustomizationId id]
{
get => _data->Get(id);
set => _data->Set(id, value);
}
public static implicit operator CharacterCustomization(CustomizationData* val)
=> new(val);
public static implicit operator CharacterCustomization(IntPtr val)
=> new((CustomizationData*)val);
public static implicit operator bool(CharacterCustomization customize)
=> customize._data != null;
public static bool operator true(CharacterCustomization customize)
=> customize._data != null;
public static bool operator false(CharacterCustomization customize)
=> customize._data == null;
public static bool operator !(CharacterCustomization customize)
=> customize._data == null;
}