diff options
| author | Caleb <caleb.mabry.15@cnu.edu> | 2022-08-30 17:28:30 -0400 |
|---|---|---|
| committer | Caleb <caleb.mabry.15@cnu.edu> | 2022-08-30 17:28:30 -0400 |
| commit | 5d5cb58412bd663aed4897ef7b0f0bd7f263d096 (patch) | |
| tree | 1c5bbf4c1e1302bace77b01af0f0e14b001ce6dd /webAO/packets | |
| parent | b4185a9d62e5477a675625c907f159862725c1dc (diff) | |
Add more
Diffstat (limited to 'webAO/packets')
| -rw-r--r-- | webAO/packets/handlers/handleEM.ts | 39 | ||||
| -rw-r--r-- | webAO/packets/handlers/handleFL.ts | 48 | ||||
| -rw-r--r-- | webAO/packets/handlers/handleLE.ts | 34 |
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 |
