43 lines
1.7 KiB
JavaScript
43 lines
1.7 KiB
JavaScript
/**
|
||
* Chroniques de l'Étrange — Système FoundryVTT
|
||
*
|
||
* Chroniques de l'Étrange est un jeu de rôle édité par Antre-Monde Éditions.
|
||
* Ce système FoundryVTT est une implémentation indépendante et n'est pas
|
||
* affilié à Antre-Monde Éditions,
|
||
* mais a été réalisé avec l'autorisation d'Antre-Monde Éditions.
|
||
*
|
||
* @author LeRatierBretonnien
|
||
* @copyright 2024–2026 LeRatierBretonnien
|
||
* @license CC BY-NC-SA 4.0 – https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||
*/
|
||
|
||
export class CDEMessage extends ChatMessage {
|
||
async renderHTML({ canDelete, canClose = false, ...rest } = {}) {
|
||
const html = await super.renderHTML({ canDelete, canClose, ...rest })
|
||
this.#enrichChatCard(html)
|
||
return html
|
||
}
|
||
|
||
#enrichChatCard(html) {
|
||
const tokenDoc = (this.speaker.scene && this.speaker.token)
|
||
? game.scenes.get(this.speaker.scene)?.tokens.get(this.speaker.token)
|
||
: null
|
||
const actor = tokenDoc?.actor ?? game.actors.get(this.speaker.actor) ?? null
|
||
|
||
const [img, nameText] = this.isContentVisible
|
||
? [actor?.img ?? this.author.avatar, this.alias]
|
||
: [this.author.avatar, this.author.name]
|
||
|
||
const avatarImg = Object.assign(document.createElement("img"), { src: img, alt: nameText })
|
||
const avatar = Object.assign(document.createElement("a"), { className: "avatar" })
|
||
if (actor) avatar.dataset.uuid = actor.uuid
|
||
avatar.append(avatarImg)
|
||
|
||
const title = Object.assign(document.createElement("span"), { className: "title", textContent: nameText })
|
||
const name = Object.assign(document.createElement("span"), { className: "name-stacked" })
|
||
name.append(title)
|
||
|
||
html.querySelector(".message-sender")?.replaceChildren(avatar, name)
|
||
}
|
||
}
|