aboutsummaryrefslogtreecommitdiff
path: root/webAO/dom
diff options
context:
space:
mode:
authorCaleb <caleb.mabry.15@cnu.edu>2022-09-06 21:55:10 -0400
committerCaleb <caleb.mabry.15@cnu.edu>2022-09-06 21:55:10 -0400
commitccec95a9d3b68e25e24a9168400fc47099a85c81 (patch)
tree4228d606b206aa9f7f9438a5e69e3e721bc02643 /webAO/dom
parent84184b35c8564a1c51cc67d9781d2463fd159527 (diff)
More window functions
Diffstat (limited to 'webAO/dom')
-rw-r--r--webAO/dom/cancelEvidence.ts35
-rw-r--r--webAO/dom/musicListFilter.ts24
-rw-r--r--webAO/dom/opusCheck.ts22
-rw-r--r--webAO/dom/pickEvidence.ts48
-rw-r--r--webAO/dom/resizeChatbox.ts33
-rw-r--r--webAO/dom/toggleShout.ts22
-rw-r--r--webAO/dom/updateBackgroundPreview.ts28
7 files changed, 212 insertions, 0 deletions
diff --git a/webAO/dom/cancelEvidence.ts b/webAO/dom/cancelEvidence.ts
new file mode 100644
index 0000000..6565288
--- /dev/null
+++ b/webAO/dom/cancelEvidence.ts
@@ -0,0 +1,35 @@
+import { client, updateEvidenceIcon } from "../client";
+import { AO_HOST } from "../client/aoHost";
+
+
+/**
+ * Cancel evidence selection.
+ */
+export function cancelEvidence() {
+ // Clear evidence data
+ if (client.selectedEvidence > 0) {
+ document.getElementById(`evi_${client.selectedEvidence}`)!.className =
+ "evi_icon";
+ }
+ client.selectedEvidence = 0;
+
+ // Clear evidence on information window
+ (<HTMLSelectElement>document.getElementById("evi_select")).selectedIndex = 0;
+ updateEvidenceIcon(); // Update icon widget
+ (<HTMLInputElement>document.getElementById("evi_filename")).value = "";
+ (<HTMLInputElement>document.getElementById("evi_name")).value = "";
+ (<HTMLInputElement>document.getElementById("evi_desc")).value = "";
+ (<HTMLImageElement>(
+ document.getElementById("evi_preview")
+ )).src = `${AO_HOST}misc/empty.png`; // Clear icon
+
+ // Update button
+ document.getElementById("evi_add")!.className = "client_button hover_button";
+ document.getElementById("evi_edit")!.className =
+ "client_button hover_button inactive";
+ document.getElementById("evi_cancel")!.className =
+ "client_button hover_button inactive";
+ document.getElementById("evi_del")!.className =
+ "client_button hover_button inactive";
+}
+window.cancelEvidence = cancelEvidence; \ No newline at end of file
diff --git a/webAO/dom/musicListFilter.ts b/webAO/dom/musicListFilter.ts
new file mode 100644
index 0000000..3db7fcd
--- /dev/null
+++ b/webAO/dom/musicListFilter.ts
@@ -0,0 +1,24 @@
+import { client } from '../client'
+/**
+ * Triggered when the music search bar is changed
+ * @param {MouseEvent} event
+ */
+export function musiclist_filter(_event: Event) {
+ const musiclist_element = <HTMLSelectElement>(
+ document.getElementById("client_musiclist")
+ );
+ const searchname = (<HTMLInputElement>(
+ document.getElementById("client_musicsearch")
+ )).value;
+
+ musiclist_element.innerHTML = "";
+
+ for (const trackname of client.musics) {
+ if (trackname.toLowerCase().indexOf(searchname.toLowerCase()) !== -1) {
+ const newentry = <HTMLOptionElement>document.createElement("OPTION");
+ newentry.text = trackname;
+ musiclist_element.options.add(newentry);
+ }
+ }
+}
+window.musiclist_filter = musiclist_filter; \ No newline at end of file
diff --git a/webAO/dom/opusCheck.ts b/webAO/dom/opusCheck.ts
new file mode 100644
index 0000000..939fdc6
--- /dev/null
+++ b/webAO/dom/opusCheck.ts
@@ -0,0 +1,22 @@
+/**
+ * Triggered when there was an error loading a sound
+ * @param {HTMLAudioElement} image the element containing the missing sound
+ */
+export function opusCheck(
+ channel: HTMLAudioElement
+): OnErrorEventHandlerNonNull {
+ const audio = channel.src;
+ if (audio === "") {
+ return;
+ }
+ console.info(`failed to load sound ${channel.src}`);
+ let oldsrc = "";
+ let newsrc = "";
+ oldsrc = channel.src;
+ if (!oldsrc.endsWith(".opus")) {
+ newsrc = oldsrc.replace(".mp3", ".opus");
+ newsrc = newsrc.replace(".wav", ".opus");
+ channel.src = newsrc; // unload so the old sprite doesn't persist
+ }
+}
+window.opusCheck = opusCheck; \ No newline at end of file
diff --git a/webAO/dom/pickEvidence.ts b/webAO/dom/pickEvidence.ts
new file mode 100644
index 0000000..32e52ba
--- /dev/null
+++ b/webAO/dom/pickEvidence.ts
@@ -0,0 +1,48 @@
+import { cancelEvidence, client, getIndexFromSelect, updateEvidenceIcon } from '../client'
+
+/**
+ * Highlights and selects an evidence for in-character chat.
+ * @param {string} evidence the evidence to be presented
+ */
+export function pickEvidence(evidence: number) {
+ if (client.selectedEvidence !== evidence) {
+ // Update selected evidence
+ if (client.selectedEvidence > 0) {
+ document.getElementById(`evi_${client.selectedEvidence}`)!.className =
+ "evi_icon";
+ }
+ document.getElementById(`evi_${evidence}`)!.className = "evi_icon dark";
+ client.selectedEvidence = evidence;
+
+ // Show evidence on information window
+ (<HTMLInputElement>document.getElementById("evi_name")).value =
+ client.evidences[evidence - 1].name;
+ (<HTMLInputElement>document.getElementById("evi_desc")).value =
+ client.evidences[evidence - 1].desc;
+
+ // Update icon
+ const icon_id = getIndexFromSelect(
+ "evi_select",
+ client.evidences[evidence - 1].filename
+ );
+ (<HTMLSelectElement>document.getElementById("evi_select")).selectedIndex =
+ icon_id;
+ if (icon_id === 0) {
+ (<HTMLInputElement>document.getElementById("evi_filename")).value =
+ client.evidences[evidence - 1].filename;
+ }
+ updateEvidenceIcon();
+
+ // Update button
+ document.getElementById("evi_add")!.className =
+ "client_button hover_button inactive";
+ document.getElementById("evi_edit")!.className =
+ "client_button hover_button";
+ document.getElementById("evi_cancel")!.className =
+ "client_button hover_button";
+ document.getElementById("evi_del")!.className = "client_button hover_button";
+ } else {
+ cancelEvidence();
+ }
+}
+window.pickEvidence = pickEvidence;
diff --git a/webAO/dom/resizeChatbox.ts b/webAO/dom/resizeChatbox.ts
new file mode 100644
index 0000000..efb8bdc
--- /dev/null
+++ b/webAO/dom/resizeChatbox.ts
@@ -0,0 +1,33 @@
+import { CHATBOX } from "../client";
+/**
+ * Set the font size for the chatbox
+ */
+export function resizeChatbox() {
+ const chatContainerBox = document.getElementById("client_chatcontainer")!;
+ const gameHeight = document.getElementById("client_background")!.offsetHeight;
+
+ chatContainerBox.style.fontSize = `${(gameHeight * 0.0521).toFixed(1)}px`;
+
+ const trackstatus = <HTMLMarqueeElement>(document.getElementById("client_trackstatustext"));
+ trackstatus.width = (trackstatus.offsetWidth - 1) + "px";
+
+
+ //clock
+ const now = new Date();
+ let weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+ const month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
+ document.getElementById("client_clock_month")!.innerText = month[now.getMonth()];
+ console.debug(CHATBOX);
+ if (CHATBOX == "acww") {
+ weekday = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
+ document.getElementById("client_clock_weekday")!.innerText = weekday[now.getDay()];
+ document.getElementById("client_clock_date")!.innerText = now.getDay() + "/" + now.getMonth();
+ document.getElementById("client_clock_time")!.innerText = now.getHours() + ":" + now.getMinutes();
+ } else if (CHATBOX == "key") {
+ weekday = ["Sun.", "Mon.", "Tue.", "Wed.", "Thu.", "Fri.", "Sat."];
+ document.getElementById("client_clock_weekday")!.innerText = weekday[now.getDay()];
+ document.getElementById("client_clock_date")!.innerText = String(now.getDay());
+ }
+
+}
+window.resizeChatbox = resizeChatbox; \ No newline at end of file
diff --git a/webAO/dom/toggleShout.ts b/webAO/dom/toggleShout.ts
new file mode 100644
index 0000000..8094691
--- /dev/null
+++ b/webAO/dom/toggleShout.ts
@@ -0,0 +1,22 @@
+import { selectedShout, setSelectedShout } from "../client";
+
+
+/**
+ * Highlights and selects a shout for in-character chat.
+ * If the same shout button is selected, then the shout is canceled.
+ * @param {number} shout the new shout to be selected
+ */
+export function toggleShout(shout: number) {
+ if (shout === selectedShout) {
+ document.getElementById(`button_${shout}`)!.className = "client_button";
+ selectedShout = 0;
+ } else {
+ document.getElementById(`button_${shout}`)!.className = "client_button dark";
+ if (selectedShout) {
+ document.getElementById(`button_${selectedShout}`)!.className =
+ "client_button";
+ }
+ selectedShout = shout;
+ }
+}
+window.toggleShout = toggleShout;
diff --git a/webAO/dom/updateBackgroundPreview.ts b/webAO/dom/updateBackgroundPreview.ts
new file mode 100644
index 0000000..b41ee8f
--- /dev/null
+++ b/webAO/dom/updateBackgroundPreview.ts
@@ -0,0 +1,28 @@
+import { AO_HOST } from '../client/aoHost'
+/**
+ * Update background preview.
+ */
+export function updateBackgroundPreview() {
+ const background_select = <HTMLSelectElement>(
+ document.getElementById("bg_select")
+ );
+ const background_filename = <HTMLInputElement>(
+ document.getElementById("bg_filename")
+ );
+ const background_preview = <HTMLImageElement>(
+ document.getElementById("bg_preview")
+ );
+
+ if (background_select.selectedIndex === 0) {
+ background_filename.style.display = "initial";
+ background_preview.src = `${AO_HOST}background/${encodeURI(
+ background_filename.value.toLowerCase()
+ )}/defenseempty.png`;
+ } else {
+ background_filename.style.display = "none";
+ background_preview.src = `${AO_HOST}background/${encodeURI(
+ background_select.value.toLowerCase()
+ )}/defenseempty.png`;
+ }
+}
+window.updateBackgroundPreview = updateBackgroundPreview; \ No newline at end of file