aboutsummaryrefslogtreecommitdiff
path: root/webAO/client/setEmote.ts
diff options
context:
space:
mode:
Diffstat (limited to 'webAO/client/setEmote.ts')
-rw-r--r--webAO/client/setEmote.ts51
1 files changed, 51 insertions, 0 deletions
diff --git a/webAO/client/setEmote.ts b/webAO/client/setEmote.ts
new file mode 100644
index 0000000..1f0de07
--- /dev/null
+++ b/webAO/client/setEmote.ts
@@ -0,0 +1,51 @@
+import Client from "../client";
+import transparentPng from "../constants/transparentPng";
+import fileExists from "../utils/fileExists";
+
+/**
+ * Sets all the img tags to the right sources
+ * @param {*} chatmsg
+ */
+
+const setEmote = async (
+ AO_HOST: string,
+ client: Client,
+ charactername: string,
+ emotename: string,
+ prefix: string,
+ pair: boolean,
+ side: string
+) => {
+ const pairID = pair ? "pair" : "char";
+ const characterFolder = `${AO_HOST}characters/`;
+ const acceptedPositions = ["def", "pro", "wit"];
+ const position = acceptedPositions.includes(side) ? `${side}_` : "";
+ const emoteSelector = document.getElementById(
+ `client_${position}${pairID}_img`
+ ) as HTMLImageElement;
+ const extensionsMap = [".gif", ".png", ".apng", ".webp"];
+
+ for (const extension of extensionsMap) {
+ // Hides all sprites before creating a new sprite
+
+ if (client.viewport.lastChar !== client.viewport.chatmsg.name) {
+ emoteSelector.src = transparentPng;
+ }
+ let url;
+ if (extension === ".png") {
+ url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(
+ emotename
+ )}${extension}`;
+ } else {
+ url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(
+ prefix
+ )}${encodeURI(emotename)}${extension}`;
+ }
+ const exists = await fileExists(url);
+ if (exists) {
+ emoteSelector.src = url;
+ break;
+ }
+ }
+};
+export default setEmote;