mirror of
https://github.com/xivdev/EXDSchema.git
synced 2025-06-06 16:17:46 +00:00
46 lines
No EOL
1.2 KiB
C#
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,
|
|
};
|
|
}
|
|
|
|
|
|
} |