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.
109 lines (98 loc) • 3.25 kB
text/typescript
import { decode as msgpackDecode } from "msgpack-lite";
import UpdateTeamMembersList from "./UpdateTeamMembersList";
import UpdateLeaderBoard from "./UpdateLeaderBoard";
import InitializePlayer from "./InitializePlayer";
import PlayerDisconnect from "./PlayerDisconnect";
import TeamNotification from "./TeamNotification";
import InitializeTeams from "./InitializeTeams";
import SpawnProjectile from "./SpawnProjectile";
import UpdateItemStore from "./UpdateItemStore";
import UpdateItemUsage from "./UpdateItemUsage";
import InitializeGame from "./InitializeGame";
import SetObjectsData from "./SetObjectsData";
import ShutdownNotice from "./ShutdownNotice";
import UpdateProgress from "./UpdateProgress";
import UpdateResource from "./UpdateResource";
import UpdateUpgrades from "./UpdateUpgrades";
import AnimateGameAI from "./AnimateGameAI";
import RemoveObjects from "./RemoveObjects";
import UpdateMiniMap from "./UpdateMiniMap";
import UpdatePlayers from "./UpdatePlayers";
import ObjectStrike from "./ObjectStrike";
import RemoveObject from "./RemoveObject";
import UpdateGameAI from "./UpdateGameAI";
import UpdateHealth from "./UpdateHealth";
import ReceiveChat from "./ReceiveChat";
import TurretShoot from "./TurretShoot";
import UpdateItems from "./UpdateItems";
import CreateTeam from "./CreateTeam";
import DeleteTeam from "./DeleteTeam";
import Disconnect from "./Disconnect";
import TeamSignal from "./TeamSignal";
import ShowText from "./ShowText";
import Unknown from "./Unknown";
import IOInit from "./IOInit";
import Punch from "./Punch";
import Death from "./Death";
import Pong from "./Pong";
export const ServerPackets = {
UpdateTeamMembersList,
UpdateLeaderBoard,
InitializePlayer,
PlayerDisconnect,
TeamNotification,
InitializeTeams,
SpawnProjectile,
UpdateItemStore,
UpdateItemUsage,
InitializeGame,
SetObjectsData,
ShutdownNotice,
UpdateProgress,
UpdateResource,
UpdateUpgrades,
AnimateGameAI,
RemoveObjects,
UpdateMiniMap,
UpdatePlayers,
ObjectStrike,
RemoveObject,
UpdateGameAI,
UpdateHealth,
ReceiveChat,
TurretShoot,
UpdateItems,
CreateTeam,
DeleteTeam,
Disconnect,
TeamSignal,
ShowText,
Unknown,
IOInit,
Punch,
Death,
Pong,
};
export type ServerPacket = ReturnType<typeof decode>;
// TODO: "19", "st" is missing
export function decode(raw: ArrayBuffer | Uint8Array | number[]) {
const [PACKET_ID, data] = msgpackDecode(raw instanceof Uint8Array ? raw : new Uint8Array(raw));
for (const packetName in ServerPackets) {
const Packet = ServerPackets[packetName as keyof typeof ServerPackets];
if (Packet.PACKET_ID == PACKET_ID) {
let packet;
try {
packet = Packet.parse(data);
} catch (e: unknown) {
packet = ServerPackets.Unknown.parse([PACKET_ID, data]);
console.group(`Attempting to parse ${PACKET_ID} using ${Packet.PACKET_NAME} but failed`);
console.error(e);
console.info("Backup to `Unknown` Packet.");
console.info(packet);
console.groupEnd();
}
return packet;
}
}
return ServerPackets.Unknown.parse([PACKET_ID, data]);
}