27 lines
693 B
TypeScript
27 lines
693 B
TypeScript
import { MissionGrid } from "../model/mission";
|
|
|
|
export function mission(grids: MissionGrid[]): Buffer {
|
|
const buf = Buffer.alloc(0x24);
|
|
|
|
for (let gridNo = 0; gridNo < grids.length; gridNo++) {
|
|
const grid = grids[gridNo];
|
|
const slices = [0, 0, 0];
|
|
|
|
for (let cellNo = 0; cellNo < 9 && cellNo < grid.cells.length; cellNo++) {
|
|
const value = grid.cells[cellNo];
|
|
|
|
for (let sliceNo = 0; sliceNo < 3; sliceNo++) {
|
|
if (value & (1 << sliceNo)) {
|
|
slices[sliceNo] |= 1 << cellNo;
|
|
}
|
|
}
|
|
}
|
|
|
|
for (let sliceNo = 0; sliceNo < 3; sliceNo++) {
|
|
buf.writeUInt16LE(slices[sliceNo], 0x0c * sliceNo + 0x02 * gridNo);
|
|
}
|
|
}
|
|
|
|
return buf;
|
|
}
|