aboutsummaryrefslogtreecommitdiff
path: root/webAO
diff options
context:
space:
mode:
Diffstat (limited to 'webAO')
-rw-r--r--webAO/client.ts238
-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
-rw-r--r--webAO/packets/handlers/handleBN.ts3
-rw-r--r--webAO/viewport.ts5
10 files changed, 222 insertions, 236 deletions
diff --git a/webAO/client.ts b/webAO/client.ts
index d57f437..321872f 100644
--- a/webAO/client.ts
+++ b/webAO/client.ts
@@ -32,12 +32,13 @@ const version = process.env.npm_package_version;
import masterViewport, { Viewport } from "./viewport";
import { packetHandler } from './packets/packetHandler'
let { ip: serverIP, mode, asset, theme } = queryParser();
+import { cancelEvidence } from './dom/cancelEvidence'
// Unless there is an asset URL specified, use the wasabi one
import { showname_click } from './dom/showNameClick'
import { updateActionCommands } from './dom/updateActionCommands'
import { AO_HOST } from './client/aoHost'
let THEME: string = theme || "default";
-let CHATBOX: string;
+export let CHATBOX: string;
export let client: Client;
@@ -56,7 +57,9 @@ export const setOldLoading = (val: boolean) => {
// presettings
let selectedMenu = 1;
export let selectedShout = 0;
-
+export const setSelectedShout = (val: number) => {
+ selectedShout = val
+}
export let extrafeatures: string[] = [];
export const setExtraFeatures = (val: any) => {
extrafeatures = val
@@ -795,12 +798,6 @@ class Client extends EventEmitter {
}
}
-
-
-
-
-
-
resetMusicList() {
this.musics = [];
document.getElementById("client_musiclist").innerHTML = "";
@@ -969,53 +966,6 @@ export function resetICParams() {
}
/**
- * 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;
-
-
-/**
- * Triggered when a character in the mute list is clicked
- * @param {MouseEvent} event
- */
-export function mutelist_click(_event: Event) {
- const mutelist = <HTMLSelectElement>document.getElementById("mute_select");
- const selected_character = mutelist.options[mutelist.selectedIndex];
-
- if (client.chars[selected_character.value].muted === false) {
- client.chars[selected_character.value].muted = true;
- selected_character.text = `${client.chars[selected_character.value].name
- } (muted)`;
- console.info(`muted ${client.chars[selected_character.value].name}`);
- } else {
- client.chars[selected_character.value].muted = false;
- selected_character.text = client.chars[selected_character.value].name;
- }
-}
-window.mutelist_click = mutelist_click;
-
-
-
-/**
* Triggered by a changed callword list
*/
export function changeCallwords() {
@@ -1135,29 +1085,6 @@ export function imgError(image: HTMLImageElement) {
window.imgError = imgError;
/**
- * 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;
-
-/**
* Triggered when the reconnect button is pushed.
*/
export function ReconnectButton() {
@@ -1298,52 +1225,6 @@ export function pickEmotion(emo: number) {
}
window.pickEmotion = pickEmotion;
-/**
- * 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;
/**
* Add evidence.
@@ -1393,37 +1274,6 @@ export function deleteEvidence() {
}
window.deleteEvidence = deleteEvidence;
-/**
- * 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;
/**
* Find index of anything in select box.
@@ -1467,38 +1317,7 @@ export function setChatbox(style: string) {
}
window.setChatbox = setChatbox;
-/**
- * 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;
/**
* Update evidence icon.
@@ -1652,33 +1471,6 @@ export function redHPP() {
}
window.redHPP = redHPP;
-/**
- * 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;
/**
* Highlights and selects a menu.
@@ -1697,24 +1489,4 @@ export function toggleMenu(menu: number) {
}
window.toggleMenu = toggleMenu;
-/**
- * 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;
-
export default Client;
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
diff --git a/webAO/packets/handlers/handleBN.ts b/webAO/packets/handlers/handleBN.ts
index 067130d..94029b3 100644
--- a/webAO/packets/handlers/handleBN.ts
+++ b/webAO/packets/handlers/handleBN.ts
@@ -1,6 +1,7 @@
-import { client, getIndexFromSelect, updateBackgroundPreview } from "../../client";
+import { client, getIndexFromSelect } from "../../client";
import { AO_HOST } from "../../client/aoHost";
import { safeTags } from "../../encoding";
+import { updateBackgroundPreview } from '../../dom/updateBackgroundPreview'
import tryUrls from "../../utils/tryUrls";
diff --git a/webAO/viewport.ts b/webAO/viewport.ts
index f647d86..d0e7b77 100644
--- a/webAO/viewport.ts
+++ b/webAO/viewport.ts
@@ -1,9 +1,10 @@
import tryUrls from "./utils/tryUrls";
import fileExists from "./utils/fileExists";
-import Client, { opusCheck, delay } from "./client";
+import Client, { delay } from "./client";
+import {opusCheck} from './dom/opusCheck'
import { UPDATE_INTERVAL } from "./client";
import { setChatbox } from "./client";
-import { resizeChatbox } from "./client";
+import { resizeChatbox } from "./dom/resizeChatbox";
import transparentPng from "./constants/transparentPng";
import mlConfig from "./utils/aoml";
import { appendICLog } from "./client";