mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 18:27:24 +01:00
41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
using Penumbra.GameData.Structs;
|
|
|
|
namespace Glamourer
|
|
{
|
|
public readonly struct Stain
|
|
{
|
|
public readonly string Name;
|
|
public readonly uint RgbaColor;
|
|
|
|
private readonly uint _seColorId;
|
|
|
|
public byte R
|
|
=> (byte) (RgbaColor & 0xFF);
|
|
|
|
public byte G
|
|
=> (byte) ((RgbaColor >> 8) & 0xFF);
|
|
|
|
public byte B
|
|
=> (byte) ((RgbaColor >> 16) & 0xFF);
|
|
|
|
public byte Intensity
|
|
=> (byte) ((1 + R + G + B) / 3);
|
|
|
|
public uint SeColor
|
|
=> _seColorId & 0x00FFFFFF;
|
|
|
|
public StainId RowIndex
|
|
=> (StainId) (_seColorId >> 24);
|
|
|
|
|
|
public static uint SeColorToRgba(uint color)
|
|
=> ((color & 0xFF) << 16) | ((color >> 16) & 0xFF) | (color & 0xFF00) | 0xFF000000;
|
|
|
|
public Stain(byte index, Lumina.Excel.GeneratedSheets.Stain stain)
|
|
{
|
|
Name = stain.Name.ToString();
|
|
_seColorId = stain.Color | ((uint) index << 24);
|
|
RgbaColor = SeColorToRgba(stain.Color);
|
|
}
|
|
}
|
|
}
|