feat(flight-finder): implement milestone M1 - domain model and skill contract

This commit is contained in:
2026-03-30 16:45:40 -05:00
parent 57f6b132b2
commit 9c7103770a
1237 changed files with 901934 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
import * as r from 'restructure';
import { resolveLength } from 'restructure';
import { ItemVariationStore } from './variations';
// TODO: add this to restructure
class VariableSizeNumber {
constructor(size) {
this._size = size;
}
decode(stream, parent) {
switch (this.size(0, parent)) {
case 1: return stream.readUInt8();
case 2: return stream.readUInt16BE();
case 3: return stream.readUInt24BE();
case 4: return stream.readUInt32BE();
}
}
size(val, parent) {
return resolveLength(this._size, null, parent);
}
}
let MapDataEntry = new r.Struct({
entry: new VariableSizeNumber(t => ((t.parent.entryFormat & 0x0030) >> 4) + 1),
outerIndex: t => t.entry >> ((t.parent.entryFormat & 0x000F) + 1),
innerIndex: t => t.entry & ((1 << ((t.parent.entryFormat & 0x000F) + 1)) - 1)
});
let DeltaSetIndexMap = new r.Struct({
entryFormat: r.uint16,
mapCount: r.uint16,
mapData: new r.Array(MapDataEntry, 'mapCount')
});
export default new r.Struct({
majorVersion: r.uint16,
minorVersion: r.uint16,
itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore),
advanceWidthMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
LSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap),
RSBMapping: new r.Pointer(r.uint32, DeltaSetIndexMap)
});