#184 Améliorations du commerce #447
@ -963,15 +963,14 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
async processDropItem(event, dragData, objetVersConteneur) {
|
async processDropItem(event, dragData, objetVersConteneur) {
|
||||||
console.log("DRAG", this.id, dragData);
|
console.log("DRAG", this.id, dragData);
|
||||||
const droppedItemId = dragData.id || dragData.data._id;
|
const itemId = dragData.id || dragData.data._id;
|
||||||
if (dragData.actorId && dragData.actorId != this.id) {
|
if (dragData.actorId && dragData.actorId != this.id) {
|
||||||
console.log("Moving objects", dragData);
|
console.log("Moving objects", dragData);
|
||||||
this.moveItemsBetweenActors(droppedItemId, dragData.actorId);
|
this.moveItemsBetweenActors(itemId, dragData.actorId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
let result = true;
|
let result = true;
|
||||||
const destId = $(event.target).parents(".item").attr("data-item-id");
|
const destId = $(event.target).parents(".item").attr("data-item-id");
|
||||||
const itemId = dragData.id || dragData.data._id;
|
|
||||||
const item = this.getObjet(itemId);
|
const item = this.getObjet(itemId);
|
||||||
if (item?.isEquipement()) {
|
if (item?.isEquipement()) {
|
||||||
if (dragData.actorId == this.id) {
|
if (dragData.actorId == this.id) {
|
||||||
@ -1061,7 +1060,7 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
async regrouperEquipementsSimilaires(item, dest) {
|
async regrouperEquipementsSimilaires(item, dest) {
|
||||||
await dest.quantiteIncDec(Misc.templateData(item).quantite);
|
await dest.quantiteIncDec(Misc.templateData(item).quantite);
|
||||||
await this.deleteEmbeddedDocuments('Item', [item.id]);
|
await item.delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -3272,6 +3271,10 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async achatVente(vendeurId, acheteurId, venteData, chatMessageIdVente) {
|
async achatVente(vendeurId, acheteurId, venteData, chatMessageIdVente) {
|
||||||
|
if (vendeurId == acheteurId){
|
||||||
|
ui.notifications.info("Inutile de se vendre à soi-même");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!game.user.isGM) {
|
if (!game.user.isGM) {
|
||||||
RdDActor.remoteActorCall({
|
RdDActor.remoteActorCall({
|
||||||
userId: Misc.connectedGMOrUser(),
|
userId: Misc.connectedGMOrUser(),
|
||||||
@ -3286,7 +3289,6 @@ export class RdDActor extends Actor {
|
|||||||
const itemId = venteData.item._id;
|
const itemId = venteData.item._id;
|
||||||
|
|
||||||
const coutDeniers = Math.floor((venteData.prixTotal ?? 0) * 100);
|
const coutDeniers = Math.floor((venteData.prixTotal ?? 0) * 100);
|
||||||
const achat = duplicate(venteData.item);
|
|
||||||
venteData.quantiteTotal = (venteData.nombreLots ?? 1) * (venteData.tailleLot);
|
venteData.quantiteTotal = (venteData.nombreLots ?? 1) * (venteData.tailleLot);
|
||||||
if (acheteur) {
|
if (acheteur) {
|
||||||
let resteAcheteur = await acheteur.depenser(coutDeniers);
|
let resteAcheteur = await acheteur.depenser(coutDeniers);
|
||||||
@ -3298,15 +3300,15 @@ export class RdDActor extends Actor {
|
|||||||
if (vendeur) {
|
if (vendeur) {
|
||||||
let itemData = Misc.data(vendeur.getObjet(itemId));
|
let itemData = Misc.data(vendeur.getObjet(itemId));
|
||||||
// diminuer QuantiteVendeur
|
// diminuer QuantiteVendeur
|
||||||
if (("quantite" in itemData.data && itemData.data.quantite < venteData.nombreLots)
|
if ("quantite" in itemData.data ?
|
||||||
|| (!("quantite" in itemData.data) && venteData.nombreLots != 1)) {
|
itemData.data.quantite < venteData.quantiteTotal : venteData.nombreLots != 1) {
|
||||||
// pas assez de quantite
|
// pas assez de quantite
|
||||||
await acheteur?.ajouterDeniers(coutDeniers);
|
await acheteur?.ajouterDeniers(coutDeniers);
|
||||||
ui.notifications.warn(`Le vendeur n'a plus assez de ${venteData.item.name} !`);
|
ui.notifications.warn(`Le vendeur n'a plus assez de ${venteData.item.name} !`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vendeur.ajouterDeniers(coutDeniers);
|
vendeur.ajouterDeniers(coutDeniers);
|
||||||
let qtReste = (itemData.data.quantite ?? 1) - venteData.nombreLots;
|
let qtReste = (itemData.data.quantite ?? 1) - venteData.quantiteTotal;
|
||||||
if (qtReste == 0) {
|
if (qtReste == 0) {
|
||||||
vendeur.deleteEmbeddedDocuments("Item", itemId);
|
vendeur.deleteEmbeddedDocuments("Item", itemId);
|
||||||
}
|
}
|
||||||
@ -3316,11 +3318,11 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (acheteur) {
|
if (acheteur) {
|
||||||
// ajouter l'objet à l'acheteur
|
// TODO: achat depuis un compendium
|
||||||
|
const achat = duplicate(Misc.data(vendeur?.getObjet(itemId) ?? game.items.get(itemId)));
|
||||||
|
achat.data.quantite = venteData.quantiteTotal;
|
||||||
achat._id = undefined;
|
achat._id = undefined;
|
||||||
if ("quantite" in achat.data) {
|
// TODO: investigate bug - création marche mal...
|
||||||
achat.data.quantite = venteData.quantiteTotal;
|
|
||||||
}
|
|
||||||
await acheteur.createEmbeddedDocuments("Item", [achat]);
|
await acheteur.createEmbeddedDocuments("Item", [achat]);
|
||||||
}
|
}
|
||||||
if (coutDeniers > 0) {
|
if (coutDeniers > 0) {
|
||||||
@ -3332,11 +3334,11 @@ export class RdDActor extends Actor {
|
|||||||
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', venteData)
|
content: await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-achat-item.html', venteData)
|
||||||
});
|
});
|
||||||
|
|
||||||
venteData.quantiteNbLots -= venteData.nombreLots;
|
if (venteData.quantiteNbLots <= venteData.nombreLots) {
|
||||||
if (venteData.quantiteNbLots <= 0) {
|
|
||||||
ChatUtility.removeChatMessageId(chatMessageIdVente);
|
ChatUtility.removeChatMessageId(chatMessageIdVente);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
venteData.quantiteNbLots -= venteData.nombreLots;
|
||||||
venteData.jsondata = JSON.stringify(venteData.item);
|
venteData.jsondata = JSON.stringify(venteData.item);
|
||||||
let newMessageVente = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', venteData);
|
let newMessageVente = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-vente-item.html', venteData);
|
||||||
const messageVente = game.messages.get(chatMessageIdVente);
|
const messageVente = game.messages.get(chatMessageIdVente);
|
||||||
|
@ -11,7 +11,7 @@ export class DialogItemAchat extends Dialog {
|
|||||||
ui.notifications.warn("Impossible d'acheter: informations sur l'objet manquantes")
|
ui.notifications.warn("Impossible d'acheter: informations sur l'objet manquantes")
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const vendeurId = event.currentTarget.attributes['data-actorId']?.value;
|
const vendeurId = event.currentTarget.attributes['data-vendeurId']?.value;
|
||||||
const vendeur = vendeurId ? game.actors.get(vendeurId) : undefined;
|
const vendeur = vendeurId ? game.actors.get(vendeurId) : undefined;
|
||||||
const acheteur = RdDUtility.getSelectedActor();
|
const acheteur = RdDUtility.getSelectedActor();
|
||||||
|
|
||||||
@ -25,6 +25,7 @@ export class DialogItemAchat extends Dialog {
|
|||||||
const prixLot = event.currentTarget.attributes['data-prixLot']?.value ?? 0;
|
const prixLot = event.currentTarget.attributes['data-prixLot']?.value ?? 0;
|
||||||
let venteData = {
|
let venteData = {
|
||||||
item: itemData,
|
item: itemData,
|
||||||
|
vendeurId: vendeurId,
|
||||||
vendeur: Misc.data(vendeur),
|
vendeur: Misc.data(vendeur),
|
||||||
acheteur: Misc.data(acheteur),
|
acheteur: Misc.data(acheteur),
|
||||||
tailleLot: event.currentTarget.attributes['data-tailleLot']?.value ?? 1,
|
tailleLot: event.currentTarget.attributes['data-tailleLot']?.value ?? 1,
|
||||||
|
@ -8,7 +8,7 @@ export class DialogItemVente extends Dialog {
|
|||||||
const venteData = {
|
const venteData = {
|
||||||
item: itemData,
|
item: itemData,
|
||||||
alias: item.actor?.name ?? game.user.name,
|
alias: item.actor?.name ?? game.user.name,
|
||||||
actorId: item.actor?.id,
|
vendeurId: item.actor?.id,
|
||||||
prixOrigine: itemData.data.cout,
|
prixOrigine: itemData.data.cout,
|
||||||
prixUnitaire: itemData.data.cout,
|
prixUnitaire: itemData.data.cout,
|
||||||
prixLot: itemData.data.cout,
|
prixLot: itemData.data.cout,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="post-item" data-transfer="{{transfer}}">
|
<div class="post-item" data-transfer="{{transfer}}">
|
||||||
<h3>Acheter {{#if alias}}{{alias}} propose: {{/if}}{{item.name}}</h3>
|
<h3>{{#if alias}}{{alias}} propose:{{else}}Acheter {{/if}}{{item.name}}</h3>
|
||||||
{{#if item.img}}
|
{{#if item.img}}
|
||||||
<img src="{{item.img}}" title="{{item.name}}" />
|
<img src="{{item.img}}" title="{{item.name}}" />
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<span class="chat-card-button-area">
|
<span class="chat-card-button-area">
|
||||||
<a class="button-acheter chat-card-button"
|
<a class="button-acheter chat-card-button"
|
||||||
data-jsondata='{{jsondata}}'
|
data-jsondata='{{jsondata}}'
|
||||||
{{#if actorId}}data-actorId='{{actorId}}'{{/if}}
|
{{#if vendeurId}}data-vendeurId='{{vendeurId}}'{{/if}}
|
||||||
data-tailleLot="{{tailleLot}}"
|
data-tailleLot="{{tailleLot}}"
|
||||||
data-quantiteNbLots="{{quantiteNbLots}}"
|
data-quantiteNbLots="{{quantiteNbLots}}"
|
||||||
data-quantiteIllimite="{{#if quantiteIllimite}}true{{else}}false{{/if}}"
|
data-quantiteIllimite="{{#if quantiteIllimite}}true{{else}}false{{/if}}"
|
||||||
|
Loading…
Reference in New Issue
Block a user