aboutsummaryrefslogtreecommitdiff
path: root/webAO/packets
diff options
context:
space:
mode:
authorCaleb <caleb.mabry.15@cnu.edu>2022-08-30 17:28:30 -0400
committerCaleb <caleb.mabry.15@cnu.edu>2022-08-30 17:28:30 -0400
commit5d5cb58412bd663aed4897ef7b0f0bd7f263d096 (patch)
tree1c5bbf4c1e1302bace77b01af0f0e14b001ce6dd /webAO/packets
parentb4185a9d62e5477a675625c907f159862725c1dc (diff)
Add more
Diffstat (limited to 'webAO/packets')
-rw-r--r--webAO/packets/handlers/handleEM.ts39
-rw-r--r--webAO/packets/handlers/handleFL.ts48
-rw-r--r--webAO/packets/handlers/handleLE.ts34
3 files changed, 121 insertions, 0 deletions
diff --git a/webAO/packets/handlers/handleEM.ts b/webAO/packets/handlers/handleEM.ts
new file mode 100644
index 0000000..973d2af
--- /dev/null
+++ b/webAO/packets/handlers/handleEM.ts
@@ -0,0 +1,39 @@
+import { client } from '../../client'
+import { safeTags } from '../../encoding';
+
+/**
+ * Handles incoming music information, containing multiple entries
+ * per packet.
+ * @param {Array} args packet arguments
+ */
+export const handleEM = (args: string[]) => {
+ document.getElementById("client_loadingtext")!.innerHTML = "Loading Music";
+ if (args[1] === "0") {
+ client.resetMusicList();
+ client.resetAreaList();
+ client.musics_time = false;
+ }
+
+ for (let i = 2; i < args.length - 1; i++) {
+ if (i % 2 === 0) {
+ const trackname = safeTags(args[i]);
+ const trackindex = Number(args[i - 1]);
+ (<HTMLProgressElement>(
+ document.getElementById("client_loadingbar")
+ )).value =
+ client.char_list_length + client.evidence_list_length + trackindex;
+ if (client.musics_time) {
+ client.addTrack(trackname);
+ } else if (client.isAudio(trackname)) {
+ client.musics_time = true;
+ client.fix_last_area();
+ client.addTrack(trackname);
+ } else {
+ client.createArea(trackindex, trackname);
+ }
+ }
+ }
+
+ // get the next batch of tracks
+ client.sendServer(`AM#${Number(args[1]) / 10 + 1}#%`);
+} \ No newline at end of file
diff --git a/webAO/packets/handlers/handleFL.ts b/webAO/packets/handlers/handleFL.ts
new file mode 100644
index 0000000..d9e67e5
--- /dev/null
+++ b/webAO/packets/handlers/handleFL.ts
@@ -0,0 +1,48 @@
+import { setExtraFeatures } from "../../client";
+
+
+ /**
+ * With this the server tells us which features it supports
+ * @param {Array} args list of features
+ */
+export const handleFL = (args: string[]) => {
+ console.info("Server-supported features:");
+ console.info(args);
+ setExtraFeatures(args);
+
+ if (args.includes("yellowtext")) {
+ const colorselect = <HTMLSelectElement>(
+ document.getElementById("textcolor")
+ );
+
+ colorselect.options[colorselect.options.length] = new Option(
+ "Yellow",
+ "5"
+ );
+ colorselect.options[colorselect.options.length] = new Option("Grey", "6");
+ colorselect.options[colorselect.options.length] = new Option("Pink", "7");
+ colorselect.options[colorselect.options.length] = new Option("Cyan", "8");
+ }
+
+ if (args.includes("cccc_ic_support")) {
+ document.getElementById("cccc")!.style.display = "";
+ document.getElementById("pairing")!.style.display = "";
+ }
+
+ if (args.includes("flipping")) {
+ document.getElementById("button_flip")!.style.display = "";
+ }
+
+ if (args.includes("looping_sfx")) {
+ document.getElementById("button_shake")!.style.display = "";
+ document.getElementById("2.7")!.style.display = "";
+ }
+
+ if (args.includes("effects")) {
+ document.getElementById("2.8")!.style.display = "";
+ }
+
+ if (args.includes("y_offset")) {
+ document.getElementById("y_offset")!.style.display = "";
+ }
+ }
diff --git a/webAO/packets/handlers/handleLE.ts b/webAO/packets/handlers/handleLE.ts
new file mode 100644
index 0000000..28f0b40
--- /dev/null
+++ b/webAO/packets/handlers/handleLE.ts
@@ -0,0 +1,34 @@
+import { AO_HOST, client } from '../../client'
+import { prepChat, safeTags } from '../../encoding';
+
+/**
+ * Handles incoming evidence list, all evidences at once
+ * item per packet.
+ *
+ * @param {Array} args packet arguments
+ */
+export const handleLE = (args: string[]) => {
+ client.evidences = [];
+ for (let i = 1; i < args.length - 1; i++) {
+ (<HTMLProgressElement>(
+ document.getElementById("client_loadingbar")
+ )).value = client.char_list_length + i;
+ const arg = args[i].split("&");
+ client.evidences[i - 1] = {
+ name: prepChat(arg[0]),
+ desc: prepChat(arg[1]),
+ filename: safeTags(arg[2]),
+ icon: `${AO_HOST}evidence/${encodeURI(arg[2].toLowerCase())}`,
+ };
+ }
+
+ const evidence_box = document.getElementById("evidences")!;
+ evidence_box.innerHTML = "";
+ for (let i = 1; i <= client.evidences.length; i++) {
+ evidence_box.innerHTML += `<img src="${client.evidences[i - 1].icon}"
+ id="evi_${i}"
+ alt="${client.evidences[i - 1].name}"
+ class="evi_icon"
+ onclick="pickEvidence(${i})">`;
+ }
+} \ No newline at end of file