aboutsummaryrefslogtreecommitdiff
path: root/webAO/client.js
diff options
context:
space:
mode:
Diffstat (limited to 'webAO/client.js')
-rw-r--r--webAO/client.js50
1 files changed, 39 insertions, 11 deletions
diff --git a/webAO/client.js b/webAO/client.js
index 1150f15..ac1c28b 100644
--- a/webAO/client.js
+++ b/webAO/client.js
@@ -91,12 +91,17 @@ let lastICMessageTime = new Date(0);
class Client extends EventEmitter {
constructor(address) {
super();
- this.serv = new WebSocket("ws://" + address);
- // Assign the websocket events
- this.serv.addEventListener("open", this.emit.bind(this, "open"));
- this.serv.addEventListener("close", this.emit.bind(this, "close"));
- this.serv.addEventListener("message", this.emit.bind(this, "message"));
- this.serv.addEventListener("error", this.emit.bind(this, "error"));
+ console.log("mode: " + mode);
+ if (mode !== "replay") {
+ this.serv = new WebSocket("ws://" + address);
+ // Assign the websocket events
+ this.serv.addEventListener("open", this.emit.bind(this, "open"));
+ this.serv.addEventListener("close", this.emit.bind(this, "close"));
+ this.serv.addEventListener("message", this.emit.bind(this, "message"));
+ this.serv.addEventListener("error", this.emit.bind(this, "error"));
+ } else {
+ this.joinServer();
+ }
this.on("open", this.onOpen.bind(this));
this.on("close", this.onClose.bind(this));
@@ -194,6 +199,7 @@ class Client extends EventEmitter {
this.on("decryptor", this.handleDecryptor.bind(this));
this.on("PV", this.handlePV.bind(this));
this.on("CHECK", () => { });
+ this.on("CH", () => { });
this._lastTimeICReceived = new Date(0);
}
@@ -224,8 +230,22 @@ class Client extends EventEmitter {
* @param {string} message the message to send
*/
sendServer(message) {
- // console.log(message);
- this.serv.send(message);
+ console.debug("C: " + message);
+ if (mode === "replay") {
+ this.sendSelf(message);
+ } else {
+ this.serv.send(message);
+ }
+ }
+
+ /**
+ * Hook for sending messages to the client
+ * @param {string} message the message to send
+ */
+ sendSelf(message) {
+ document.getElementById("client_ooclog").innerHTML += message + "\r\n";
+ const message_event = new MessageEvent('websocket', { data: message });
+ this.onMessage(message_event);
}
/**
@@ -285,8 +305,6 @@ class Client extends EventEmitter {
`#${escapeChat(encodeChat(message))}#${side}#${sfx_name}#${emote_modifier}` +
`#${this.charID}#${sfx_delay}#${objection_modifier}#${evidence}#${flip}#${realization}#${text_color}#${extra_cccc}${extra_27}${extra_28}%`;
- console.log(serverMessage);
-
this.sendServer(serverMessage);
}
@@ -482,7 +500,7 @@ class Client extends EventEmitter {
*/
onMessage(e) {
const msg = e.data;
- console.debug(msg);
+ console.debug("S: " + msg);
const lines = msg.split("%");
const args = lines[0].split("#");
@@ -1114,6 +1132,8 @@ class Client extends EventEmitter {
this.serverSoftware = args[2].split("&")[0];
if (this.serverSoftware === "serverD")
this.serverVersion = args[2].split("&")[1];
+ else if (this.serverSoftware === "webAO")
+ this.sendSelf("PN#0#0#%");
else
this.serverVersion = args[3];
@@ -1316,6 +1336,14 @@ class Client extends EventEmitter {
pickEmotion(1);
}
}
+
+ /**
+ * we are asking ourselves what characters there are
+ * @param {Array} args packet arguments
+ */
+ handleaskChaa(_args) {
+ this.onMessage("SC#Phoenix#PhoenixSOJ#Young Mia#Grossberg#%");
+ }
}
class Viewport {