add post-race msgs

This commit is contained in:
Tau
2019-04-07 15:58:06 -04:00
parent 1ced1e977d
commit 9bdc840019
19 changed files with 223 additions and 13 deletions

View File

@@ -0,0 +1,28 @@
import { RequestCode } from "./_defs";
import { CheckRankRequest } from "../request/checkRank";
checkRank.msgCode = 0x00cd as RequestCode;
checkRank.msgLen = 0x0080;
export function checkRank(buf: Buffer): CheckRankRequest {
return {
type: "check_rank_req",
field_0002: buf.readUInt16LE(0x0002),
field_0004: buf.readUInt32LE(0x0004),
field_0008: buf.readUInt32LE(0x0008),
field_000C: buf.readUInt16LE(0x000c),
field_0012: buf.readUInt8(0x0012),
field_0015: buf.readUInt8(0x0015),
field_0018: buf.readUInt32LE(0x0018),
field_0024: buf.readUInt32LE(0x0024),
field_0028: buf.readUInt32LE(0x0028),
field_002C: buf.readUInt32LE(0x002c),
field_0054: buf.readUInt8(0x0054),
field_0058: buf.readUInt32LE(0x0058),
field_005C: buf.readUInt8(0x005c),
field_005D: buf.readUInt8(0x005d),
field_005E: buf.readUInt16LE(0x005e),
field_0060: buf.readUInt16LE(0x0060),
field_0062: buf.readUInt8(0x0062),
};
}

View File

