diff --git a/src/idz/decoder/createTeam.ts b/src/idz/decoder/createTeam.ts index 8962876..43cc813 100644 --- a/src/idz/decoder/createTeam.ts +++ b/src/idz/decoder/createTeam.ts @@ -1,7 +1,7 @@ import iconv = require("iconv-lite"); import { RequestCode } from "./_defs"; -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { CreateTeamRequest } from "../request/createTeam"; @@ -11,7 +11,7 @@ createTeam.msgLen = 0x0050; export function createTeam(buf: Buffer): CreateTeamRequest { return { type: "create_team_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, teamName: iconv.decode(buf.slice(0x0008, 0x0028), "shift_jis"), field_0028: buf.readUInt16LE(0x0028), field_002C: buf.readUInt32LE(0x002c), diff --git a/src/idz/decoder/loadGarage.ts b/src/idz/decoder/loadGarage.ts index 465f489..9d3dbff 100644 --- a/src/idz/decoder/loadGarage.ts +++ b/src/idz/decoder/loadGarage.ts @@ -1,5 +1,5 @@ import { RequestCode } from "./_defs"; -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { LoadGarageRequest } from "../request/loadGarage"; @@ -9,7 +9,7 @@ loadGarage.msgLen = 0x0010; export function loadGarage(buf: Buffer): LoadGarageRequest { return { type: "load_garage_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, fetchOffset: buf.readUInt8(0x0008), field_000A: buf.readUInt16LE(0x000a), }; diff --git a/src/idz/decoder/loadStocker.ts b/src/idz/decoder/loadStocker.ts index bf834ad..39c71e5 100644 --- a/src/idz/decoder/loadStocker.ts +++ b/src/idz/decoder/loadStocker.ts @@ -1,5 +1,5 @@ import { RequestCode } from "./_defs"; -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { LoadStockerRequest } from "../request/loadStocker"; @@ -9,6 +9,6 @@ loadStocker.msgLen = 0x0010; export function loadStocker(buf: Buffer): LoadStockerRequest { return { type: "load_stocker_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, }; } diff --git a/src/idz/decoder/loadTopTen.ts b/src/idz/decoder/loadTopTen.ts index 53c1be8..b1b4ac4 100644 --- a/src/idz/decoder/loadTopTen.ts +++ b/src/idz/decoder/loadTopTen.ts @@ -1,5 +1,5 @@ import { RequestCode } from "./_defs"; -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { Team } from "../model/team"; import { LoadTopTenRequest } from "../request/loadTopTen"; @@ -27,7 +27,7 @@ export function loadTopTen(buf: Buffer): LoadTopTenRequest { field_C4: buf.readUInt8(0x00c4), // Boolean, true if profile ID is set field_C5: buf.readUInt8(0x00c5), // Always zero field_C6: buf.readUInt16LE(0x00c6), - profileId: profileId !== 0 ? (profileId as Id) : undefined, - teamId: teamId !== 0xffffffff ? (teamId as Id) : undefined, + profileId: profileId !== 0 ? (profileId as ExtId) : undefined, + teamId: teamId !== 0xffffffff ? (teamId as ExtId) : undefined, }; } diff --git a/src/idz/decoder/saveNewCar.ts b/src/idz/decoder/saveNewCar.ts index d6cc558..2de93af 100644 --- a/src/idz/decoder/saveNewCar.ts +++ b/src/idz/decoder/saveNewCar.ts @@ -1,6 +1,6 @@ import { car } from "./_car"; import { RequestCode } from "./_defs"; -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { SaveNewCarRequest } from "../request/saveNewCar"; @@ -10,7 +10,7 @@ saveNewCar.msgLen = 0x0090; export function saveNewCar(buf: Buffer): SaveNewCarRequest { return { type: "save_new_car_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, luid: buf.slice(0x0008, buf.indexOf(0, 0x0008)).toString("ascii"), car: car(buf.slice(0x0020, 0x0080)), field_0080: buf.readUInt32LE(0x0080), diff --git a/src/idz/decoder/saveProfile.ts b/src/idz/decoder/saveProfile.ts index 322c8d2..9430dd3 100644 --- a/src/idz/decoder/saveProfile.ts +++ b/src/idz/decoder/saveProfile.ts @@ -1,7 +1,7 @@ import { car } from "./_car"; import { mission } from "./_mission"; import { RequestCode } from "./_defs"; -import { BackgroundCode, Id, TitleCode } from "../model/base"; +import { BackgroundCode, ExtId, TitleCode } from "../model/base"; import { Profile } from "../model/profile"; import { SaveProfileRequest } from "../request/saveProfile"; import { bitmap } from "./_bitmap"; @@ -46,7 +46,7 @@ export function saveProfile(buf: Buffer): SaveProfileRequest { return { type: "save_profile_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, lv: buf.readUInt16LE(0x0026), exp: buf.readUInt32LE(0x0028), fame: buf.readUInt32LE(0x0468), diff --git a/src/idz/decoder/saveSettings.ts b/src/idz/decoder/saveSettings.ts index b3b3122..3b4fcf1 100644 --- a/src/idz/decoder/saveSettings.ts +++ b/src/idz/decoder/saveSettings.ts @@ -1,5 +1,5 @@ import { RequestCode } from "./_defs"; -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { SaveSettingsRequest } from "../request/saveSettings"; @@ -13,7 +13,7 @@ export function saveSettings(buf: Buffer): SaveSettingsRequest { return { type: "save_settings_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, dpoint: buf.readUInt32LE(0x0008), settings: { music: buf.readUInt16LE(0x0002), diff --git a/src/idz/decoder/saveStocker.ts b/src/idz/decoder/saveStocker.ts index e274b7f..3e21d88 100644 --- a/src/idz/decoder/saveStocker.ts +++ b/src/idz/decoder/saveStocker.ts @@ -1,7 +1,7 @@ import { bitmap } from "./_bitmap"; import { chara } from "./_chara"; import { RequestCode } from "./_defs"; -import { BackgroundCode, Id } from "../model/base"; +import { BackgroundCode, ExtId } from "../model/base"; import { CarSelector } from "../model/car"; import { Profile } from "../model/profile"; import { SaveStockerRequest } from "../request/saveStocker"; @@ -12,7 +12,7 @@ saveStocker.msgLen = 0x00c0; export function saveStocker(buf: Buffer): SaveStockerRequest { return { type: "save_stocker_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, backgrounds: bitmap(buf.slice(0x0008, 0x002c)) as BackgroundCode[], selectedCar: buf.readUInt16LE(0x009c) as CarSelector, diff --git a/src/idz/decoder/saveTimeAttack.ts b/src/idz/decoder/saveTimeAttack.ts index c206d46..8916433 100644 --- a/src/idz/decoder/saveTimeAttack.ts +++ b/src/idz/decoder/saveTimeAttack.ts @@ -1,5 +1,5 @@ import { RequestCode } from "./_defs"; -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { SaveTimeAttackRequest } from "../request/saveTimeAttack"; @@ -9,7 +9,7 @@ saveTimeAttack.msgLen = 0x0080; export function saveTimeAttack(buf: Buffer): SaveTimeAttackRequest { return { type: "save_time_attack_req", - profileId: buf.readUInt32LE(0x0004) as Id, + profileId: buf.readUInt32LE(0x0004) as ExtId, dayNight: buf.readUInt8(0x0054) & 1, payload: { courseId: buf.readUInt8(0x0054) >> 1, diff --git a/src/idz/handler/_team.ts b/src/idz/handler/_team.ts index 5411802..393d45c 100644 --- a/src/idz/handler/_team.ts +++ b/src/idz/handler/_team.ts @@ -1,4 +1,4 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Team } from "../model/team"; import { JoinAutoTeamRequest } from "../request/joinAutoTeam"; import { LoadTeamRequest } from "../request/loadTeam"; @@ -12,7 +12,7 @@ export function _team( ): JoinAutoTeamResponse | LoadTeamResponse { const bits = { team: { - id: 2 as Id, + id: 2 as ExtId, name: "ASS GENTLEMEN", }, members: [], diff --git a/src/idz/handler/createProfile.ts b/src/idz/handler/createProfile.ts index b994543..d3dc4e4 100644 --- a/src/idz/handler/createProfile.ts +++ b/src/idz/handler/createProfile.ts @@ -1,4 +1,4 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { MissionState } from "../model/mission"; import { Profile } from "../model/profile"; import { Settings } from "../model/settings"; @@ -17,7 +17,7 @@ export async function createProfile( const profile: Profile = { id: profileId, - teamId: 2 as Id, // TODO + teamId: 2 as ExtId, // TODO name: req.name, lv: 1, exp: 0, diff --git a/src/idz/handler/createTeam.ts b/src/idz/handler/createTeam.ts index 8f6cb5c..13b5e73 100644 --- a/src/idz/handler/createTeam.ts +++ b/src/idz/handler/createTeam.ts @@ -1,4 +1,4 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Team } from "../model/team"; import { CreateTeamRequest } from "../request/createTeam"; import { CreateTeamResponse } from "../response/createTeam"; @@ -11,6 +11,6 @@ export function createTeam( return { type: "create_team_res", status: 0, - teamId: 3 as Id, + teamId: 3 as ExtId, }; } diff --git a/src/idz/model/base.ts b/src/idz/model/base.ts index 567d656..7452722 100644 --- a/src/idz/model/base.ts +++ b/src/idz/model/base.ts @@ -2,5 +2,5 @@ // exist at run time, we just pretend they do. export type BackgroundCode = number & { __brand: "backgroundCode" }; -export type Id = number & { __id: T }; +export type ExtId = number & { __extId: T }; export type TitleCode = number & { __brand: "titleCode" }; diff --git a/src/idz/model/index.ts b/src/idz/model/index.ts index 802eff4..76e027a 100644 --- a/src/idz/model/index.ts +++ b/src/idz/model/index.ts @@ -1,4 +1,4 @@ -export { BackgroundCode, Id, TitleCode } from "./base"; +export { BackgroundCode, ExtId, TitleCode } from "./base"; export { Car, CarSelector } from "./car"; export { Chara } from "./chara"; export { MissionState, MissionGrid } from "./mission"; diff --git a/src/idz/model/profile.ts b/src/idz/model/profile.ts index 31dea04..70dd00b 100644 --- a/src/idz/model/profile.ts +++ b/src/idz/model/profile.ts @@ -1,9 +1,9 @@ -import { Id } from "./base"; +import { ExtId } from "./base"; import { Team } from "./team"; export interface Profile { - id: Id; - teamId?: Id; + id: ExtId; + teamId?: ExtId; name: string; lv: number; exp: number; diff --git a/src/idz/model/team.ts b/src/idz/model/team.ts index 5531606..d55e6a6 100644 --- a/src/idz/model/team.ts +++ b/src/idz/model/team.ts @@ -1,6 +1,6 @@ -import { Id } from "./base"; +import { ExtId } from "./base"; export interface Team { - id: Id; + id: ExtId; name: string; } diff --git a/src/idz/repo.ts b/src/idz/repo.ts index dfefa75..4b03b58 100644 --- a/src/idz/repo.ts +++ b/src/idz/repo.ts @@ -2,66 +2,69 @@ import * as Model from "./model"; import { AimeId } from "../model"; export interface CarRepository { - countCars(profileId: Model.Id): Promise; + countCars(profileId: Model.ExtId): Promise; - loadAllCars(profileId: Model.Id): Promise; + loadAllCars(profileId: Model.ExtId): Promise; - loadSelectedCar(profileId: Model.Id): Promise; + loadSelectedCar(profileId: Model.ExtId): Promise; - saveCar(profileId: Model.Id, car: Model.Car): Promise; + saveCar( + profileId: Model.ExtId, + car: Model.Car + ): Promise; saveSelection( - profileId: Model.Id, + profileId: Model.ExtId, selector: Model.CarSelector ): Promise; } export interface CoursePlaysRepository { - loadAll(profileId: Model.Id): Promise>; + loadAll(profileId: Model.ExtId): Promise>; saveAll( - profileId: Model.Id, + profileId: Model.ExtId, counts: Map ): Promise; } export interface FacetRepository { - load(profileId: Model.Id): Promise; + load(profileId: Model.ExtId): Promise; - save(profileId: Model.Id, facet: T): Promise; + save(profileId: Model.ExtId, facet: T): Promise; } export interface FlagRepository { - loadAll(profileId: Model.Id): Promise; + loadAll(profileId: Model.ExtId): Promise; - saveAll(profileId: Model.Id, items: T[]): Promise; + saveAll(profileId: Model.ExtId, items: T[]): Promise; } export interface ProfileRepository { // Might want to come up with something better here - generateId(): Promise>; + generateId(): Promise>; discoverByAimeId(id: AimeId): Promise; loadByAimeId(id: AimeId): Promise; - load(id: Model.Id): Promise; + load(id: Model.ExtId): Promise; - save(id: Model.Id, profile: Model.Profile): Promise; + save(id: Model.ExtId, profile: Model.Profile): Promise; } export interface TimeAttackRepository { loadAll( - profileId: Model.Id + profileId: Model.ExtId ): Promise; load( - profileId: Model.Id, + profileId: Model.ExtId, courseId: number ): Promise; save( - profileId: Model.Id, + profileId: Model.ExtId, score: Model.TimeAttackScore ): Promise; } diff --git a/src/idz/request/createTeam.ts b/src/idz/request/createTeam.ts index b0e18e4..a77416d 100644 --- a/src/idz/request/createTeam.ts +++ b/src/idz/request/createTeam.ts @@ -1,9 +1,9 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; export interface CreateTeamRequest { type: "create_team_req"; - profileId: Id; // u32 + profileId: ExtId; // u32 teamName: string; // len 0x20 field_0028: number; // u16 field_002C: number; // u32 (but only holds a u8) diff --git a/src/idz/request/loadGarage.ts b/src/idz/request/loadGarage.ts index b69daa5..ccf6a73 100644 --- a/src/idz/request/loadGarage.ts +++ b/src/idz/request/loadGarage.ts @@ -1,9 +1,9 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; export interface LoadGarageRequest { type: "load_garage_req"; - profileId: Id; + profileId: ExtId; fetchOffset: number; field_000A: number; } diff --git a/src/idz/request/loadStocker.ts b/src/idz/request/loadStocker.ts index ca4eb05..90c2254 100644 --- a/src/idz/request/loadStocker.ts +++ b/src/idz/request/loadStocker.ts @@ -1,7 +1,7 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; export interface LoadStockerRequest { type: "load_stocker_req"; - profileId: Id; + profileId: ExtId; } diff --git a/src/idz/request/loadTopTen.ts b/src/idz/request/loadTopTen.ts index 0af609f..ca6f280 100644 --- a/src/idz/request/loadTopTen.ts +++ b/src/idz/request/loadTopTen.ts @@ -1,4 +1,4 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { Team } from "../model/team"; @@ -14,6 +14,6 @@ export interface LoadTopTenRequest { field_C4: number; field_C5: number; field_C6: number; - profileId?: Id; - teamId?: Id; + profileId?: ExtId; + teamId?: ExtId; } diff --git a/src/idz/request/saveNewCar.ts b/src/idz/request/saveNewCar.ts index 4af34e5..85f9544 100644 --- a/src/idz/request/saveNewCar.ts +++ b/src/idz/request/saveNewCar.ts @@ -1,10 +1,10 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Car } from "../model/car"; import { Profile } from "../model/profile"; export interface SaveNewCarRequest { type: "save_new_car_req"; - profileId: Id; + profileId: ExtId; luid: string; car: Car; field_0080: number; diff --git a/src/idz/request/saveProfile.ts b/src/idz/request/saveProfile.ts index 3873c4c..5050c5a 100644 --- a/src/idz/request/saveProfile.ts +++ b/src/idz/request/saveProfile.ts @@ -1,4 +1,4 @@ -import { BackgroundCode, Id, TitleCode } from "../model/base"; +import { BackgroundCode, ExtId, TitleCode } from "../model/base"; import { Car } from "../model/car"; import { MissionState } from "../model/mission"; import { Profile } from "../model/profile"; @@ -9,7 +9,7 @@ import { Unlocks } from "../model/unlocks"; export interface SaveProfileRequest { type: "save_profile_req"; - profileId: Id; + profileId: ExtId; lv: number; exp: number; fame: number; diff --git a/src/idz/request/saveSettings.ts b/src/idz/request/saveSettings.ts index 0db7356..fc63876 100644 --- a/src/idz/request/saveSettings.ts +++ b/src/idz/request/saveSettings.ts @@ -1,10 +1,10 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { Settings } from "../model/settings"; export interface SaveSettingsRequest { type: "save_settings_req"; - profileId: Id; + profileId: ExtId; dpoint: number; // ?? why settings: Settings; field_0010: number; diff --git a/src/idz/request/saveStocker.ts b/src/idz/request/saveStocker.ts index cb2c0ee..8c67955 100644 --- a/src/idz/request/saveStocker.ts +++ b/src/idz/request/saveStocker.ts @@ -1,11 +1,11 @@ -import { BackgroundCode, Id } from "../model/base"; +import { BackgroundCode, ExtId } from "../model/base"; import { CarSelector } from "../model/car"; import { Chara } from "../model/chara"; import { Profile } from "../model/profile"; export interface SaveStockerRequest { type: "save_stocker_req"; - profileId: Id; + profileId: ExtId; selectedCar: CarSelector; backgrounds: BackgroundCode[]; chara: Chara; diff --git a/src/idz/request/saveTimeAttack.ts b/src/idz/request/saveTimeAttack.ts index febc9bb..8130557 100644 --- a/src/idz/request/saveTimeAttack.ts +++ b/src/idz/request/saveTimeAttack.ts @@ -1,10 +1,10 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; import { TimeAttackScore } from "../model/timeAttack"; export interface SaveTimeAttackRequest { type: "save_time_attack_req"; - profileId: Id; // u32 + profileId: ExtId; // u32 dayNight: number; payload: TimeAttackScore; field_0002: number; // u16, always 1 diff --git a/src/idz/response/createTeam.ts b/src/idz/response/createTeam.ts index aa2d886..b164732 100644 --- a/src/idz/response/createTeam.ts +++ b/src/idz/response/createTeam.ts @@ -1,8 +1,8 @@ -import { Id } from "../model/base"; +import { ExtId } from "../model/base"; import { Team } from "../model/team"; export interface CreateTeamResponse { type: "create_team_res"; status: number; // 0 is success, 1 is failure - teamId: Id; + teamId: ExtId; } diff --git a/src/idz/response/loadProfile2.ts b/src/idz/response/loadProfile2.ts index 00f2a27..9691ab0 100644 --- a/src/idz/response/loadProfile2.ts +++ b/src/idz/response/loadProfile2.ts @@ -1,4 +1,4 @@ -import { Id, TitleCode } from "../model/base"; +import { ExtId, TitleCode } from "../model/base"; import { Car } from "../model/car"; import { Chara } from "../model/chara"; import { MissionState } from "../model/mission"; @@ -12,7 +12,7 @@ import { Unlocks } from "../model/unlocks"; export interface LoadProfileResponse2 { type: "load_profile_v2_res"; name: string; - profileId: Id; + profileId: ExtId; lv: number; exp: number; fame: number;