diff --git a/src/idz/userdb/decoder/saveGarage.ts b/src/idz/userdb/decoder/saveGarage.ts index 06dbb9d..a2942be 100644 --- a/src/idz/userdb/decoder/saveGarage.ts +++ b/src/idz/userdb/decoder/saveGarage.ts @@ -1,5 +1,6 @@ import { car } from "./_car"; import { SaveGarageRequest } from "../request/saveGarage"; +import { AimeId } from "../../../model"; saveGarage1.msgCode = 0x008e; saveGarage1.msgLen = 0x0090; @@ -13,8 +14,9 @@ export function saveGarage1(buf: Buffer): SaveGarageRequest { return { type: "save_garage_req", - aimeId: buf.readUInt32LE(0x0004), - payload: car(buf.slice(0x0008, 0x0068)), + version: 1, + aimeId: buf.readUInt32LE(0x0004) as AimeId, + car: car(buf.slice(0x0008, 0x0068)), field_0068, field_0080: buf.readUInt8(0x0080), field_0081: buf.readUInt8(0x0081) !== 0, @@ -33,8 +35,9 @@ export function saveGarage2(buf: Buffer): SaveGarageRequest { return { type: "save_garage_req", - aimeId: buf.readUInt32LE(0x0004), - payload: car(buf.slice(0x0008, 0x0068)), + version: 2, + aimeId: buf.readUInt32LE(0x0004) as AimeId, + car: car(buf.slice(0x0008, 0x0068)), field_0068, field_0080: buf.readUInt8(0x0088), field_0081: buf.readUInt8(0x0089) !== 0, diff --git a/src/idz/userdb/encoder/index.ts b/src/idz/userdb/encoder/index.ts index 0c5d80e..a5d84f2 100644 --- a/src/idz/userdb/encoder/index.ts +++ b/src/idz/userdb/encoder/index.ts @@ -250,7 +250,7 @@ function encode130(res: Response): Buffer { return saveExpedition2(res); case "save_garage_res": - return saveGarage2(res); + return saveGarage1(res); case "save_new_car_res": return saveNewCar2(res); @@ -361,7 +361,7 @@ function encode210(res: Response): Buffer { return saveExpedition2(res); case "save_garage_res": - return saveGarage1(res); + return saveGarage2(res); case "save_new_car_res": return saveNewCar1(res); diff --git a/src/idz/userdb/handler/saveGarage.ts b/src/idz/userdb/handler/saveGarage.ts index 9417624..3fa7429 100644 --- a/src/idz/userdb/handler/saveGarage.ts +++ b/src/idz/userdb/handler/saveGarage.ts @@ -2,10 +2,14 @@ import { SaveGarageRequest } from "../request/saveGarage"; import { SaveGarageResponse } from "../response/saveGarage"; import { Repositories } from "../repo"; -export function saveGarage( +export async function saveGarage( w: Repositories, req: SaveGarageRequest -): SaveGarageResponse { +): Promise { + const profileId = await w.profile().find(req.aimeId, req.version); + + await w.car().saveCar(profileId, req.car); + return { type: "save_garage_res", status: 0, // Zero means success for this particular message -.- diff --git a/src/idz/userdb/request/saveGarage.ts b/src/idz/userdb/request/saveGarage.ts index 2639629..9022ad6 100644 --- a/src/idz/userdb/request/saveGarage.ts +++ b/src/idz/userdb/request/saveGarage.ts @@ -1,9 +1,11 @@ import { Car } from "../model/car"; +import { AimeId } from "../../../model"; export interface SaveGarageRequest { type: "save_garage_req"; - aimeId: number; - payload: Car; + version: number; + aimeId: AimeId; + car: Car; field_0068: number[]; field_0080: number; field_0081: boolean;