@@ -1,5 +1,6 @@
import { Transform } from "stream";
import { checkRank } from "./checkRank";
import { createProfile } from "./createProfile";
import { createTeam } from "./createTeam";
import { discoverProfile } from "./discoverProfile";
@@ -27,6 +28,9 @@ import { updateStoryClearNum } from "./updateStoryClearNum";
import { RequestCode } from "./_defs";
import { Request } from "../request";
import { loadTopTen } from "./loadTopTen";
import { updateResult } from "./updateResult";
import { updateTeamPoints } from "./updateTeamPoints";
import { updateUiReport } from "./updateUiReport";
export type ReaderFn = ((buf: Buffer) => Request) & {
msgCode: RequestCode;
@@ -34,7 +38,7 @@ export type ReaderFn = ((buf: Buffer) => Request) & {
};
const funcList: ReaderFn[] = [
unlockProfile,
checkRank,
createProfile,
createTeam,
discoverProfile,
@@ -58,8 +62,12 @@ const funcList: ReaderFn[] = [
saveSettings,
saveStocker,
saveTopic,
unlockProfile,
updateProvisionalStoreRank,
updateResult,
updateStoryClearNum,
updateTeamPoints,
updateUiReport,
];
const readerFns = new Map<RequestCode, ReaderFn>();

View File

@@ -0,0 +1,24 @@
import { RequestCode } from "./_defs";
import { UpdateResultRequest } from "../request/updateResult";
updateResult.msgCode = 0x00cc as RequestCode;
updateResult.msgLen = 0x0030;
export function updateResult(buf: Buffer): UpdateResultRequest {
return {
type: "update_result_req",
field_0002: buf.readUInt16LE(0x0002),
field_0004: buf.readUInt32LE(0x0004),
field_0008: buf.readUInt32LE(0x0008),
field_000C: buf.readUInt32LE(0x000c),
field_0010: buf.readUInt32LE(0x0010),
field_0014: buf.readUInt16LE(0x0014),
field_0016: buf.readUInt16LE(0x0016),
field_0018: buf.readUInt8(0x0018),
field_0019: buf.readUInt8(0x0019),
field_001A: buf.readUInt8(0x001a),
field_001C: buf.readUInt16LE(0x001c),
field_0020: buf.readUInt32LE(0x0020),
field_0024: buf.readUInt8(0x0024),
};
}

View File

@@ -0,0 +1,13 @@
import { RequestCode } from "./_defs";
import { UpdateTeamPointsRequest } from "../request/updateTeamPoints";
updateTeamPoints.msgCode = 0x0081 as RequestCode;
updateTeamPoints.msgLen = 0x0010;
export function updateTeamPoints(buf: Buffer): UpdateTeamPointsRequest {
return {
type: "update_team_points_req",
field_0004: buf.readUInt32LE(0x0004),
field_0008: buf.readUInt32LE(0x0008),
};
}

View File

@@ -0,0 +1,13 @@
import { RequestCode } from "./_defs";
import { UpdateUiReportRequest } from "../request/updateUiReport";
updateUiReport.msgCode = 0x0084 as RequestCode;
updateUiReport.msgLen = 0x0410;
export function updateUiReport(buf: Buffer): UpdateUiReportRequest {
return {
type: "update_ui_report_req",
field_02: buf.readUInt16LE(0x0002),
field_04: buf.readUInt16LE(0x0004),
};
}

View File

@@ -0,0 +1,9 @@
import { CheckRankResponse } from "../response/checkRank";
export function checkRank(res: CheckRankResponse): Buffer {
const buf = Buffer.alloc(0x00b0);
buf.writeUInt16LE(0x00ce, 0x0000);
return buf;
}

View File

@@ -1,10 +1,10 @@
import { Transform } from "stream";
import { _team } from "./_team";
import { lockProfile } from "./lockProfile";
import { unlockProfile } from "./unlockProfile";
import { checkRank } from "./checkRank";
import { discoverProfile } from "./discoverProfile";
import { generic } from "./generic";
import { lockProfile } from "./lockProfile";
import { load2on2 } from "./load2on2";
import { loadConfig } from "./loadConfig";
import { loadConfig2 } from "./loadConfig2";
@@ -15,16 +15,20 @@ import { loadRewardTable } from "./loadRewardTable";
import { loadServerList } from "./loadServerList";
import { loadStocker } from "./loadStocker";
import { loadTeamRanking } from "./loadTeamRanking";
import { loadTopTen } from "./loadTopTen";
import { saveExpedition } from "./saveExpedition";
import { saveGarage } from "./saveGarage";
import { saveTopic } from "./saveTopic";
import { unlockProfile } from "./unlockProfile";
import { updateProvisionalStoreRank } from "./updateProvisionalStoreRank";
import { updateStoryClearNum } from "./updateStoryClearNum";
import { Response } from "../response";
import { loadTopTen } from "./loadTopTen";
function encode(res: Response): Buffer {
switch (res.type) {
case "check_rank_res":
return checkRank(res);
case "create_team_res":
return _team(res);

View File

@@ -0,0 +1,9 @@
import { CheckRankRequest } from "../request/checkRank";
import { CheckRankResponse } from "../response/checkRank";
import { World } from "../world";
export function checkRank(w: World, req: CheckRankRequest): CheckRankResponse {
return {
type: "check_rank_res",
};
}

View File

@@ -1,4 +1,5 @@
import { _team } from "./_team";
import { checkRank } from "./checkRank";
import { createProfile } from "./createProfile";
import { discoverProfile } from "./discoverProfile";
import { load2on2 } from "./load2on2";
@@ -21,13 +22,19 @@ import { saveStocker } from "./saveStocker";
import { saveTopic } from "./saveTopic";
import { unlockProfile } from "./unlockProfile";
import { updateProvisionalStoreRank } from "./updateProvisionalStoreRank";
import { updateResult } from "./updateResult";
import { updateStoryClearNum } from "./updateStoryClearNum";
import { updateTeamPoints } from "./updateTeamPoints";
import { updateUiReport } from "./updateUiReport";
import { Request } from "../request";
import { Response } from "../response";
import { World } from "../world";
export async function dispatch(w: World, req: Request): Promise<Response> {
switch (req.type) {
case "check_rank_req":
return checkRank(w, req);
case "create_profile_req":
return createProfile(w, req);
@@ -79,9 +86,6 @@ export async function dispatch(w: World, req: Request): Promise<Response> {
case "save_expedition_req":
return saveExpedition(w, req);
case "update_provisional_store_rank_req":
return updateProvisionalStoreRank(w, req);
case "save_garage_req":
return saveGarage(w, req);
@@ -91,9 +95,6 @@ export async function dispatch(w: World, req: Request): Promise<Response> {
case "save_settings_req":
return saveSettings(w, req);
case "update_story_clear_num_req":
return updateStoryClearNum(w, req);
case "save_topic_req":
return saveTopic(w, req);
@@ -103,6 +104,21 @@ export async function dispatch(w: World, req: Request): Promise<Response> {
case "unlock_profile_req":
return unlockProfile(w, req);
case "update_provisional_store_rank_req":
return updateProvisionalStoreRank(w, req);
case "update_result_req":
return updateResult(req);
case "update_story_clear_num_req":
return updateStoryClearNum(w, req);
case "update_team_points_req":
return updateTeamPoints(w, req);
case "update_ui_report_req":
return updateUiReport(w, req);
default:
const exhaustCheck: never = req;

View File

@@ -0,0 +1,7 @@
import { UpdateResultRequest } from "../request/updateResult";
import { GenericResponse } from "../response/generic";
export function updateResult(req: UpdateResultRequest): GenericResponse {
// Apparently field_000C in this supposedly-generic response matters here?!
return { type: "generic_res" };
}

View File

@@ -0,0 +1,10 @@
import { UpdateTeamPointsRequest } from "../request/updateTeamPoints";
import { GenericResponse } from "../response/generic";
import { World } from "../world";
export function updateTeamPoints(
w: World,
req: UpdateTeamPointsRequest
): GenericResponse {
return { type: "generic_res" };
}

View File

@@ -0,0 +1,10 @@
import { UpdateUiReportRequest } from "../request/updateUiReport";
import { GenericResponse } from "../response/generic";
import { World } from "../world";
export function updateUiReport(
w: World,
req: UpdateUiReportRequest
): GenericResponse {
return { type: "generic_res" };
}

View File

@@ -0,0 +1,20 @@
export interface CheckRankRequest {
type: "check_rank_req";
field_0002: number; // u16, always 1
field_0004: number; // u32
field_0008: number; // u32
field_000C: number; // u16
field_0012: number; // u8
field_0015: number; // u8
field_0018: number; // u32
field_0024: number; // u32
field_0028: number; // u32
field_002C: number; // u32
field_0054: number; // u8
field_0058: number; // u32
field_005C: number; // u8 bit map
field_005D: number; // u8
field_005E: number; // u16
field_0060: number; // u16
field_0062: number; // u8
}

View File

@@ -1,4 +1,4 @@
import { UnlockProfileRequest } from "./unlockProfile";
import { CheckRankRequest } from "./checkRank";
import { CreateProfileRequest } from "./createProfile";
import { CreateTeamRequest } from "./createTeam";
import { DiscoverProfileRequest } from "./discoverProfile";
@@ -21,10 +21,15 @@ import { SaveProfileRequest } from "./saveProfile";
import { SaveSettingsRequest } from "./saveSettings";
import { SaveStockerRequest } from "./saveStocker";
import { SaveTopicRequest } from "./saveTopic";
import { UnlockProfileRequest } from "./unlockProfile";
import { UpdateProvisionalStoreRankRequest } from "./updateProvisionalStoreRank";
import { UpdateResultRequest } from "./updateResult";
import { UpdateStoryClearNumRequest } from "./updateStoryClearNum";
import { UpdateTeamPointsRequest } from "./updateTeamPoints";
import { UpdateUiReportRequest } from "./updateUiReport";
export type Request =
| CheckRankRequest
| CreateProfileRequest
| CreateTeamRequest
| DiscoverProfileRequest
@@ -49,4 +54,7 @@ export type Request =
| SaveTopicRequest
| UnlockProfileRequest
| UpdateProvisionalStoreRankRequest
| UpdateStoryClearNumRequest;
| UpdateResultRequest
| UpdateStoryClearNumRequest
| UpdateTeamPointsRequest
| UpdateUiReportRequest;

View File

@@ -0,0 +1,16 @@
export interface UpdateResultRequest {
type: "update_result_req";
field_0002: number;
field_0004: number;
field_0008: number;
field_000C: number;
field_0010: number;
field_0014: number;
field_0016: number;
field_0018: number;
field_0019: number;
field_001A: number;
field_001C: number;
field_0020: number;
field_0024: number;
}

View File

@@ -0,0 +1,5 @@
export interface UpdateTeamPointsRequest {
type: "update_team_points_req";
field_0004: number;
field_0008: number;
}

View File

@@ -0,0 +1,5 @@
export interface UpdateUiReportRequest {
type: "update_ui_report_req";
field_02: number;
field_04: number;
}

View File

@@ -0,0 +1,3 @@
export interface CheckRankResponse {
type: "check_rank_res";
}

View File

@@ -1,3 +1,4 @@
import { CheckRankResponse } from "./checkRank";
import { CreateTeamResponse } from "./createTeam";
import { DiscoverProfileResponse } from "./discoverProfile";
import { GenericResponse } from "./generic";
@@ -22,7 +23,7 @@ import { SaveGarageResponse } from "./saveGarage";
import { SaveTopicResponse } from "./saveTopic";
export type Response =
| UnlockProfileResponse
| CheckRankResponse
| CreateTeamResponse
| DiscoverProfileResponse
| GenericResponse
@@ -39,6 +40,7 @@ export type Response =
| LoadTeamRankingResponse
| LockProfileResponse
| LoadTopTenResponse
| UnlockProfileResponse
| UpdateProvisionalStoreRankResponse
| UpdateStoryClearNumResponse
| SaveExpeditionResponse