aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstonedDiscord <Tukz@gmx.de>2022-08-31 00:09:48 +0200
committerGitHub <noreply@github.com>2022-08-31 00:09:48 +0200
commitfbe2a62fd081a60860df4169f6f74425b3ff833e (patch)
tree57bf23055f63df56f9a65b4ac007d97e41a334a1
parenta453315983f6fa71b2b9f953d505cf63f6d7d8d0 (diff)
parent357b27c0aae95031a5d94bdbc504d82b797b22e2 (diff)
Merge pull request #160 from caleb-mabry/several
Several packets added
-rw-r--r--webAO/client.ts214
-rw-r--r--webAO/packets/handlers/handleBN.ts81
-rw-r--r--webAO/packets/handlers/handleDONE.ts16
-rw-r--r--webAO/packets/handlers/handleHI.ts14
-rw-r--r--webAO/packets/handlers/handleHP.ts23
-rw-r--r--webAO/packets/handlers/handleRT.ts25
-rw-r--r--webAO/packets/handlers/handleTI.ts21
-rw-r--r--webAO/packets/handlers/handleZZ.ts22
8 files changed, 217 insertions, 199 deletions
diff --git a/webAO/client.ts b/webAO/client.ts
index 1fdd3c5..e871fce 100644
--- a/webAO/client.ts
+++ b/webAO/client.ts
@@ -30,6 +30,13 @@ import { handleBD } from './packets/handlers/handleBD'
import { handleBB } from './packets/handlers/handleBB'
import { handleKB } from './packets/handlers/handleKB'
import { handleKK } from './packets/handlers/handleKK'
+import { handleDONE } from './packets/handlers/handleDONE'
+import { handleBN } from './packets/handlers/handleBN'
+import { handleHP } from './packets/handlers/handleHP'
+import { handleRT } from './packets/handlers/handleRT'
+import { handleTI } from './packets/handlers/handleTI'
+import { handleZZ } from './packets/handlers/handleZZ'
+import { handleHI } from './packets/handlers/handleHI'
import chatbox_arr from "./styles/chatbox/chatboxes.js";
import iniParse from "./iniParse";
import getCookie from "./utils/getCookie";
@@ -253,13 +260,13 @@ class Client extends EventEmitter {
this.on("BB", handleBB);
this.on("KB", handleKB);
this.on("KK", handleKK);
- this.on("DONE", this.handleDONE.bind(this));
- this.on("BN", this.handleBN.bind(this));
- this.on("HP", this.handleHP.bind(this));
- this.on("RT", this.handleRT.bind(this));
- this.on("TI", this.handleTI.bind(this));
- this.on("ZZ", this.handleZZ.bind(this));
- this.on("HI", this.handleHI.bind(this));
+ this.on("DONE", handleDONE);
+ this.on("BN", handleBN);
+ this.on("HP", handleHP);
+ this.on("RT", handleRT);
+ this.on("TI", handleTI);
+ this.on("ZZ", handleZZ);
+ this.on("HI", handleHI);
this.on("ID", this.handleID.bind(this));
this.on("PN", this.handlePN.bind(this));
this.on("SI", this.handleSI.bind(this));
@@ -1025,197 +1032,6 @@ class Client extends EventEmitter {
-
-
-
-
- /**
- * Handles the handshake completion packet, meaning the player
- * is ready to select a character.
- *
- * @param {Array} args packet arguments
- */
- handleDONE(_args: string[]) {
- document.getElementById("client_loading").style.display = "none";
- if (mode === "watch") {
- // Spectators don't need to pick a character
- document.getElementById("client_waiting").style.display = "none";
- }
- }
-
- /**
- * Handles a background change.
- * @param {Array} args packet arguments
- */
-
- handleBN(args: string[]) {
- const bgFromArgs = safeTags(args[1]);
- this.viewport.setBackgroundName(bgFromArgs);
- const bgfolder = this.viewport.getBackgroundFolder();
- const bg_index = getIndexFromSelect(
- "bg_select",
- this.viewport.getBackgroundName()
- );
- (<HTMLSelectElement>document.getElementById("bg_select")).selectedIndex =
- bg_index;
- updateBackgroundPreview();
- if (bg_index === 0) {
- (<HTMLInputElement>document.getElementById("bg_filename")).value =
- this.viewport.getBackgroundName();
- }
-
- tryUrls(
- `${AO_HOST}background/${encodeURI(args[1].toLowerCase())}/defenseempty`
- ).then((resp) => {
- (<HTMLImageElement>document.getElementById("bg_preview")).src = resp;
- });
- tryUrls(`${bgfolder}defensedesk`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_def_bench")).src =
- resp;
- });
- tryUrls(`${bgfolder}stand`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_wit_bench")).src =
- resp;
- });
- tryUrls(`${bgfolder}prosecutiondesk`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_pro_bench")).src =
- resp;
- });
- tryUrls(`${bgfolder}full`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_court")).src = resp;
- });
- tryUrls(`${bgfolder}defenseempty`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_court_def")).src =
- resp;
- });
- tryUrls(`${bgfolder}transition_def`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_court_deft")).src =
- resp;
- });
- tryUrls(`${bgfolder}witnessempty`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_court_wit")).src =
- resp;
- });
- tryUrls(`${bgfolder}transition_pro`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_court_prot")).src =
- resp;
- });
- tryUrls(`${bgfolder}prosecutorempty`).then((resp) => {
- (<HTMLImageElement>document.getElementById("client_court_pro")).src =
- resp;
- });
-
- if (this.charID === -1) {
- this.viewport.set_side({
- position: "jud",
- showSpeedLines: false,
- showDesk: true,
- });
- } else {
- this.viewport.set_side({
- position: this.chars[this.charID].side,
- showSpeedLines: false,
- showDesk: true,
- });
- }
- }
-
- /**
- * Handles a change in the health bars' states.
- * @param {Array} args packet arguments
- */
- handleHP(args: string[]) {
- const percent_hp = Number(args[2]) * 10;
- let healthbox;
- if (args[1] === "1") {
- // Def hp
- this.hp[0] = Number(args[2]);
- healthbox = document.getElementById("client_defense_hp");
- } else {
- // Pro hp
- this.hp[1] = Number(args[2]);
- healthbox = document.getElementById("client_prosecutor_hp");
- }
- (<HTMLElement>(
- healthbox.getElementsByClassName("health-bar")[0]
- )).style.width = `${percent_hp}%`;
- }
-
- /**
- * Handles a testimony states.
- * @param {Array} args packet arguments
- */
- handleRT(args: string[]) {
- const judgeid = Number(args[2]);
- switch (args[1]) {
- case "testimony1":
- this.testimonyID = 1;
- break;
- case "testimony2":
- // Cross Examination
- this.testimonyID = 2;
- break;
- case "judgeruling":
- this.testimonyID = 3 + judgeid;
- break;
- default:
- console.warn("Invalid testimony");
- }
- this.viewport.initTestimonyUpdater();
- }
-
- /**
- * Handles a timer update
- * @param {Array} args packet arguments
- */
- handleTI(args: string[]) {
- const timerid = Number(args[1]);
- const type = Number(args[2]);
- const timer_value = args[3];
- switch (type) {
- case 0:
- //
- case 1:
- document.getElementById(`client_timer${timerid}`).innerText =
- timer_value;
- case 2:
- document.getElementById(`client_timer${timerid}`).style.display = "";
- case 3:
- document.getElementById(`client_timer${timerid}`).style.display =
- "none";
- }
- }
-
- /**
- * Handles a modcall
- * @param {Array} args packet arguments
- */
- handleZZ(args: string[]) {
- const oocLog = document.getElementById("client_ooclog");
- oocLog.innerHTML += `$Alert: ${prepChat(args[1])}\r\n`;
- if (oocLog.scrollTop > oocLog.scrollHeight - 60) {
- oocLog.scrollTop = oocLog.scrollHeight;
- }
-
- this.viewport.getSfxAudio().pause();
- const oldvolume = this.viewport.getSfxAudio().volume;
- this.viewport.getSfxAudio().volume = 1;
- this.viewport.getSfxAudio().src = `${AO_HOST}sounds/general/sfx-gallery.opus`;
- this.viewport.getSfxAudio().play();
- this.viewport.getSfxAudio().volume = oldvolume;
- }
-
- /**
- * Handle the player
- * @param {Array} args packet arguments
- */
- handleHI(_args: string[]) {
- this.sendSelf(`ID#1#webAO#${version}#%`);
- this.sendSelf(
- "FL#fastloading#yellowtext#cccc_ic_support#flipping#looping_sfx#effects#%"
- );
- }
-
/**
* Identifies the server and issues a playerID
* @param {Array} args packet arguments
@@ -1776,7 +1592,7 @@ window.changeCallwords = changeCallwords;
* Triggered by the modcall sfx dropdown
*/
export function modcall_test() {
- client.handleZZ("test#test".split("#"));
+ handleZZ("test#test".split("#"));
}
window.modcall_test = modcall_test;
diff --git a/webAO/packets/handlers/handleBN.ts b/webAO/packets/handlers/handleBN.ts
new file mode 100644
index 0000000..3cd3c5a
--- /dev/null
+++ b/webAO/packets/handlers/handleBN.ts
@@ -0,0 +1,81 @@
+import { AO_HOST, client, getIndexFromSelect, updateBackgroundPreview } from "../../client";
+import { safeTags } from "../../encoding";
+import tryUrls from "../../utils/tryUrls";
+
+
+ /**
+ * Handles a background change.
+ * @param {Array} args packet arguments
+ */
+
+export const handleBN = (args: string[]) => {
+ const bgFromArgs = safeTags(args[1]);
+ client.viewport.setBackgroundName(bgFromArgs);
+ const bgfolder = client.viewport.getBackgroundFolder();
+ const bg_index = getIndexFromSelect(
+ "bg_select",
+ client.viewport.getBackgroundName()
+ );
+ (<HTMLSelectElement>document.getElementById("bg_select")).selectedIndex =
+ bg_index;
+ updateBackgroundPreview();
+ if (bg_index === 0) {
+ (<HTMLInputElement>document.getElementById("bg_filename")).value =
+ client.viewport.getBackgroundName();
+ }
+
+ tryUrls(
+ `${AO_HOST}background/${encodeURI(args[1].toLowerCase())}/defenseempty`
+ ).then((resp) => {
+ (<HTMLImageElement>document.getElementById("bg_preview")).src = resp;
+ });
+ tryUrls(`${bgfolder}defensedesk`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_def_bench")).src =
+ resp;
+ });
+ tryUrls(`${bgfolder}stand`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_wit_bench")).src =
+ resp;
+ });
+ tryUrls(`${bgfolder}prosecutiondesk`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_pro_bench")).src =
+ resp;
+ });
+ tryUrls(`${bgfolder}full`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_court")).src = resp;
+ });
+ tryUrls(`${bgfolder}defenseempty`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_court_def")).src =
+ resp;
+ });
+ tryUrls(`${bgfolder}transition_def`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_court_deft")).src =
+ resp;
+ });
+ tryUrls(`${bgfolder}witnessempty`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_court_wit")).src =
+ resp;
+ });
+ tryUrls(`${bgfolder}transition_pro`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_court_prot")).src =
+ resp;
+ });
+ tryUrls(`${bgfolder}prosecutorempty`).then((resp) => {
+ (<HTMLImageElement>document.getElementById("client_court_pro")).src =
+ resp;
+ });
+
+ if (client.charID === -1) {
+ client.viewport.set_side({
+ position: "jud",
+ showSpeedLines: false,
+ showDesk: true,
+ });
+ } else {
+ client.viewport.set_side({
+ position: client.chars[client.charID].side,
+ showSpeedLines: false,
+ showDesk: true,
+ });
+ }
+ } \ No newline at end of file
diff --git a/webAO/packets/handlers/handleDONE.ts b/webAO/packets/handlers/handleDONE.ts
new file mode 100644
index 0000000..3cafd5e
--- /dev/null
+++ b/webAO/packets/handlers/handleDONE.ts
@@ -0,0 +1,16 @@
+import queryParser from "../../utils/queryParser";
+
+let { mode } = queryParser()
+ /**
+ * Handles the handshake completion packet, meaning the player
+ * is ready to select a character.
+ *
+ * @param {Array} args packet arguments
+ */
+export const handleDONE = (_args: string[]) => {
+ document.getElementById("client_loading")!.style.display = "none";
+ if (mode === "watch") {
+ // Spectators don't need to pick a character
+ document.getElementById("client_waiting")!.style.display = "none";
+ }
+ } \ No newline at end of file
diff --git a/webAO/packets/handlers/handleHI.ts b/webAO/packets/handlers/handleHI.ts
new file mode 100644
index 0000000..d15be0d
--- /dev/null
+++ b/webAO/packets/handlers/handleHI.ts
@@ -0,0 +1,14 @@
+import { client } from "../../client";
+const version = process.env.npm_package_version;
+
+
+/**
+ * Handle the player
+ * @param {Array} args packet arguments
+ */
+export const handleHI = (_args: string[]) => {
+ client.sendSelf(`ID#1#webAO#${version}#%`);
+ client.sendSelf(
+ "FL#fastloading#yellowtext#cccc_ic_support#flipping#looping_sfx#effects#%"
+ );
+}
diff --git a/webAO/packets/handlers/handleHP.ts b/webAO/packets/handlers/handleHP.ts
new file mode 100644
index 0000000..f365590
--- /dev/null
+++ b/webAO/packets/handlers/handleHP.ts
@@ -0,0 +1,23 @@
+import { client } from "../../client";
+
+
+ /**
+ * Handles a change in the health bars' states.
+ * @param {Array} args packet arguments
+ */
+export const handleHP = (args: string[]) => {
+ const percent_hp = Number(args[2]) * 10;
+ let healthbox;
+ if (args[1] === "1") {
+ // Def hp
+ client.hp[0] = Number(args[2]);
+ healthbox = document.getElementById("client_defense_hp");
+ } else {
+ // Pro hp
+ client.hp[1] = Number(args[2]);
+ healthbox = document.getElementById("client_prosecutor_hp");
+ }
+ (<HTMLElement>(
+ healthbox.getElementsByClassName("health-bar")[0]
+ )).style.width = `${percent_hp}%`;
+ } \ No newline at end of file
diff --git a/webAO/packets/handlers/handleRT.ts b/webAO/packets/handlers/handleRT.ts
new file mode 100644
index 0000000..5bbf2b2
--- /dev/null
+++ b/webAO/packets/handlers/handleRT.ts
@@ -0,0 +1,25 @@
+import { client } from "../../client";
+
+
+/**
+ * Handles a testimony states.
+ * @param {Array} args packet arguments
+ */
+export const handleRT = (args: string[]) => {
+ const judgeid = Number(args[2]);
+ switch (args[1]) {
+ case "testimony1":
+ client.testimonyID = 1;
+ break;
+ case "testimony2":
+ // Cross Examination
+ client.testimonyID = 2;
+ break;
+ case "judgeruling":
+ client.testimonyID = 3 + judgeid;
+ break;
+ default:
+ console.warn("Invalid testimony");
+ }
+ client.viewport.initTestimonyUpdater();
+} \ No newline at end of file
diff --git a/webAO/packets/handlers/handleTI.ts b/webAO/packets/handlers/handleTI.ts
new file mode 100644
index 0000000..e418088
--- /dev/null
+++ b/webAO/packets/handlers/handleTI.ts
@@ -0,0 +1,21 @@
+/**
+ * Handles a timer update
+ * @param {Array} args packet arguments
+ */
+export const handleTI = (args: string[]) => {
+ const timerid = Number(args[1]);
+ const type = Number(args[2]);
+ const timer_value = args[3];
+ switch (type) {
+ case 0:
+ //
+ case 1:
+ document.getElementById(`client_timer${timerid}`)!.innerText =
+ timer_value;
+ case 2:
+ document.getElementById(`client_timer${timerid}`)!.style.display = "";
+ case 3:
+ document.getElementById(`client_timer${timerid}`)!.style.display =
+ "none";
+ }
+} \ No newline at end of file
diff --git a/webAO/packets/handlers/handleZZ.ts b/webAO/packets/handlers/handleZZ.ts
new file mode 100644
index 0000000..1a56e49
--- /dev/null
+++ b/webAO/packets/handlers/handleZZ.ts
@@ -0,0 +1,22 @@
+import { AO_HOST, client } from "../../client";
+import { prepChat } from "../../encoding";
+
+
+/**
+ * Handles a modcall
+ * @param {Array} args packet arguments
+ */
+export const handleZZ = (args: string[]) => {
+ const oocLog = document.getElementById("client_ooclog")!;
+ oocLog.innerHTML += `$Alert: ${prepChat(args[1])}\r\n`;
+ if (oocLog.scrollTop > oocLog.scrollHeight - 60) {
+ oocLog.scrollTop = oocLog.scrollHeight;
+ }
+
+ client.viewport.getSfxAudio().pause();
+ const oldvolume = client.viewport.getSfxAudio().volume;
+ client.viewport.getSfxAudio().volume = 1;
+ client.viewport.getSfxAudio().src = `${AO_HOST}sounds/general/sfx-gallery.opus`;
+ client.viewport.getSfxAudio().play();
+ client.viewport.getSfxAudio().volume = oldvolume;
+} \ No newline at end of file