filtrage des chat events selon gm ou user
This commit is contained in:
@@ -30,12 +30,16 @@ export const registerHooks = function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
await initUserDice(dice3d);
|
game.users.forEach(user => initUserDice(dice3d, user));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Hooks.on('renderChatMessage', async (message, html, data) => {
|
Hooks.on('renderChatMessage', async (message, html, data) => {
|
||||||
if (message.user._id != game.user._id) { return }
|
if (message.user._id != game.user._id || !game.user.isGM) {
|
||||||
|
html[0].querySelectorAll("input").forEach(inp => inp.disabled = true);
|
||||||
|
html[0].querySelectorAll("div.reroll-from-effort").forEach(el => el.style.display = "none")
|
||||||
|
return
|
||||||
|
}
|
||||||
await VermineUtils.chatListenners(html)
|
await VermineUtils.chatListenners(html)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
+25
-17
@@ -43,8 +43,11 @@ export class VermineUtils {
|
|||||||
|
|
||||||
// Création du jet de dés
|
// Création du jet de dés
|
||||||
let roll = new Roll(formula, actor.getRollData());
|
let roll = new Roll(formula, actor.getRollData());
|
||||||
|
//effectuer le lancé
|
||||||
await roll.evaluate();
|
await roll.evaluate();
|
||||||
|
//afficher le lancer 3d
|
||||||
await VermineUtils.showDiceSoNice(roll);
|
await VermineUtils.showDiceSoNice(roll);
|
||||||
|
// afficher le résultat dans le chat
|
||||||
VermineUtils.diplayChatRoll(roll, ...arguments);
|
VermineUtils.diplayChatRoll(roll, ...arguments);
|
||||||
return roll;
|
return roll;
|
||||||
}
|
}
|
||||||
@@ -54,9 +57,9 @@ export class VermineUtils {
|
|||||||
* @param {Object} message - Le message contenant l'événement de relance
|
* @param {Object} message - Le message contenant l'événement de relance
|
||||||
* @param {Object} ev - L'événement de relance
|
* @param {Object} ev - L'événement de relance
|
||||||
*/
|
*/
|
||||||
static async _onRerollSelect(message, ev) {
|
static async onReroll(message, ev) {
|
||||||
// Vérification de l'utilisateur
|
// Vérification de l'utilisateur
|
||||||
if (game.user._id != message.user._id) {
|
if (game.user._id != message.user._id || !game.user.isGM) {
|
||||||
ui.notifications.warn('vous ne pouvez pas relancer un dés sur ce jet')
|
ui.notifications.warn('vous ne pouvez pas relancer un dés sur ce jet')
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -110,6 +113,8 @@ export class VermineUtils {
|
|||||||
// Création et évaluation du jet de dés de relance
|
// Création et évaluation du jet de dés de relance
|
||||||
let reroll = await new Roll(formula);
|
let reroll = await new Roll(formula);
|
||||||
await reroll.evaluate();
|
await reroll.evaluate();
|
||||||
|
|
||||||
|
//afficher les dés 3d
|
||||||
await VermineUtils.showDiceSoNice(reroll);
|
await VermineUtils.showDiceSoNice(reroll);
|
||||||
// mise à jour de l'affichage du dés
|
// mise à jour de l'affichage du dés
|
||||||
console.log(reroll)
|
console.log(reroll)
|
||||||
@@ -137,37 +142,51 @@ export class VermineUtils {
|
|||||||
* @param {HTMLElement} html - L'élément HTML contenant les événements de chat
|
* @param {HTMLElement} html - L'élément HTML contenant les événements de chat
|
||||||
*/
|
*/
|
||||||
static async chatListenners(html) {
|
static async chatListenners(html) {
|
||||||
|
// Récupérer le nombre de relances autorisées
|
||||||
let reroll = html.find('#allowed_reroll')[0]?.innerText;
|
let reroll = html.find('#allowed_reroll')[0]?.innerText;
|
||||||
|
// Vérifier s'il n'y a pas de relances ou si le nombre est inférieur à 1
|
||||||
if (!reroll || parseInt(reroll) < 1) {
|
if (!reroll || parseInt(reroll) < 1) {
|
||||||
|
// Désactiver les relances pour chaque dé
|
||||||
for (let die of html.find('.die')) {
|
for (let die of html.find('.die')) {
|
||||||
die.classList.remove("rerollable")
|
die.classList.remove("rerollable")
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
// Activer les relances pour chaque dé
|
||||||
for (let die of html.find('.die')) {
|
for (let die of html.find('.die')) {
|
||||||
die.classList.add("rerollable")
|
die.classList.add("rerollable")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ajouter un événement de clic pour les dés pouvant être relancés
|
||||||
html.find('.rerollable').click(async (ev) => {
|
html.find('.rerollable').click(async (ev) => {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
// Récupérer l'ID du message
|
||||||
let msgId = ev.currentTarget.closest("li.message").dataset.messageId;
|
let msgId = ev.currentTarget.closest("li.message").dataset.messageId;
|
||||||
|
// Récupérer le message correspondant à l'ID
|
||||||
let message = await game.messages.get(msgId);
|
let message = await game.messages.get(msgId);
|
||||||
await VermineUtils._onRerollSelect(message, ev);
|
// Appeler la fonction onReroll de VermineUtils
|
||||||
|
await VermineUtils.onReroll(message, ev);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Mettre à jour l'étiquette en fonction de la valeur sélectionnée
|
||||||
html.find("#effort-reroll").change(ev => {
|
html.find("#effort-reroll").change(ev => {
|
||||||
let label = html.find("#granted-reroll")[0]
|
let label = html.find("#granted-reroll")[0]
|
||||||
label.innerText = ev.currentTarget.value
|
label.innerText = ev.currentTarget.value
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Ajouter un événement de clic pour accorder une relance
|
||||||
html.find("button.grant-reroll").click(async (ev) => {
|
html.find("button.grant-reroll").click(async (ev) => {
|
||||||
|
// Mettre à jour le nombre de relances autorisées
|
||||||
html.find("#allowed_reroll")[0].innerText = html.find('#granted-reroll')[0].innerText
|
html.find("#allowed_reroll")[0].innerText = html.find('#granted-reroll')[0].innerText
|
||||||
let mesEl = ev.currentTarget.closest('[data-message-id]')
|
let mesEl = ev.currentTarget.closest('[data-message-id]')
|
||||||
let messageId = mesEl.dataset.messageId;
|
let messageId = mesEl.dataset.messageId;
|
||||||
ev.currentTarget.closest('.reroll-from-effort').style.display="none"
|
// Quand relance accorder masquer la zone pour accorder les relances
|
||||||
|
ev.currentTarget.closest('.reroll-from-effort').style.display = "none"
|
||||||
let content = ev.currentTarget.closest(".vermine-roll-message").outerHTML;
|
let content = ev.currentTarget.closest(".vermine-roll-message").outerHTML;
|
||||||
|
// Mettre à jour le contenu du message avec la relance accordée
|
||||||
let message = await game.messages.get(messageId);
|
let message = await game.messages.get(messageId);
|
||||||
await message.update({ content: content });
|
await message.update({ content: content });
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -176,7 +195,6 @@ export class VermineUtils {
|
|||||||
* @param {string} rollMode - Le mode d'affichage du jet de dés
|
* @param {string} rollMode - Le mode d'affichage du jet de dés
|
||||||
*/
|
*/
|
||||||
static async showDiceSoNice(roll, rollMode) {
|
static async showDiceSoNice(roll, rollMode) {
|
||||||
if (game.modules.get("dice-so-nice")?.active) {
|
|
||||||
if (game.dice3d) {
|
if (game.dice3d) {
|
||||||
let whisper = null;
|
let whisper = null;
|
||||||
let blind = false;
|
let blind = false;
|
||||||
@@ -196,18 +214,8 @@ export class VermineUtils {
|
|||||||
}
|
}
|
||||||
await game.dice3d.showForRoll(roll, game.user, true, whisper, blind);
|
await game.dice3d.showForRoll(roll, game.user, true, whisper, blind);
|
||||||
}
|
}
|
||||||
|
else { return false }
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Méthode pour récupérer un jet de dés à partir d'un message
|
|
||||||
* @param {string} messageId - L'identifiant du message contenant le jet de dés
|
|
||||||
*/
|
|
||||||
static async getRollFromMessage(messageId) {
|
|
||||||
let message = await game.messages.get(messageId);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Méthode pour afficher un jet de dés dans le chat
|
* Méthode pour afficher un jet de dés dans le chat
|
||||||
|
|||||||
Reference in New Issue
Block a user