Spaces:
Running
Running
export default (data, map) => { | |
let view = new DataView(data.buffer, data.byteOffset, data.byteLength); | |
map._segmentData.XTHG = []; | |
for (let i = 0; i < data.byteLength; i++) { | |
let offset = i * 12; | |
if (offset >= data.byteLength) | |
break; | |
let xthg = {}; | |
xthg.id = view.getUint8(offset + 0); | |
xthg.type = types[xthg.id]; | |
xthg.actor = actors[xthg.id]; | |
xthg.direction = xthg.type == 'actor' ? direction[view.getUint8(offset + 1)] : view.getUint8(offset + 1); | |
xthg.x = view.getUint8(offset + 3); | |
xthg.y = view.getUint8(offset + 4); | |
xthg.z = view.getUint8(offset + 5); | |
xthg.data2 = view.getUint8(offset + 2); // identifier? sequence number? type? | |
xthg.data7 = view.getUint8(offset + 6); | |
xthg.data8 = view.getUint8(offset + 7); | |
xthg.data9 = view.getUint8(offset + 8); | |
xthg.dataA = view.getUint8(offset + 9); | |
xthg.dataB = view.getUint8(offset + 10); | |
xthg.dataC = view.getUint8(offset + 11); | |
map._segmentData.XTHG.push(xthg); | |
} | |
}; | |
let direction = { | |
0x00: 'N', | |
0x01: 'NE', | |
0x02: 'E', | |
0x03: 'SE', | |
0x04: 'S', | |
0x05: 'SW', | |
0x06: 'W', | |
0x07: 'NW', | |
0x08: 'EIGHT!' | |
}; | |
let types = { | |
0x00: null, | |
0x01: 'actor', | |
0x02: 'actor', | |
0x03: 'actor', | |
0x04: null, | |
0x05: 'actor', | |
0x06: null, | |
0x07: 'deploy', | |
0x08: 'deploy', | |
0x09: 'actor', | |
0x0A: 'actor', | |
0x0B: 'actor', | |
0x0C: null, | |
0x0D: null, | |
0x0E: 'deploy', | |
0x0F: 'actor', | |
0x10: 'actor', | |
}; | |
let actors = { | |
0x00: null, | |
0x01: 'Airplane', | |
0x02: 'Helicopter', | |
0x03: 'Cargo Ship', | |
0x04: null, | |
0x05: 'Monster', | |
0x06: null, | |
0x07: 'Deploy Police', | |
0x08: 'Deploy Fire', | |
0x09: 'Sailboat', | |
0x0A: 'Train Engine', | |
0x0B: 'Train Car', | |
0x0C: null, | |
0x0D: null, | |
0x0E: 'Deploy Military', | |
0x0F: 'Tornado', | |
0x10: 'Maxis Man', | |
}; |