diff options
| author | Caleb <caleb.mabry.15@cnu.edu> | 2022-08-30 17:12:52 -0400 |
|---|---|---|
| committer | Caleb <caleb.mabry.15@cnu.edu> | 2022-08-30 17:12:52 -0400 |
| commit | 39861acb94feaed7c7833597b14ab99e5acea42f (patch) | |
| tree | cd2ce256927261b2b9b3904a4f651e41e828399d /webAO/packets/handlers | |
| parent | cced5e71d9004eaf34156935d214eac82204ab4b (diff) | |
Three more packets moved
Diffstat (limited to 'webAO/packets/handlers')
| -rw-r--r-- | webAO/packets/handlers/handleCI.ts | 26 | ||||
| -rw-r--r-- | webAO/packets/handlers/handleEI.ts | 29 | ||||
| -rw-r--r-- | webAO/packets/handlers/handleSC.ts | 37 |
3 files changed, 92 insertions, 0 deletions
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]); + (<HTMLProgressElement>( + 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]); + (<HTMLProgressElement>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; + (<HTMLProgressElement>( + 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 |
