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) } }