moomooio-client
Version:
MooMooIO-Client is a client-side wrapper API designed for the game MooMoo.io. This package aims to provide a simple yet powerful API for creating clones, mods, or plugins for MooMoo.io.
48 lines (39 loc) • 1.49 kB
text/typescript
import { z } from "zod";
const schema = z.tuple([z.array(z.union([z.number(), z.string()]))]);
const chunkSchema = z.tuple([z.number(), z.string()]);
/**
* @member `playerID` is a unique identifier for the player (similar to initID).
* @member `playerName` the name of the player.
*/
interface TeamMember {
readonly playerName: string;
readonly playerID: number;
}
/**
* @packet-id "sa"
* @description **UpdateTeamMembersList** is a packet that holds information about the current status of Team Members List in the game.
* @member `members` is a list of TeamMember
*
* @member `TeamMember.playerID` is a unique identifier for the player (similar to initID).
* @member `TeamMember.playerName` the name of the player.
*/
export default class UpdateTeamMembersList {
public static readonly PACKET_ID = "sa";
public static readonly PACKET_NAME = "UpdateTeamMembersList";
public readonly PACKET_NAME = "UpdateTeamMembersList";
constructor(readonly members: TeamMember[]) {}
static parse(data: unknown): UpdateTeamMembersList {
const result: TeamMember[] = [];
const info = schema.parse(data)[0];
if (info)
for (let i = 0; i < info.length; i += 2) {
const content = info.slice(i, i + 2);
const chunk = chunkSchema.parse(content);
result.push({
playerName: chunk[1],
playerID: chunk[0],
});
}
return new UpdateTeamMembersList(result);
}
}