From 249850558b956766dd9f8dd4aff571d55952d215 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sat, 22 May 2021 02:03:46 +0200 Subject: [PATCH] =?UTF-8?q?#193:=20utiliser=20isElectedUser=20pour=20les?= =?UTF-8?q?=20d=C3=A9fenses?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Misc.isElectedUser renvoit true pour un seul MJ connecté, ou le joueur connecté s'il n'y a pas de MJ. Ca veut dire que sans MJ, les messages de combat ne marcheront peut-être pas, mais pour tous les autres cas, ça marchera correctement, vu que ce sera toujours un MJ qui postera le message de défense au joueur (connecté ou pas) et au MJ --- module/chat-utility.js | 23 ++++++++++------------- module/rdd-combat.js | 22 +++++++++------------- 2 files changed, 19 insertions(+), 26 deletions(-) diff --git a/module/chat-utility.js b/module/chat-utility.js index b4ac3414..646088b6 100644 --- a/module/chat-utility.js +++ b/module/chat-utility.js @@ -1,3 +1,4 @@ +import { Misc } from "./misc"; /** * Class providing helper methods to get the list of users, and @@ -7,31 +8,27 @@ export class ChatUtility { /* -------------------------------------------- */ static onSocketMessage(sockmsg) { switch (sockmsg.msg) { - case "msg_delete_chat_message": return ChatUtility.onRemoveMessages(sockmsg.part, sockmsg.gmId); + case "msg_delete_chat_message": return ChatUtility.onRemoveMessages(sockmsg.part); } } /* -------------------------------------------- */ - static onRemoveMessages(part, gmId) { - if (game.user._id == gmId) { + static onRemoveMessages(part) { + if (Misc.isElectedUser()) { const toDelete = game.messages.filter(it => it.data.content.includes(part)); toDelete.forEach(it => it.delete()); } } - + /* -------------------------------------------- */ static removeChatMessageContaining(part) { - const gmId = game.user.isGM ? game.user._id : game.users.entities.find(u => u.isGM && u.active)?.id; - - if (!gmId || game.user.isGM) { - ChatUtility.onRemoveMessages(part, game.user._id); + if (Misc.isElectedUser()) { + ChatUtility.onRemoveMessages(part); } else { game.socket.emit("system.foundryvtt-reve-de-dragon", { - msg: "msg_delete_chat_message", data: { - part:part, - gmId: gmId, - }}); + msg: "msg_delete_chat_message", data: { part: part } + }); } } @@ -108,5 +105,5 @@ export class ChatUtility { ChatMessage.create(data); } } - + } diff --git a/module/rdd-combat.js b/module/rdd-combat.js index 49b948d0..2f8a124b 100644 --- a/module/rdd-combat.js +++ b/module/rdd-combat.js @@ -395,9 +395,8 @@ export class RdDCombat { /* -------------------------------------------- */ static combatNouveauTour(combat) { - let turn = combat.turns.find(t => t.tokenId == combat.current.tokenId); - if (game.user.isGM) { - // seul le GM notifie le status + if (Misc.isElectedUser()) { + let turn = combat.turns.find(t => t.tokenId == combat.current.tokenId); this.displayActorCombatStatus(combat, turn.actor); // TODO Playaudio for player?? } @@ -482,17 +481,15 @@ export class RdDCombat { /* -------------------------------------------- */ static onMsgEncaisser(data) { - let attackerRoll = RdDCombat._getAttaque(data.attackerId); // Retrieve the rolldata from the store - - if (game.user.id === data.gmId) { // Seul le GM effectue l'encaissement sur la fiche + if (Misc.isElectedUser()) { + let attackerRoll = RdDCombat._getAttaque(data.attackerId); // Retrieve the rolldata from the store let attacker = data.attackerId ? game.actors.get(data.attackerId) : null; let defender = canvas.tokens.get(data.defenderTokenId).actor; defender.encaisserDommages(attackerRoll, attacker); + RdDCombat._deleteDefense(attackerRoll.passeArme); + RdDCombat._deleteAttaque(data.attackerId); } - - RdDCombat._deleteDefense(attackerRoll.passeArme); - RdDCombat._deleteAttaque(data.attackerId); } /* -------------------------------------------- */ @@ -503,7 +500,7 @@ export class RdDCombat { ui.notifications.error("Le joueur " + game.user.name + " n'est connecté à aucun personnage. Impossible de continuer."); return; } - if ((game.user.isGM && !defenderToken.actor.hasPlayerOwner) || (defenderToken.actor.hasPlayerOwner && (game.user.character?._id == defenderToken.actor.data._id))) { + if (Misc.isElectedUser()) { const rddCombat = RdDCombat.createForAttackerAndDefender(msg.attackerId, msg.defenderTokenId); if (rddCombat) { const defenderRoll = msg.defenderRoll; @@ -825,8 +822,7 @@ export class RdDCombat { dmg: attackerRoll.dmg, }; - const selfMessage = essaisPrecedents != undefined; - if (!selfMessage && (!game.user.isGM || this.defender.hasPlayerOwner)) { + if (!Misc.isElectedUser()) { this._socketSendMessageDefense(paramChatDefense, defenderRoll); } else { @@ -1203,7 +1199,7 @@ export class RdDCombat { this._onEchecTotal(defenderRoll); } - if (game.user.isGM) { // Current user is the GM -> direct access + if (Misc.isElectedUser()) { attackerRoll.attackerId = this.attackerId; attackerRoll.defenderTokenId = defenderTokenId;