forked from public/foundryvtt-reve-de-dragon
		
	Ecole de commerce
This commit is contained in:
		
							
								
								
									
										86
									
								
								module/dialog-item-achat.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								module/dialog-item-achat.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| 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); | ||||
|   } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user