import { RdDUtility } from "./rdd-utility.js"; /* -------------------------------------------- */ export class RdDItem extends Item { /* -------------------------------------------- */ async postItem() { console.log(this); const properties = this[`_${this.data.type}ChatData`](); let chatData = duplicate(this.data); chatData["properties"] = properties //Check if the posted item should have availability/pay buttons chatData.hasPrice = "cout" in chatData.data; chatData.data.cout_deniers = 0; let dialogResult = [-1, -1]; // dialogResult[0] = quantité, dialogResult[1] = prix if (chatData.hasPrice ) { let sols = chatData.data.cout; chatData.data.cout_deniers = Math.floor(sols * 100); dialogResult = await new Promise( (resolve, reject) => {new Dialog({ content : `

Modifier la quantité?

Modifier la prix?

`, title : "Quantité & Prix", buttons : { post : { label : "Soumettre", callback: (dlg) => { resolve( [ dlg.find('[name="quantity"]').val(), dlg.find('[name="price"]').val() ] ) } }, } }).render(true) }) } if (dialogResult[0] > 0) { if (this.isOwned) { if (this.data.data.quantite == 0) dialogResult[0] = -1 else if (this.data.data.quantite < dialogResult[0]) { dialogResult[0] = this.data.data.quantite; ui.notifications.notify(`Impossible de poster plus que ce que vous avez. La quantité à été réduite à ${dialogResult[0]}.`) this.update({"data.quantite" : 0}) } else { ui.notifications.notify(`Quantité réduite par ${dialogResult[0]}.`) this.update({"data.quantite" : this.data.data.quantite - dialogResult[0]}) } } } if ( chatData.hasPrice ) { if (dialogResult[0] > 0) chatData.postQuantity = Number(dialogResult[0]); if (dialogResult[1] > 0) { chatData.postPrice = dialogResult[1]; chatData.data.cout_deniers = Math.floor(dialogResult[1] * 100); // Mise à jour cout en deniers } chatData.finalPrice = Number(chatData.postPrice) * Number(chatData.postQuantity); chatData.data.cout_deniers_total = chatData.data.cout_deniers * Number(chatData.postQuantity); chatData.data.quantite = chatData.postQuantity; console.log("POST : ", chatData.finalPrice, chatData.data.cout_deniers_total, chatData.postQuantity); } // Don't post any image for the item (which would leave a large gap) if the default image is used if (chatData.img.includes("/blank.png")) chatData.img = null; // JSON object for easy creation chatData.jsondata = JSON.stringify( { compendium : "postedItem", payload: this.data, }); renderTemplate('systems/foundryvtt-reve-de-dragon/templates/post-item.html', chatData).then(html => { let chatOptions = RdDUtility.chatDataSetup(html); ChatMessage.create(chatOptions) }); } /* -------------------------------------------- */ _objetChatData() { const data = duplicate(this.data.data); let properties = [ `Encombrement: ${data.encombrement}` ] return properties; } /* -------------------------------------------- */ _armeChatData() { const data = duplicate(this.data.data); let properties = [ `Compétence: ${data.competence}`, `Dommages: ${data.dommages}`, `Force minimum: ${data.force}`, `Resistance: ${data.resistance}`, `Encombrement: ${data.encombrement}` ] return properties; } /* -------------------------------------------- */ _conteneurChatData() { const data = duplicate(this.data.data); let properties = [ `Capacité: ${data.capacite} Enc.`, `Encombrement: ${data.encombrement}` ] return properties; } /* -------------------------------------------- */ _munitionChatData() { const data = duplicate(this.data.data); let properties = [ `Encombrement: ${data.encombrement}` ] return properties; } /* -------------------------------------------- */ _armureChatData() { const data = duplicate(this.data.data); let properties = [ `Protection: ${data.protection}`, `Détérioration: ${data.deterioration}`, `Malus armure: ${data.malus}`, `Encombrement: ${data.encombrement}` ] return properties; } /* -------------------------------------------- */ _competenceChatData() { const data = duplicate(this.data.data); let properties = [ `Catégorie: ${data.categorie}`, `Niveau: ${data.niveau}`, `Caractéristique par défaut: ${data.carac_defaut}`, `XP: ${data.xp}` ] return properties; } /* -------------------------------------------- */ _competencecreatureChatData() { const data = duplicate(this.data.data); let properties = [ `Catégorie: ${data.categorie}`, `Niveau: ${data.niveau}`, `Caractéristique: ${data.carac_value}`, `XP: ${data.xp}` ] return properties; } /* -------------------------------------------- */ _sortChatData() { const data = duplicate(this.data.data); let properties = [ `Draconic: ${data.draconic}`, `Difficulté: ${data.difficulte}`, `Case TMR: ${data.caseTMR}`, `Points de Rêve: ${data.ptreve}` ] return properties; } /* -------------------------------------------- */ _herbeChatData() { const data = duplicate(this.data.data); let properties = [ `Milieu: ${data.milieu}`, `Rareté: ${data.rarete}`, `Catégorie: ${data.categorie}`, ] return properties; } /* -------------------------------------------- */ _ingredientChatData() { const data = duplicate(this.data.data); let properties = [ `Milieu: ${data.milieu}`, `Rareté: ${data.rarete}`, `Catégorie: ${data.categorie}`, ] return properties; } /* -------------------------------------------- */ _tacheChatData() { const data = duplicate(this.data.data); let properties = [ `Caractéristique: ${data.carac}`, `Compétence: ${data.competence}`, `Périodicité: ${data.periodicite}`, `Fatigue: ${data.fatigue}`, `Difficulté: ${data.difficulte}`, `Points de Tâche: ${data.points_de_tache}`, `Points de Tâche atteints: ${data.points_de_tache_courant}` ] return properties; } /* -------------------------------------------- */ _livreChatData() { const data = duplicate(this.data.data); let properties = [ `Compétence: ${data.competence}`, `Auteur: ${data.auteur}`, `Difficulté: ${data.difficulte}`, `Points de Tâche: ${data.points_de_tache}`, `Encombrement: ${data.encombrement}` ] return properties; } /* -------------------------------------------- */ _potionChatData() { const data = duplicate(this.data.data); let properties = [ `Rareté: ${data.rarete}`, `Catégorie: ${data.categorie}`, `Encombrement: ${data.encombrement}`, ] return properties; } /* -------------------------------------------- */ _queueChatData() { const data = duplicate(this.data.data); let properties = [ `Refoulement: ${data.refoulement}` ] return properties; } /* -------------------------------------------- */ _ombreChatData() { const data = duplicate(this.data.data); let properties = [ `Refoulement: ${data.refoulement}` ] return properties; } /* -------------------------------------------- */ _souffleChatData() { const data = duplicate(this.data.data); let properties = []; return properties; } /* -------------------------------------------- */ _teteChatData() { const data = duplicate(this.data.data); let properties = []; return properties; } /* -------------------------------------------- */ _tarotChatData() { const data = duplicate(this.data.data); let properties = [ `Concept: ${data.concept}`, `Aspect: ${data.aspect}`, ] return properties; } /* -------------------------------------------- */ _nombreastralChatData() { const data = duplicate(this.data.data); let properties = [ `Valeur: ${data.value}`, `Jour: ${data.jourlabel}`, ] return properties; } /* -------------------------------------------- */ _monnaieChatData() { const data = duplicate(this.data.data); let properties = [ `Valeur en Deniers: ${data.valeur_deniers}`, `Encombrement: ${data.encombrement}` ] return properties; } /* -------------------------------------------- */ _meditationChatData() { const data = duplicate(this.data.data); let properties = [ `Thème: ${data.theme}`, `Compétence: ${data.competence}`, `Support: ${data.support}`, `Heure: ${data.heure}`, `Purification: ${data.purification}`, `Vêture: ${data.veture}`, `Comportement: ${data.comportement}`, `Case TMR: ${data.tmr}` ] return properties; } /* -------------------------------------------- */ _casetmrChatData() { const data = duplicate(this.data.data); let properties = [ `Coordonnée: ${data.coord}`, `Spécificité: ${data.specific}` ] return properties; } }