1
Fork 0
mirror of https://github.com/xivdev/EXDSchema.git synced 2025-06-06 16:17:46 +00:00
EXDSchema/SchemaValidator/DefinedColumn.cs

46 lines
No EOL
1.2 KiB
C#

using Lumina.Data.Structs.Excel;
using SchemaValidator.New;
namespace SchemaValidator;
public class DefinedColumn
{
public ExcelColumnDefinition Definition { get; set; }
public Field Field { get; set; }
private int? _bitOffset;
public int BitOffset {
get
{
if (_bitOffset == null)
_bitOffset = CalculateBitOffset(Definition.Offset, Definition.Type);
return _bitOffset.Value;
}
}
public override string ToString() => $"{Field} @ 0x{BitOffset / 8:X}&{BitOffset % 8}";
public static int CalculateBitOffset(ExcelColumnDefinition def)
{
return CalculateBitOffset(def.Offset, def.Type);
}
public static int CalculateBitOffset(int offset, ExcelColumnDataType type)
{
var bitOffset = offset * 8;
return type switch
{
ExcelColumnDataType.PackedBool0 => bitOffset + 0,
ExcelColumnDataType.PackedBool1 => bitOffset + 1,
ExcelColumnDataType.PackedBool2 => bitOffset + 2,
ExcelColumnDataType.PackedBool3 => bitOffset + 3,
ExcelColumnDataType.PackedBool4 => bitOffset + 4,
ExcelColumnDataType.PackedBool5 => bitOffset + 5,
ExcelColumnDataType.PackedBool6 => bitOffset + 6,
ExcelColumnDataType.PackedBool7 => bitOffset + 7,
_ => bitOffset,
};
}
}