diff --git a/src/idz/decoder/index.ts b/src/idz/decoder/index.ts index 70d0161..31d722e 100644 --- a/src/idz/decoder/index.ts +++ b/src/idz/decoder/index.ts @@ -31,6 +31,7 @@ import { saveProfile2 } from "./saveProfile2"; import { saveProfile3 } from "./saveProfile3"; import { saveSettings } from "./saveSettings"; import { saveStocker } from "./saveStocker"; +import { saveTeamBanner } from "./saveTeamBanner"; import { saveTimeAttack1, saveTimeAttack2 } from "./saveTimeAttack"; import { saveTopic } from "./saveTopic"; import { unlockProfile } from "./unlockProfile"; @@ -90,6 +91,7 @@ const funcList: ReaderFn[] = [ saveProfile3, saveSettings, saveStocker, + saveTeamBanner, saveTimeAttack1, saveTimeAttack2, saveTopic, diff --git a/src/idz/decoder/saveTeamBanner.ts b/src/idz/decoder/saveTeamBanner.ts new file mode 100644 index 0000000..fe91b09 --- /dev/null +++ b/src/idz/decoder/saveTeamBanner.ts @@ -0,0 +1,16 @@ +import { RequestCode } from "./_defs"; +import { SaveTeamBannerRequest } from "../request/saveTeamBanner"; +import { ExtId } from "../model/base"; +import { Team } from "../model/team"; + +saveTeamBanner.msgCode = 0x0089 as RequestCode; +saveTeamBanner.msgLen = 0x0010; + +export function saveTeamBanner(buf: Buffer): SaveTeamBannerRequest { + return { + type: "save_team_banner_req", + teamExtId: buf.readUInt32LE(0x0004) as ExtId, + nameBg: buf.readUInt32LE(0x0008), + nameFx: buf.readUInt32LE(0x000c), + }; +} diff --git a/src/idz/handler/index.ts b/src/idz/handler/index.ts index 717ff8b..82a00d9 100644 --- a/src/idz/handler/index.ts +++ b/src/idz/handler/index.ts @@ -28,6 +28,7 @@ import { saveNewCar } from "./saveNewCar"; import { saveProfile } from "./saveProfile"; import { saveSettings } from "./saveSettings"; import { saveStocker } from "./saveStocker"; +import { saveTeamBanner } from "./saveTeamBanner"; import { saveTimeAttack } from "./saveTimeAttack"; import { saveTopic } from "./saveTopic"; import { unlockProfile } from "./unlockProfile"; @@ -139,6 +140,9 @@ export async function dispatch( case "save_stocker_req": return saveStocker(w, req); + case "save_team_banner_req": + return saveTeamBanner(w, req); + case "save_time_attack_req": return saveTimeAttack(w, req); diff --git a/src/idz/handler/saveTeamBanner.ts b/src/idz/handler/saveTeamBanner.ts new file mode 100644 index 0000000..139716d --- /dev/null +++ b/src/idz/handler/saveTeamBanner.ts @@ -0,0 +1,22 @@ +import { Repositories } from "../repo"; +import { SaveTeamBannerRequest } from "../request/saveTeamBanner"; +import { GenericResponse } from "../response/generic"; + +export async function saveTeamBanner( + w: Repositories, + req: SaveTeamBannerRequest +): Promise { + const teamId = await w.teams().find(req.teamExtId); + const orig = await w.teams().load(teamId); + + await w.teams().save(teamId, { + ...orig, + nameBg: req.nameBg, + nameFx: req.nameFx, + }); + + return { + type: "generic_res", + status: 0, // ignored + }; +} diff --git a/src/idz/request/index.ts b/src/idz/request/index.ts index 923bfc1..8d319cd 100644 --- a/src/idz/request/index.ts +++ b/src/idz/request/index.ts @@ -28,6 +28,7 @@ import { SaveNewCarRequest } from "./saveNewCar"; import { SaveProfileRequest } from "./saveProfile"; import { SaveSettingsRequest } from "./saveSettings"; import { SaveStockerRequest } from "./saveStocker"; +import { SaveTeamBannerRequest } from "./saveTeamBanner"; import { SaveTimeAttackRequest } from "./saveTimeAttack"; import { SaveTopicRequest } from "./saveTopic"; import { UnlockProfileRequest } from "./unlockProfile"; @@ -69,6 +70,7 @@ export type Request = | SaveProfileRequest | SaveSettingsRequest | SaveStockerRequest + | SaveTeamBannerRequest | SaveTimeAttackRequest | SaveTopicRequest | UnlockProfileRequest diff --git a/src/idz/request/saveTeamBanner.ts b/src/idz/request/saveTeamBanner.ts new file mode 100644 index 0000000..0157e35 --- /dev/null +++ b/src/idz/request/saveTeamBanner.ts @@ -0,0 +1,9 @@ +import { ExtId } from "../model/base"; +import { Team } from "../model/team"; + +export interface SaveTeamBannerRequest { + type: "save_team_banner_req"; + teamExtId: ExtId; + nameBg: number; + nameFx: number; +}