aboutsummaryrefslogtreecommitdiff
path: root/webAO/dom-events.ts
blob: dbb00021a81ba1b23f772d6666754c8c7fada0f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
import { sendPasskeyLoginRequest } from "./ext_packet";
import { pickChar } from "./dom/pickChar";
import { ReconnectButton } from "./dom/reconnectButton";
import { toggleShout } from "./dom/toggleShout";
import { toggleEffect } from "./dom/toggleEffect";
import { changeCharacter } from "./dom/changeCharacter";
import { randomCharacterOOC } from "./dom/randomCharacterOOC";
import { toggleElement } from "./dom/toggleElement";
import { resetOffset } from "./dom/resetOffset";
import { showname_click } from "./dom/showNameClick";
import { initWT } from "./dom/initWT";
import { initCE } from "./dom/initCE";
import { notguilty } from "./dom/notGuilty";
import { guilty } from "./dom/guilty";
import { redHPD } from "./dom/redHPD";
import { addHPD } from "./dom/addHPD";
import { redHPP } from "./dom/redHPP";
import { addHPP } from "./dom/addHPP";
import { toggleMenu } from "./dom/toggleMenu";
import { callMod } from "./dom/callMod";
import { changeBackgroundOOC } from "./dom/changeBackgroundOOC";
import { addEvidence } from "./dom/addEvidence";
import { editEvidence } from "./dom/editEvidence";
import { cancelEvidence } from "./dom/cancelEvidence";
import { deleteEvidence } from "./dom/deleteEvidence";
import { iniedit } from "./dom/iniEdit";
import { switchPanTilt } from "./dom/switchPanTilt";
import { switchAspectRatio } from "./dom/switchAspectRatio";
import { switchChatOffset } from "./dom/switchChatOffset";
import { DisconnectButton } from "./dom/disconnectButton";
import { onReplayGo } from "./dom/onReplayGo";
import { chartable_filter } from "./dom/charTableFilter";
import { musiclist_filter } from "./dom/musicListFilter";
import { musiclist_click } from "./dom/musicListClick";
import { changeRoleOOC } from "./dom/changeRoleOOC";
import { mutelist_click } from "./dom/muteListClick";
import { updateBackgroundPreview } from "./dom/updateBackgroundPreview";
import { updateEvidenceIcon } from "./dom/updateEvidenceIcon";
import { changeMusicVolume } from "./dom/changeMusicVolume";
import { changeBlipVolume } from "./dom/changeBlipVolume";
import { setChatbox } from "./dom/setChatbox";
import { reloadTheme } from "./dom/reloadTheme";
import { updateIniswap } from "./dom/updateIniswap";
import { changeCallwords } from "./dom/changeCallwords";
import { imgError } from "./dom/imgError";
import { charError } from "./dom/charError";
import { opusCheck } from "./dom/opusCheck";
import { onEnter } from "./dom/onEnter";
import { onOOCEnter } from "./dom/onOOCEnter";
import {
  changeSFXVolume,
  changeShoutVolume,
  changeTestimonyVolume,
} from "./dom/changeVolume";

document.addEventListener("click", (e: MouseEvent) => {
  if (!(e.target instanceof HTMLElement)) {
    return;
  }
  const button = e.target.closest("[data-action]");
  if (!(button instanceof HTMLElement)) {
    return;
  }

  switch (button.dataset.action) {
    case "pick-char":
      pickChar(Number(button.dataset.id));
      break;
    case "toggle-shout":
      toggleShout(Number(button.dataset.id));
      break;
    case "toggle-effect":
      toggleEffect(button);
      break;
    case "toggle-menu":
      toggleMenu(Number(button.dataset.id));
      break;
    default:
      break;
  }
});

document
  .getElementById("client_reconnect")
  .addEventListener("click", () => ReconnectButton());
document
  .getElementById("char_change")
  .addEventListener("click", changeCharacter);
document
  .getElementById("char_random")
  .addEventListener("click", () => randomCharacterOOC());
document
  .getElementById("button_toggle_pairing")
  .addEventListener("click", () => toggleElement("pairing_settings"));
