import { RdDActor } from "./actor.js"; import { HtmlUtility } from "./html-utility.js"; import { Misc } from "./misc.js"; import { RdDUtility } from "./rdd-utility.js"; export class DialogItemAchat extends Dialog { static async onButtonAcheter(event) { let jsondata = event.currentTarget.attributes['data-jsondata']?.value; if (!jsondata) { ui.notifications.warn("Impossible d'acheter: informations sur l'objet manquantes") return; } const vendeurId = event.currentTarget.attributes['data-actorId']?.value; const vendeur = vendeurId ? game.actors.get(vendeurId) : undefined; const acheteur = RdDUtility.getSelectedActor(); if (!acheteur && !vendeur) { ui.notifications.info("Pas d'acheteur ni de vendeur, aucun changement"); return; } const chatMessageIdVente = RdDUtility.findChatMessageId(event.currentTarget); const itemData = JSON.parse(jsondata); const prixLot = event.currentTarget.attributes['data-prixLot']?.value ?? 0; let venteData = { item: itemData, vendeur: Misc.data(vendeur), acheteur: Misc.data(acheteur), tailleLot: event.currentTarget.attributes['data-tailleLot']?.value ?? 1, quantiteNbLots: event.currentTarget.attributes['data-quantiteNbLots']?.value, nombreLots: 1, prixLot: prixLot, prixTotal: prixLot, isVente: prixLot > 0 }; const html = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/dialog-item-achat.html`, venteData); const dialog = new DialogItemAchat(html, vendeur, acheteur, venteData, chatMessageIdVente); dialog.render(true); } constructor(html, vendeur, acheteur, venteData, chatMessageIdVente) { let options = { classes: ["dialogachat"], width: 400, height: 300, 'z-index': 99999 }; const actionAchat = venteData.prixLot > 0 ? "Acheter" : "Prendre"; let conf = { title: actionAchat, content: html, default: actionAchat, buttons: { [actionAchat]: { label: actionAchat, callback: it => { this.onAchat(); } }, "decliner": { label: "Décliner", callback: it => { } } } }; super(conf, options); this.vendeur = vendeur; this.acheteur = acheteur; this.chatMessageIdVente = chatMessageIdVente; this.venteData = venteData; } async onAchat() { (this.vendeur ?? this.acheteur).achatVente( this.vendeur?.id, this.acheteur?.id, this.venteData, this.chatMessageIdVente ); } /* -------------------------------------------- */ activateListeners(html) { super.activateListeners(html); html.find(".nombreLots").change(event => this.setnombreLots(Number(event.currentTarget.value))); } setnombreLots(nombreLots) { this.venteData.nombreLots = nombreLots; this.venteData.prixTotal = (nombreLots * this.venteData.prixLot).toFixed(2); $(".prixTotal").text(this.venteData.prixTotal); } }