Store mission progress
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { MissionGrid } from "../model/mission";
|
||||
|
||||
export function mission(grids: MissionGrid[]): Buffer {
|
||||
const buf = Buffer.alloc(0x24);
|
||||
|
||||
for (const grid of grids) {
|
||||
const { gridNo } = grid;
|
||||
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;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import iconv = require("iconv-lite");
|
||||
import { bitmap } from "./_bitmap";
|
||||
import { car } from "./_car";
|
||||
import { chara } from "./_chara";
|
||||
import { mission } from "./_mission";
|
||||
import { LoadProfileResponse2 } from "../response/loadProfile2";
|
||||
|
||||
export function loadProfile2(res: LoadProfileResponse2) {
|
||||
@@ -36,6 +37,7 @@ export function loadProfile2(res: LoadProfileResponse2) {
|
||||
}
|
||||
|
||||
buf.writeUInt16LE(0x0065, 0x0000);
|
||||
mission(res.missions.team).copy(buf, 0x038a);
|
||||
buf.writeUInt32LE(res.profileId, 0x03b8);
|
||||
buf.writeUInt16LE(res.settings.bgMusic, 0x03c8);
|
||||
buf.writeUInt16LE(res.lv, 0x03cc);
|
||||
@@ -46,6 +48,7 @@ export function loadProfile2(res: LoadProfileResponse2) {
|
||||
iconv.encode(res.name + "\0", "shift_jis").copy(buf, 0x03ee);
|
||||
buf.writeUInt16LE(res.story.x, 0x06bc);
|
||||
buf.writeUInt8(res.story.y, 0x0670);
|
||||
mission(res.missions.solo).copy(buf, 0x06e4);
|
||||
chara(res.chara).copy(buf, 0x070c);
|
||||
bitmap(res.titles, 0xb4).copy(buf, 0x720);
|
||||
buf.writeInt32LE(res.teamId || 0, 0x07e0);
|
||||
|
||||
Reference in New Issue
Block a user