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