aboutsummaryrefslogtreecommitdiff
path: root/webAO/packets
diff options
context:
space:
mode:
authorCaleb <caleb.mabry.15@cnu.edu>2022-08-30 17:12:52 -0400
committerCaleb <caleb.mabry.15@cnu.edu>2022-08-30 17:12:52 -0400
commit39861acb94feaed7c7833597b14ab99e5acea42f (patch)
treecd2ce256927261b2b9b3904a4f651e41e828399d /webAO/packets
parentcced5e71d9004eaf34156935d214eac82204ab4b (diff)
Three more packets moved
Diffstat (limited to 'webAO/packets')
-rw-r--r--webAO/packets/handlers/handleCI.ts26
-rw-r--r--webAO/packets/handlers/handleEI.ts29
-rw-r--r--webAO/packets/handlers/handleSC.ts37
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&&&&&#1#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