aboutsummaryrefslogtreecommitdiff
path: root/webAO/client/setEmote.ts
blob: 7e4a1d437a542e4afd4e9565dbd274df13226709 (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
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,
  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;

  for (const extension of client.emote_extensions) {
    // Hides all sprites before creating a new sprite

    if (
      client.viewport.getLastCharacter() !== client.viewport.getChatmsg().name
    ) {
      emoteSelector.src = transparentPng;
    }
    let url;
    if (extension === ".png") {
      url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(
        emotename,
      )}${extension}`;
    } else if (extension === ".webp.static") {
      url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(
        emotename,
      )}.webp`;
    } else {
      url = `${characterFolder}${encodeURI(charactername)}/${encodeURI(
        emotename,
      )}${extension}`;
    }
    const exists = await fileExists(url);
    if (exists) {
      emoteSelector.src = url;
      break;
    }
  }
};
export default setEmote;