Vincent Vandemeulebrouck
0b1c5d0a3d
- remplacement des données/JSON dans le html par des Flags sur le ChatMessage - extraction de la gestion des infos de ventes pour rassembler la génération du ChatMessage - on ne perd plus la quantité ou le vendeur - attention au mergeObject: il modifie le premier parametre, ce qui modifiait parfois l'acteur (!!!) et toujours la quantité de l'objet du vendeur lors de la création de l'objet de l'acheteur!
70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
import { SYSTEM_RDD } from "../constants.js";
|
|
import { RdDUtility } from "../rdd-utility.js";
|
|
|
|
const DETAIL_VENTE = 'detailVente';
|
|
const NB_LOTS = 'nbLotss';
|
|
|
|
export class ChatVente {
|
|
|
|
static getDetailVente(chatMessageId) {
|
|
const chatMessage = game.messages.get(chatMessageId)
|
|
if (!chatMessage) {
|
|
return undefined;
|
|
}
|
|
const nbLots = chatMessage.getFlag(SYSTEM_RDD, NB_LOTS)
|
|
const detail = foundry.utils.duplicate(chatMessage.getFlag(SYSTEM_RDD, DETAIL_VENTE))
|
|
if (!detail.item) {
|
|
ui.notifications.warn("Impossible d'acheter: informations sur l'objet manquantes")
|
|
return undefined;
|
|
}
|
|
|
|
const vendeur = detail.vendeurId ? game.actors.get(detail.vendeurId) : undefined;
|
|
return foundry.utils.mergeObject(detail,
|
|
{
|
|
alias: vendeur?.name ?? game.user.name,
|
|
vendeur,
|
|
nbLots: nbLots,
|
|
chatMessageIdVente: chatMessageId
|
|
})
|
|
}
|
|
|
|
static getDetailAchatVente(chatMessageId) {
|
|
const acheteur = RdDUtility.getSelectedActor()
|
|
const detail = ChatVente.getDetailVente(chatMessageId)
|
|
if (!acheteur && !detail.vendeur) {
|
|
ui.notifications.info("Pas d'acheteur ni de vendeur, aucun changement");
|
|
return undefined;
|
|
}
|
|
return foundry.utils.mergeObject(detail, { acheteur })
|
|
}
|
|
|
|
|
|
static async setDetailAchatVente(chatMessage, vente) {
|
|
await chatMessage?.setFlag(SYSTEM_RDD, NB_LOTS, vente.nbLots)
|
|
await chatMessage?.setFlag(SYSTEM_RDD, DETAIL_VENTE, {
|
|
item: vente.item,
|
|
properties: vente.item.getProprietes(),
|
|
vendeurId: vente.vendeurId,
|
|
tailleLot: vente.tailleLot,
|
|
quantiteIllimite: vente.quantiteIllimite,
|
|
prixLot: vente.prixLot
|
|
})
|
|
}
|
|
|
|
static async diminuerQuantite(chatMessageId, quantite) {
|
|
const chatMessage = game.messages.get(chatMessageId)
|
|
const vente = ChatVente.getDetailVente(chatMessageId)
|
|
vente.nbLots = Math.max(0, vente.nbLots - quantite)
|
|
await chatMessage?.setFlag(SYSTEM_RDD, NB_LOTS, vente.nbLots)
|
|
|
|
const html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', vente);
|
|
chatMessage.update({ content: html });
|
|
chatMessage.render(true);
|
|
}
|
|
|
|
static async displayAchatVente(venteData) {
|
|
const html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', venteData);
|
|
const chatMessage = await ChatMessage.create(RdDUtility.chatDataSetup(html))
|
|
await ChatVente.setDetailAchatVente(chatMessage, venteData)
|
|
}
|
|
} |