From 39861acb94feaed7c7833597b14ab99e5acea42f Mon Sep 17 00:00:00 2001 From: Caleb Date: Tue, 30 Aug 2022 17:12:52 -0400 Subject: Three more packets moved --- webAO/client.ts | 81 -------------------------------------- webAO/packets/handlers/handleCI.ts | 26 ++++++++++++ webAO/packets/handlers/handleEI.ts | 29 ++++++++++++++ webAO/packets/handlers/handleSC.ts | 37 +++++++++++++++++ 4 files changed, 92 insertions(+), 81 deletions(-) create mode 100644 webAO/packets/handlers/handleCI.ts create mode 100644 webAO/packets/handlers/handleEI.ts create mode 100644 webAO/packets/handlers/handleSC.ts (limited to 'webAO') diff --git a/webAO/client.ts b/webAO/client.ts index 676aa3f..17065ce 100644 --- a/webAO/client.ts +++ b/webAO/client.ts @@ -845,91 +845,10 @@ class Client extends EventEmitter { } } - /** - * Handles incoming character information, bundling multiple characters - * per packet. - * CI#0#Phoenix&description&&&&#Miles ... - * @param {Array} args packet arguments - */ - handleCI(args: string[]) { - // Loop through the 10 characters that were sent - for (let i = 2; i <= args.length - 2; i++) { - if (i % 2 === 0) { - document.getElementById( - "client_loadingtext" - ).innerHTML = `Loading Character ${args[1]}/${this.char_list_length}`; - const chargs = args[i].split("&"); - const charid = Number(args[i - 1]); - (( - document.getElementById("client_loadingbar") - )).value = charid; - setTimeout(() => this.handleCharacterInfo(chargs, charid), 500); - } - } - // Request the next pack - this.sendServer(`AN#${Number(args[1]) / 10 + 1}#%`); - } - /** - * Handles incoming character information, containing all characters - * in one packet. - * @param {Array} args packet arguments - */ - async handleSC(args: string[]) { - const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); - if (mode === "watch") { - // Spectators don't need to pick a character - document.getElementById("client_charselect").style.display = "none"; - } else { - document.getElementById("client_charselect").style.display = "block"; - } - document.getElementById("client_loadingtext").innerHTML = - "Loading Characters"; - for (let i = 1; i < args.length - 1; i++) { - document.getElementById( - "client_loadingtext" - ).innerHTML = `Loading Character ${i}/${this.char_list_length}`; - const chargs = args[i].split("&"); - const charid = i - 1; - (( - document.getElementById("client_loadingbar") - )).value = charid; - await sleep(0.1); // TODO: Too many network calls without this. net::ERR_INSUFFICIENT_RESOURCES - this.handleCharacterInfo(chargs, charid); - } - // We're done with the characters, request the music - this.sendServer("RM#%"); - } - - /** - * Handles incoming evidence information, containing only one evidence - * item per packet. - * - * EI#id#name&description&type&image&##% - * - * @param {Array} args packet arguments - */ - handleEI(args: string[]) { - document.getElementById( - "client_loadingtext" - ).innerHTML = `Loading Evidence ${args[1]}/${this.evidence_list_length}`; - const evidenceID = Number(args[1]); - (document.getElementById("client_loadingbar")).value = - this.char_list_length + evidenceID; - - const arg = args[2].split("&"); - this.evidences[evidenceID] = { - name: prepChat(arg[0]), - desc: prepChat(arg[1]), - filename: safeTags(arg[3]), - icon: `${AO_HOST}evidence/${encodeURI(arg[3].toLowerCase())}`, - }; - - this.sendServer("AE" + (evidenceID + 1) + "#%"); - } /** * Handles incoming evidence list, all evidences at once diff --git a/webAO/packets/handlers/handleCI.ts b/webAO/packets/handlers/handleCI.ts new file mode 100644 index 0000000..74d3039 --- /dev/null +++ b/webAO/packets/handlers/handleCI.ts @@ -0,0 +1,26 @@ +import { client } from '../../client' +/** + * Handles incoming character information, bundling multiple characters + * per packet. + * CI#0#Phoenix&description&&&&#Miles ... + * @param {Array} args packet arguments + */ +export const handleCI = (args: string[]) => { + // Loop through the 10 characters that were sent + + for (let i = 2; i <= args.length - 2; i++) { + if (i % 2 === 0) { + document.getElementById( + "client_loadingtext" + )!.innerHTML = `Loading Character ${args[1]}/${client.char_list_length}`; + const chargs = args[i].split("&"); + const charid = Number(args[i - 1]); + (( + document.getElementById("client_loadingbar") + )).value = charid; + setTimeout(() => client.handleCharacterInfo(chargs, charid), 500); + } + } + // Request the next pack + client.sendServer(`AN#${Number(args[1]) / 10 + 1}#%`); +} \ No newline at end of file diff --git a/webAO/packets/handlers/handleEI.ts b/webAO/packets/handlers/handleEI.ts new file mode 100644 index 0000000..e96f0c9 --- /dev/null +++ b/webAO/packets/handlers/handleEI.ts @@ -0,0 +1,29 @@ +import { AO_HOST, client } from '../../client' +import { prepChat, safeTags } from '../../encoding'; + +/** + * Handles incoming evidence information, containing only one evidence + * item per packet. + * + * EI#id#name&description&type&image&##% + * + * @param {Array} args packet arguments + */ +export const handleEI = (args: string[]) => { + document.getElementById( + "client_loadingtext" + )!.innerHTML = `Loading Evidence ${args[1]}/${client.evidence_list_length}`; + const evidenceID = Number(args[1]); + (document.getElementById("client_loadingbar")).value = + client.char_list_length + evidenceID; + + const arg = args[2].split("&"); + client.evidences[evidenceID] = { + name: prepChat(arg[0]), + desc: prepChat(arg[1]), + filename: safeTags(arg[3]), + icon: `${AO_HOST}evidence/${encodeURI(arg[3].toLowerCase())}`, + }; + + client.sendServer("AE" + (evidenceID + 1) + "#%"); +} \ No newline at end of file diff --git a/webAO/packets/handlers/handleSC.ts b/webAO/packets/handlers/handleSC.ts new file mode 100644 index 0000000..3689a17 --- /dev/null +++ b/webAO/packets/handlers/handleSC.ts @@ -0,0 +1,37 @@ +import queryParser from "../../utils/queryParser"; + +import { client } from '../../client' +let { mode } = queryParser(); + +/** + * Handles incoming character information, containing all characters + * in one packet. + * @param {Array} args packet arguments + */ +export const handleSC = async (args: string[]) => { + const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms)); + + if (mode === "watch") { + // Spectators don't need to pick a character + document.getElementById("client_charselect")!.style.display = "none"; + } else { + document.getElementById("client_charselect")!.style.display = "block"; + } + + document.getElementById("client_loadingtext")!.innerHTML = + "Loading Characters"; + for (let i = 1; i < args.length - 1; i++) { + document.getElementById( + "client_loadingtext" + )!.innerHTML = `Loading Character ${i}/${client.char_list_length}`; + const chargs = args[i].split("&"); + const charid = i - 1; + (( + document.getElementById("client_loadingbar") + )).value = charid; + await sleep(0.1); // TODO: Too many network calls without this. net::ERR_INSUFFICIENT_RESOURCES + client.handleCharacterInfo(chargs, charid); + } + // We're done with the characters, request the music + client.sendServer("RM#%"); +} \ No newline at end of file -- cgit