From 9a1e38dfb7c78b5591f94ee6edab5de3119589a7 Mon Sep 17 00:00:00 2001 From: Tau Date: Mon, 29 Apr 2019 10:24:47 -0400 Subject: [PATCH] idz: Use sets for unlocks flags --- src/idz/decoder/_bitmap.ts | 6 +++--- src/idz/decoder/saveProfile.ts | 2 +- src/idz/decoder/saveStocker.ts | 2 +- src/idz/encoder/_bitmap.ts | 2 +- src/idz/repo.ts | 4 ++-- src/idz/request/saveProfile.ts | 2 +- src/idz/request/saveStocker.ts | 2 +- src/idz/response/loadProfile2.ts | 2 +- src/idz/response/loadStocker.ts | 4 +++- 9 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/idz/decoder/_bitmap.ts b/src/idz/decoder/_bitmap.ts index 32f75fd..17aa426 100644 --- a/src/idz/decoder/_bitmap.ts +++ b/src/idz/decoder/_bitmap.ts @@ -1,12 +1,12 @@ -export function bitmap(buf: Buffer): number[] { - const result = new Array(); +export function bitmap(buf: Buffer): Set { + const result = new Set(); for (let byteNo = 0; byteNo < buf.length; byteNo++) { const byte = buf.readUInt8(byteNo); for (let bitNo = 0; bitNo < 8; bitNo++) { if (byte & (1 << bitNo)) { - result.push(8 * byteNo + bitNo); + result.add((8 * byteNo + bitNo) as T); } } } diff --git a/src/idz/decoder/saveProfile.ts b/src/idz/decoder/saveProfile.ts index 2dc0ea0..77337dc 100644 --- a/src/idz/decoder/saveProfile.ts +++ b/src/idz/decoder/saveProfile.ts @@ -53,7 +53,7 @@ export function saveProfile(buf: Buffer): SaveProfileRequest { dpoint: buf.readUInt32LE(0x0464), mileage: buf.readUInt32LE(0x0008), title: buf.readUInt16LE(0x0040) as TitleCode, - titles: bitmap(buf.slice(0x0042, 0x00f6)) as TitleCode[], + titles: bitmap(buf.slice(0x0042, 0x00f6)), background: buf.readUInt8(0x0750) as BackgroundCode, coursePlays, missions: { diff --git a/src/idz/decoder/saveStocker.ts b/src/idz/decoder/saveStocker.ts index 3e21d88..ff7c6b6 100644 --- a/src/idz/decoder/saveStocker.ts +++ b/src/idz/decoder/saveStocker.ts @@ -14,7 +14,7 @@ export function saveStocker(buf: Buffer): SaveStockerRequest { type: "save_stocker_req", profileId: buf.readUInt32LE(0x0004) as ExtId, - backgrounds: bitmap(buf.slice(0x0008, 0x002c)) as BackgroundCode[], + backgrounds: bitmap(buf.slice(0x0008, 0x002c)), selectedCar: buf.readUInt16LE(0x009c) as CarSelector, chara: chara(buf.slice(0x009e, 0x00b2)), }; diff --git a/src/idz/encoder/_bitmap.ts b/src/idz/encoder/_bitmap.ts index 9172b16..6a8bb72 100644 --- a/src/idz/encoder/_bitmap.ts +++ b/src/idz/encoder/_bitmap.ts @@ -1,4 +1,4 @@ -export function bitmap(items: number[], nbytes: number): Buffer { +export function bitmap(items: Set, nbytes: number): Buffer { const buf = Buffer.alloc(nbytes); for (const item of items) { diff --git a/src/idz/repo.ts b/src/idz/repo.ts index 840d10a..631edb4 100644 --- a/src/idz/repo.ts +++ b/src/idz/repo.ts @@ -44,9 +44,9 @@ export interface FacetRepository { } export interface FlagRepository { - loadAll(profileId: Model.ExtId): Promise; + loadAll(profileId: Model.ExtId): Promise>; - saveAll(profileId: Model.ExtId, items: T[]): Promise; + saveAll(profileId: Model.ExtId, items: Set): Promise; } export interface ProfileRepository { diff --git a/src/idz/request/saveProfile.ts b/src/idz/request/saveProfile.ts index 6d29ea6..6306d7d 100644 --- a/src/idz/request/saveProfile.ts +++ b/src/idz/request/saveProfile.ts @@ -16,7 +16,7 @@ export interface SaveProfileRequest { dpoint: number; mileage: number; title: TitleCode; - titles: TitleCode[]; + titles: Set; background: BackgroundCode; coursePlays: Map; missions: MissionState; diff --git a/src/idz/request/saveStocker.ts b/src/idz/request/saveStocker.ts index 8c67955..eb97ee4 100644 --- a/src/idz/request/saveStocker.ts +++ b/src/idz/request/saveStocker.ts @@ -7,6 +7,6 @@ export interface SaveStockerRequest { type: "save_stocker_req"; profileId: ExtId; selectedCar: CarSelector; - backgrounds: BackgroundCode[]; + backgrounds: Set; chara: Chara; } diff --git a/src/idz/response/loadProfile2.ts b/src/idz/response/loadProfile2.ts index 9691ab0..143ea1e 100644 --- a/src/idz/response/loadProfile2.ts +++ b/src/idz/response/loadProfile2.ts @@ -21,7 +21,7 @@ export interface LoadProfileResponse2 { teamId?: number; settings: Settings; chara: Chara; - titles: TitleCode[]; + titles: Set; coursePlays: Map; missions: MissionState; timeAttack: TimeAttackScore[]; diff --git a/src/idz/response/loadStocker.ts b/src/idz/response/loadStocker.ts index 387dc49..ccd4a33 100644 --- a/src/idz/response/loadStocker.ts +++ b/src/idz/response/loadStocker.ts @@ -1,5 +1,7 @@ +import { BackgroundCode } from "../model/base"; + export interface LoadStockerResponse { type: "load_stocker_res"; status: number; - backgrounds: number[]; + backgrounds: Set; }