From 744412bf9f5cf9ae31806b7467d7c7fecdcf15b9 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Mon, 25 Aug 2025 21:44:29 +0200 Subject: [PATCH] Added hover functionality to adversary damage cards --- module/documents/chatMessage.mjs | 35 +++++++++++++++++++++++++ styles/less/ui/chat/damage-summary.less | 5 +++- templates/ui/chat/damageSummary.hbs | 2 +- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/module/documents/chatMessage.mjs b/module/documents/chatMessage.mjs index 89afbb61..e04341b5 100644 --- a/module/documents/chatMessage.mjs +++ b/module/documents/chatMessage.mjs @@ -131,6 +131,41 @@ export default class DhpChatMessage extends foundry.documents.ChatMessage { html.querySelectorAll('.button-target-selection').forEach(element => { element.addEventListener('click', this.onTargetSelection.bind(this)); }); + + html.querySelectorAll('.token-target-container').forEach(element => { + element.addEventListener('pointerover', this._onTokenTargetHoverIn.bind(this)); + element.addEventListener('pointerout', this._onTokenTargetHoverOut.bind(this)); + element.addEventListener('click', this._onTokenTargetClick.bind(this)); + }); + } + + async _onTokenTargetHoverIn(event) { + const { tokenUuid } = event.target.dataset; + if (!canvas.ready || !tokenUuid) return; + + const token = await foundry.utils.fromUuid(tokenUuid); + if (token?.object && token.object._canHover(game.user, event) && token.object.visible) { + token.object._onHoverIn(event, { hoverOutOthers: true }); + } + } + + async _onTokenTargetHoverOut(event) { + const { tokenUuid } = event.target.dataset; + if (!canvas.ready || !tokenUuid) return; + + const token = await foundry.utils.fromUuid(tokenUuid); + if (token?.object) token.object._onHoverOut(event); + } + + async _onTokenTargetClick(event) { + const { tokenUuid } = event.target.dataset; + if (!canvas.ready || !tokenUuid) return; + + const token = await foundry.utils.fromUuid(tokenUuid); + if (token?.object) { + const { _x: x, _y: y } = token.object.position; + game.canvas.pan({ x, y }); + } } getTargetList() { diff --git a/styles/less/ui/chat/damage-summary.less b/styles/less/ui/chat/damage-summary.less index 10da88ce..5b3fadac 100644 --- a/styles/less/ui/chat/damage-summary.less +++ b/styles/less/ui/chat/damage-summary.less @@ -3,18 +3,20 @@ grid-template-columns: 1fr 1fr; gap: 4px; - .target-container { + .token-target-container { display: flex; flex-direction: column; gap: 2px; border: 1px solid light-dark(@dark-blue, @golden); border-radius: 6px; + cursor: pointer; header { display: flex; align-items: center; gap: 2px; border-bottom: 1px solid light-dark(@dark-blue, @golden); + pointer-events: none; img { flex: 0; @@ -35,6 +37,7 @@ flex-direction: column; justify-content: center; gap: 2px; + pointer-events: none; .damage-row { display: flex; diff --git a/templates/ui/chat/damageSummary.hbs b/templates/ui/chat/damageSummary.hbs index 0677f234..902594f3 100644 --- a/templates/ui/chat/damageSummary.hbs +++ b/templates/ui/chat/damageSummary.hbs @@ -1,6 +1,6 @@
{{#each targets}} -
+