From 6be956ad3c470bed358dfa73ac01436d45516797 Mon Sep 17 00:00:00 2001 From: Tau Date: Tue, 7 May 2019 21:55:07 -0400 Subject: [PATCH] *cries in spanish* --- src/idz/decoder/index.ts | 5 +++-- src/idz/decoder/loadGeneralReward.ts | 23 +++++++++++++++++++---- src/idz/handler/loadGeneralReward.ts | 5 ++--- src/idz/request/loadGeneralReward.ts | 16 +++++++++++++++- src/idz/response/loadGeneralReward1.ts | 13 +++++++++++++ src/idz/response/loadGeneralReward2.ts | 5 +++++ 6 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 src/idz/response/loadGeneralReward1.ts create mode 100644 src/idz/response/loadGeneralReward2.ts diff --git a/src/idz/decoder/index.ts b/src/idz/decoder/index.ts index 4cf0b1c..cde1cdf 100644 --- a/src/idz/decoder/index.ts +++ b/src/idz/decoder/index.ts @@ -10,7 +10,7 @@ import { loadConfig } from "./loadConfig"; import { loadConfig2 } from "./loadConfig2"; import { loadEventInfo } from "./loadEventInfo"; import { loadGarage } from "./loadGarage"; -import { loadGeneralReward } from "./loadGeneralReward"; +import { loadGeneralReward1, loadGeneralReward2 } from "./loadGeneralReward"; import { loadGhost } from "./loadGhost"; import { loadProfile2, loadProfile3 } from "./loadProfile"; import { loadRewardTable } from "./loadRewardTable"; @@ -58,7 +58,8 @@ const funcList: ReaderFn[] = [ loadConfig2, loadEventInfo, loadGarage, - loadGeneralReward, + loadGeneralReward1, + loadGeneralReward2, loadGhost, loadProfile2, loadProfile3, diff --git a/src/idz/decoder/loadGeneralReward.ts b/src/idz/decoder/loadGeneralReward.ts index 151bb21..9d474b6 100644 --- a/src/idz/decoder/loadGeneralReward.ts +++ b/src/idz/decoder/loadGeneralReward.ts @@ -1,14 +1,29 @@ import { RequestCode } from "./_defs"; import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; -import { LoadGeneralRewardRequest } from "../request/loadGeneralReward"; +import { + LoadGeneralRewardRequest1, + LoadGeneralRewardRequest2, +} from "../request/loadGeneralReward"; -loadGeneralReward.msgCode = 0x009c as RequestCode; -loadGeneralReward.msgLen = 0x0010; +loadGeneralReward1.msgCode = 0x009c as RequestCode; +loadGeneralReward1.msgLen = 0x0010; -export function loadGeneralReward(buf: Buffer): LoadGeneralRewardRequest { +export function loadGeneralReward1(buf: Buffer): LoadGeneralRewardRequest1 { return { type: "load_general_reward_req", + format: 1, + profileId: buf.readUInt32LE(0x0004) as ExtId, + }; +} + +loadGeneralReward2.msgCode = 0x013b as RequestCode; +loadGeneralReward2.msgLen = 0x0010; + +export function loadGeneralReward2(buf: Buffer): LoadGeneralRewardRequest2 { + return { + type: "load_general_reward_req", + format: 2, profileId: buf.readUInt32LE(0x0004) as ExtId, }; } diff --git a/src/idz/handler/loadGeneralReward.ts b/src/idz/handler/loadGeneralReward.ts index 03bf1b6..4aaffa6 100644 --- a/src/idz/handler/loadGeneralReward.ts +++ b/src/idz/handler/loadGeneralReward.ts @@ -1,12 +1,11 @@ import { LoadGeneralRewardRequest } from "../request/loadGeneralReward"; import { GenericResponse } from "../response/generic"; -import { LoadGeneralRewardResponse } from "../response/loadGeneralReward"; import { Repositories } from "../repo"; export function loadGeneralReward( w: Repositories, req: LoadGeneralRewardRequest -): LoadGeneralRewardResponse | GenericResponse { - // A non-generic response is also accepted, but why bother +): GenericResponse { + // A version-specific response is also accepted. Format TBD. return { type: "generic_res" }; } diff --git a/src/idz/request/loadGeneralReward.ts b/src/idz/request/loadGeneralReward.ts index 4c7e3bd..8e6601e 100644 --- a/src/idz/request/loadGeneralReward.ts +++ b/src/idz/request/loadGeneralReward.ts @@ -1,7 +1,21 @@ import { ExtId } from "../model/base"; import { Profile } from "../model/profile"; -export interface LoadGeneralRewardRequest { +interface LoadGeneralRewardRequestBase { type: "load_general_reward_req"; profileId: ExtId; } + +export interface LoadGeneralRewardRequest1 + extends LoadGeneralRewardRequestBase { + format: 1; +} + +export interface LoadGeneralRewardRequest2 + extends LoadGeneralRewardRequestBase { + format: 2; +} + +export type LoadGeneralRewardRequest = + | LoadGeneralRewardRequest1 + | LoadGeneralRewardRequest2; diff --git a/src/idz/response/loadGeneralReward1.ts b/src/idz/response/loadGeneralReward1.ts new file mode 100644 index 0000000..1381432 --- /dev/null +++ b/src/idz/response/loadGeneralReward1.ts @@ -0,0 +1,13 @@ +export interface LoadGeneralRewardItem { + field_04: string; // 40 chars max + field_2C: number; // payload? + field_38: number; // u8 + field_39: number; // u8 + field_3C: number[]; // u32 * 4 +} + +export interface LoadGeneralRewardResponse1 { + type: "load_general_reward_res"; + format: 1; + items: LoadGeneralRewardItem[]; +} diff --git a/src/idz/response/loadGeneralReward2.ts b/src/idz/response/loadGeneralReward2.ts new file mode 100644 index 0000000..f916398 --- /dev/null +++ b/src/idz/response/loadGeneralReward2.ts @@ -0,0 +1,5 @@ +export interface LoadGeneralRewardResponse2 { + type: "load_general_reward_res"; + format: 2; + // TBD +}