mirror of
https://github.com/djhackersdev/minime.git
synced 2026-08-28 13:34:03 -05:00
add post-race msgs
This commit is contained in:
28
src/idz/decoder/checkRank.ts
Normal file
28
src/idz/decoder/checkRank.ts
Normal 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),
|
||||
};
|
||||
}
|
||||
@@ -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>();
|
||||
|
||||
24
src/idz/decoder/updateResult.ts
Normal file
24
src/idz/decoder/updateResult.ts
Normal 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),
|
||||
};
|
||||
}
|
||||
13
src/idz/decoder/updateTeamPoints.ts
Normal file
13
src/idz/decoder/updateTeamPoints.ts
Normal 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),
|
||||
};
|
||||
}
|
||||
13
src/idz/decoder/updateUiReport.ts
Normal file
13
src/idz/decoder/updateUiReport.ts
Normal 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),
|
||||
};
|
||||
}
|
||||
9
src/idz/encoder/checkRank.ts
Normal file
9
src/idz/encoder/checkRank.ts
Normal 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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
9
src/idz/handler/checkRank.ts
Normal file
9
src/idz/handler/checkRank.ts
Normal 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",
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
7
src/idz/handler/updateResult.ts
Normal file
7
src/idz/handler/updateResult.ts
Normal 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" };
|
||||
}
|
||||
10
src/idz/handler/updateTeamPoints.ts
Normal file
10
src/idz/handler/updateTeamPoints.ts
Normal 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" };
|
||||
}
|
||||
10
src/idz/handler/updateUiReport.ts
Normal file
10
src/idz/handler/updateUiReport.ts
Normal 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" };
|
||||
}
|
||||
20
src/idz/request/checkRank.ts
Normal file
20
src/idz/request/checkRank.ts
Normal 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
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
16
src/idz/request/updateResult.ts
Normal file
16
src/idz/request/updateResult.ts
Normal 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;
|
||||
}
|
||||
5
src/idz/request/updateTeamPoints.ts
Normal file
5
src/idz/request/updateTeamPoints.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export interface UpdateTeamPointsRequest {
|
||||
type: "update_team_points_req";
|
||||
field_0004: number;
|
||||
field_0008: number;
|
||||
}
|
||||
5
src/idz/request/updateUiReport.ts
Normal file
5
src/idz/request/updateUiReport.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export interface UpdateUiReportRequest {
|
||||
type: "update_ui_report_req";
|
||||
field_02: number;
|
||||
field_04: number;
|
||||
}
|
||||
3
src/idz/response/checkRank.ts
Normal file
3
src/idz/response/checkRank.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export interface CheckRankResponse {
|
||||
type: "check_rank_res";
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user