document.getElementById("pair_reset").addEventListener("click", resetOffset);
document.getElementById("showname").addEventListener("click", showname_click);
document.getElementById("menu_wt").addEventListener("click", () => initWT());
document.getElementById("menu_ce").addEventListener("click", () => initCE());
document
  .getElementById("menu_nguilty")
  .addEventListener("click", () => notguilty());
document
  .getElementById("menu_guilty")
  .addEventListener("click", () => guilty());
document.getElementById("menu_rhpd").addEventListener("click", () => redHPD());
document.getElementById("menu_ahpd").addEventListener("click", () => addHPD());
document.getElementById("menu_rhpp").addEventListener("click", () => redHPP());
document.getElementById("menu_ahpp").addEventListener("click", () => addHPP());
document.getElementById("menu_cm").addEventListener("click", () => callMod());
document
  .getElementById("bg_change")
  .addEventListener("click", () => changeBackgroundOOC());
document
  .getElementById("evi_add")
  .addEventListener("click", () => addEvidence());
document
  .getElementById("evi_edit")
  .addEventListener("click", () => editEvidence());
document
  .getElementById("evi_cancel")
  .addEventListener("click", () => cancelEvidence());
document
  .getElementById("evi_del")
  .addEventListener("click", () => deleteEvidence());
document
  .getElementById("client_inichange")
  .addEventListener("click", () => iniedit());
document
  .getElementById("client_pantilt")
  .addEventListener("click", () => switchPanTilt());
document
  .getElementById("client_hdviewport")
  .addEventListener("click", () => switchAspectRatio());
document
  .getElementById("client_hdviewport_offset")
  .addEventListener("click", () => switchChatOffset());
document
  .getElementById("client_disconnect")
  .addEventListener("click", () => DisconnectButton());
document
  .getElementById("client_replaygo")
  .addEventListener("click", onReplayGo);

document
  .getElementById("client_charactersearch")
  .addEventListener("input", chartable_filter);
document
  .getElementById("client_musicsearch")
  .addEventListener("input", musiclist_filter);

document
  .getElementById("client_musiclist")
  .addEventListener("change", musiclist_click);
document
  .getElementById("role_select")
  .addEventListener("change", () => changeRoleOOC());
document
  .getElementById("mute_select")
  .addEventListener("change", mutelist_click);
document
  .getElementById("bg_select")
  .addEventListener("change", () => updateBackgroundPreview());
document
  .getElementById("evi_select")
  .addEventListener("change", () => updateEvidenceIcon());
document
  .getElementById("client_mvolume")
  .addEventListener("change", () => changeMusicVolume());
document
  .getElementById("client_bvolume")
  .addEventListener("change", () => changeBlipVolume());
document
  .getElementById("client_themeselect")
  .addEventListener("change", () => reloadTheme());
const chatboxselect = document.getElementById(
  "client_chatboxselect",
) as HTMLSelectElement;
chatboxselect.addEventListener("change", () => setChatbox(chatboxselect.value));
document
  .getElementById("client_iniselect")
  .addEventListener("change", () => updateIniswap());
document
  .getElementById("client_callwords")
  .addEventListener("change", () => changeCallwords());

document.addEventListener(
  "error",
  (e: Event) => {
    const target = e.target;
    if (!(target instanceof HTMLElement)) {
      return;
    }

    switch (target.dataset.error) {
      case "img":
        imgError(target as HTMLImageElement);
        break;
      case "char":
        charError(target as HTMLImageElement);
        break;
      case "opus-check":
        opusCheck(target as HTMLAudioElement);
        break;
      default:
        break;
    }
  },
  true,
);

document
  .getElementById("client_inputbox")
  .addEventListener("keypress", onEnter);
document
  .getElementById("client_oocinputbox")
  .addEventListener("keypress", onOOCEnter);

document
  .getElementById("client_sfxaudio")
  .addEventListener("volumechange", changeSFXVolume);
document
  .getElementById("client_shoutaudio")
  .addEventListener("volumechange", changeShoutVolume);
document
  .getElementById("client_testimonyaudio")
  .addEventListener("volumechange", changeTestimonyVolume);