diff options
Diffstat (limited to 'webAO/client')
| -rw-r--r-- | webAO/client/setEmote.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/webAO/client/setEmote.js b/webAO/client/setEmote.js new file mode 100644 index 0000000..16c95be --- /dev/null +++ b/webAO/client/setEmote.js @@ -0,0 +1,43 @@ +import fileExistsSync from '../utils/fileExistsSync'; + +/** + * Sets all the img tags to the right sources + * @param {*} chatmsg + */ + +const setEmote = (AO_HOST, client, charactername, emotename, prefix, pair, side) => { + const pairID = pair ? 'pair' : 'char'; + const characterFolder = `${AO_HOST}characters/`; + const acceptedPositions = ['def', 'pro', 'wit']; + const position = acceptedPositions.includes(side) ? `${side}_` : ''; + + const gif_s = document.getElementById(`client_${position}${pairID}_gif`); + const png_s = document.getElementById(`client_${position}${pairID}_png`); + const apng_s = document.getElementById(`client_${position}${pairID}_apng`); + const webp_s = document.getElementById(`client_${position}${pairID}_webp`); + const extensionsMap = { + '.gif': gif_s, + '.png': png_s, + '.apng': apng_s, + '.webp': webp_s, + }; + + for (const [extension, htmlElement] of Object.entries(extensionsMap)) { + // Hides all sprites before creating a new sprite + if (client.lastChar !== client.chatmsg.name) { + htmlElement.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 = fileExistsSync(url); + if (exists) { + htmlElement.src = url; + return; + } + } +}; +export default setEmote; |
