From ee42bdcf83d48653b3f4bd04dd3df6cba2522c07 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Sun, 1 Jan 2023 22:21:30 +0100 Subject: [PATCH] Ajout d'un Actor commerce --- icons/services/bacquet-eau.webp | Bin 0 -> 8298 bytes .../services.webp => services/commerce.webp} | Bin icons/services/compagnie.webp | Bin 0 -> 6582 bytes icons/services/lit.webp | Bin 0 -> 7202 bytes icons/services/paiement.webp | Bin 0 -> 5260 bytes lang/fr.json | 1 + module/actor/commerce-sheet.js | 68 +++++++++++++++++ module/actor/commerce.js | 48 ++++++++++++ module/item.js | 2 +- module/rdd-main.js | 4 + module/rdd-utility.js | 21 +++--- template.json | 6 +- templates/actor/commerce-actor-sheet.html | 71 ++++++++++++++++++ templates/actor/commerce-inventaire-item.html | 49 ++++++++++++ templates/actor/commerce-inventaire.html | 35 +++++++++ templates/actor/inventaire.html | 4 +- templates/item-service-sheet.html | 33 -------- 17 files changed, 296 insertions(+), 46 deletions(-) create mode 100644 icons/services/bacquet-eau.webp rename icons/{items/services.webp => services/commerce.webp} (100%) create mode 100644 icons/services/compagnie.webp create mode 100644 icons/services/lit.webp create mode 100644 icons/services/paiement.webp create mode 100644 module/actor/commerce-sheet.js create mode 100644 module/actor/commerce.js create mode 100644 templates/actor/commerce-actor-sheet.html create mode 100644 templates/actor/commerce-inventaire-item.html create mode 100644 templates/actor/commerce-inventaire.html diff --git a/icons/services/bacquet-eau.webp b/icons/services/bacquet-eau.webp new file mode 100644 index 0000000000000000000000000000000000000000..a8546ed391afd530d8afc413d5aebb24d0a70415 GIT binary patch literal 8298 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 literal 0 HcmV?d00001 diff --git a/icons/services/paiement.webp b/icons/services/paiement.webp new file mode 100644 index 0000000000000000000000000000000000000000..68d1f88787ac6d6640b731819f1bb62e63e35981 GIT binary patch literal 5260 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 zυ_(cr)xN0vC-*^5{5$Mp6jE?0}zNhN15o$H2>Wi7U`QE2K*8D$%4`_fO z;r6dZPUfPz^w@$lhQSi&{iUs}XX(Sd>=Zy^{RNj!ld$E9Su(0U_-Q}6z9jW466AHY zfT08Xm^gb~Yu)@9YiH}a?unf7j!M@)?oS?*3>So&5qY%n7*>~1mVf}1R> zzIzU`@ro%GYx1Ph$)LoZZ8jsa-zqnHcJxX^k8{&Zh`odCqGV@5PzT%SUTi5#v%r); zG^P{fNITzqpV|=edXngyy8!L6Gl!A9wU9nt-LsnEPqsfN+1R)WYbf{GWlpq0>q<0J zJ|P@9S0aaH2_(ZIRY4#efcv$Jq4XP&(#MtyY=##>mazhx9mP12PPXcCG8sf!Mz0yy z7!4vR>11Mp{6FN>!rV%KeWi5|}{SF}z@8tGABrg9g&TcbhChL3m|x!vdSZS@??M zPn~31(-uSangj+Qnq}FUDztP0tq_oT8LVX+pMx2ke{jCCqO0G$JbmFXt!lAH{V3SJ z{(hl0Yawxsp0=YYY1)8E<(dD&%*_v4={_ISuB%3NcP3~0QH#b$SvY%Geqx7#s_8Hm zKZS9#8D+`>geVm;1~H$_BpbWJ*pFEItX(aK)6oCT&h^XhE?QiRinJ`RLj}^1>@pV3 zUjJ)2sfF3?=y%3l_aohty4p^zmCU`)>W?dj2}`+L17|Ik=O}D0^H$o)^xpV`#V#vT K7tl{t2=FfeC1e}` literal 0 HcmV?d00001 diff --git a/lang/fr.json b/lang/fr.json index 36819273..8fa8f3fd 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -3,6 +3,7 @@ "TypePersonnage": "Personnage", "TypeCreature": "Créature", "TypeEntite": "Entité de cauchemar", + "TypeCommerce": "Commerce", "TypeVehicule": "Véhicule" }, "ITEM": { diff --git a/module/actor/commerce-sheet.js b/module/actor/commerce-sheet.js new file mode 100644 index 00000000..e1bbb08d --- /dev/null +++ b/module/actor/commerce-sheet.js @@ -0,0 +1,68 @@ +import { DialogItemAchat } from "../dialog-item-achat.js"; +import { RdDItem } from "../item.js"; +import { RdDSheetUtility } from "../rdd-sheet-utility.js"; +import { RdDUtility } from "../rdd-utility.js"; +import { RdDBaseActorSheet } from "./base-actor-sheet.js"; + +/** + * Extend the basic ActorSheet with some very simple modifications + * @extends {ActorSheet} + */ +export class RdDCommerceSheet extends RdDBaseActorSheet { + + /** @override */ + static get defaultOptions() { + return mergeObject(super.defaultOptions, { + classes: ["rdd", "sheet", "actor"], + template: "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-actor-sheet.html", + width: 600, + height: 720, + tabs: [], + dragDrop: [{ dragSelector: ".item-list .item", dropSelector: undefined }] + }); + } + + /* -------------------------------------------- */ + /** @override */ + activateListeners(html) { + super.activateListeners(html); + + this.html.find('a.item-acheter').click(async event => await this.vente(this.getItem(event))); + + if (!this.options.editable) return; + + this.html.find('a.item-quantite-moins').click(async event => await this.getItem(event)?.quantiteIncDec(-1, { supprimerSiZero: false})); + this.html.find('a.item-quantite-plus').click(async event => await this.getItem(event)?.quantiteIncDec(1)); + this.html.find('input.item-quantite').change(async event => { + const newQuantite = Math.max(0, Number.parseInt(this.html.find(event.currentTarget).val())); + await this.getItem(event)?.update({ "system.quantite": newQuantite }); + }) + this.html.find('input.item-cout').change(async event => { + const newCout = Math.max(0, Number(this.html.find(event.currentTarget).val())); + await this.getItem(event)?.update({ "system.cout": newCout }); + }) + } + + async vente(item) { + const acheteur = RdDUtility.getSelectedActor(); + if (!acheteur) { + ui.notifications.warn(`Pas d'acheteur sélectionné`); + return; + } + const disponible = this.actor.getQuantiteDisponible(item) + if (disponible == 0) { + ui.notifications.warn(`${this.name} n'a plus de ${item.name} en vente`); + return; + } + + await DialogItemAchat.onAcheter({ + item, + vendeur: this.actor, + acheteur, + quantiteIllimite: disponible == undefined, + nbLots: disponible ?? 1, + tailleLot: 1, + prixLot: item.system.cout + }); + } +} diff --git a/module/actor/commerce.js b/module/actor/commerce.js new file mode 100644 index 00000000..bed83bee --- /dev/null +++ b/module/actor/commerce.js @@ -0,0 +1,48 @@ +import { RdDBaseActor } from "./base-actor.js"; + +export class RdDCommerce extends RdDBaseActor { + + static get defaultIcon() { + return "systems/foundryvtt-reve-de-dragon/icons/services/commerce.webp"; + } + + prepareData() { + super.prepareData(); + } + prepareDerivedData() { + super.prepareDerivedData(); + } + + canReceive(item) { + if (item.isInventaire()) { + return true; + } + return super.canReceive(item); + } + + getQuantiteDisponible(item) { + return this.system.illimite ? undefined : item.getQuantite(); + } + + verifierFortune(cout) { + return this.system.illimite || super.verifierFortune(cout); + } + async depenserSols(cout) { + if (this.system.illimite) { + return + } + await super.depenserSols(cout) + } + + async consommerNourritureAchetee(achat, vente, createdItemId) { + // ne pas consommer pour un commerce + } + + async decrementerQuantiteItem(itemVendu, quantite) { + if (this.system.illimite) { + return; + } + await super.decrementerQuantiteItem(itemVendu, quantite, {supprimerSiZero: false}); + } + +} \ No newline at end of file diff --git a/module/item.js b/module/item.js index 4deec4a1..f0b84c86 100644 --- a/module/item.js +++ b/module/item.js @@ -58,7 +58,7 @@ export const defaultItemImg = { poison: "systems/foundryvtt-reve-de-dragon/icons/maladies_venins/venin.webp", oeuvre: "systems/foundryvtt-reve-de-dragon/icons/competence_comedie.webp", nourritureboisson: "systems/foundryvtt-reve-de-dragon/icons/objets/provision_crue.webp", - service: "systems/foundryvtt-reve-de-dragon/icons/items/services.webp", + service: "systems/foundryvtt-reve-de-dragon/icons/services/lit.webp", signedraconique: "systems/foundryvtt-reve-de-dragon/icons/tmr/signe_draconique.webp", gemme: "systems/foundryvtt-reve-de-dragon/icons/gemmes/almaze.webp", possession: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp", diff --git a/module/rdd-main.js b/module/rdd-main.js index 13be7ddf..2b13a1d2 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -37,6 +37,8 @@ import { RdDConteneurItemSheet } from "./item-conteneur-sheet.js"; import { RdDServiceItemSheet } from "./item-service-sheet.js"; import { RdDItemService } from "./item-service.js"; import { RdDBaseActor } from "./actor/base-actor.js"; +import { RdDCommerceSheet } from "./actor/commerce-sheet.js"; +import { RdDCommerce } from "./actor/commerce.js"; /** * RdD system @@ -62,6 +64,7 @@ export class SystemReveDeDragon { entite: RdDActor, personnage: RdDActor, vehicule: RdDActor, + commerce: RdDCommerce, } } @@ -113,6 +116,7 @@ export class SystemReveDeDragon { /* -------------------------------------------- */ // Register sheet application classes Actors.unregisterSheet("core", ActorSheet); + Actors.registerSheet(SYSTEM_RDD, RdDCommerceSheet, { types: ["commerce"], makeDefault: true }); Actors.registerSheet(SYSTEM_RDD, RdDActorSheet, { types: ["personnage"], makeDefault: true }); Actors.registerSheet(SYSTEM_RDD, RdDActorCreatureSheet, { types: ["creature"], makeDefault: true }); Actors.registerSheet(SYSTEM_RDD, RdDActorVehiculeSheet, { types: ["vehicule"], makeDefault: true }); diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 083bcb95..f8bb2c42 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -170,6 +170,8 @@ export class RdDUtility { 'systems/foundryvtt-reve-de-dragon/templates/actor/liens-animaux.html', 'systems/foundryvtt-reve-de-dragon/templates/actor/liens-suivants.html', 'systems/foundryvtt-reve-de-dragon/templates/actor/liens-vehicules.html', + 'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.html', + 'systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.html', //Items 'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete-script.hbs', 'systems/foundryvtt-reve-de-dragon/templates/scripts/autocomplete.hbs', @@ -296,7 +298,7 @@ export class RdDUtility { Handlebars.registerHelper('apostrophe', (article, str) => Grammar.apostrophe(article, str)); Handlebars.registerHelper('un', str => Grammar.articleIndetermine(str)); Handlebars.registerHelper('accord', (genre, ...args) => Grammar.accord(genre, args)); - Handlebars.registerHelper('buildConteneur', (objet, tplItem) => { return new Handlebars.SafeString(RdDUtility.buildConteneur(objet, 1, tplItem)); }); + Handlebars.registerHelper('buildConteneur', (objet, templateItem, options) => { return new Handlebars.SafeString(RdDUtility.buildConteneur(objet, 1, templateItem, options)); }); Handlebars.registerHelper('buildContenu', (objet) => { return new Handlebars.SafeString(RdDUtility.buildContenu(objet, 1, true)); }); Handlebars.registerHelper('caseTmr-label', coord => TMRUtility.getTMRLabel(coord)); Handlebars.registerHelper('caseTmr-type', coord => TMRUtility.getTMRType(coord)); @@ -472,33 +474,34 @@ export class RdDUtility { /** Construit la structure récursive des conteneurs, avec imbrication potentielle * */ - static buildConteneur(objet, profondeur, tplItem) { + static buildConteneur(objet, profondeur, templateItem, options) { if (!profondeur) profondeur = 1; - if (!tplItem) tplItem = 'actor/inventaire-item.html' + if (!templateItem) templateItem = 'actor/inventaire-item.html' objet.niveau = profondeur; const isConteneur = objet.type == 'conteneur'; const isOuvert = isConteneur && this.getAfficheContenu(objet._id); const isVide = isConteneur && objet.system.contenu.length == 0; - const conteneur = Handlebars.partials[`systems/foundryvtt-reve-de-dragon/templates/${tplItem}`]({ + const conteneur = Handlebars.partials[`systems/foundryvtt-reve-de-dragon/templates/${templateItem}`]({ item: objet, vide: isVide, - ouvert: isOuvert + ouvert: isOuvert, + options: options }); - const contenu = isConteneur ? RdDUtility.buildContenu(objet, profondeur, isOuvert, tplItem) : ''; + const contenu = isConteneur ? RdDUtility.buildContenu(objet, profondeur, isOuvert, templateItem, options) : ''; return conteneur + contenu; } /* -------------------------------------------- */ - static buildContenu(objet, profondeur, afficherContenu, tplItem) { + static buildContenu(objet, profondeur, afficherContenu, templateItem, options) { if (!profondeur) profondeur = 1; - if (!tplItem) tplItem = 'actor/inventaire-item.html' + if (!templateItem) templateItem = 'actor/inventaire-item.html' objet.niveau = profondeur; const display = afficherContenu ? 'item-display-show' : 'item-display-hide'; let strContenu = `
    `; for (let subItem of objet.subItems) { - strContenu += this.buildConteneur(subItem, profondeur + 1); + strContenu += this.buildConteneur(subItem, profondeur + 1, templateItem, options); } return strContenu + "
"; } diff --git a/template.json b/template.json index 63f2374d..15f2ff4e 100644 --- a/template.json +++ b/template.json @@ -1,6 +1,6 @@ { "Actor": { - "types": ["personnage", "creature", "entite", "vehicule"], + "types": ["personnage", "creature", "entite", "commerce", "vehicule"], "templates": { "description": { "description": "Description ...", @@ -554,6 +554,10 @@ }, "vehicule": { "templates": [ "vehicule", "description" ] + }, + "commerce":{ + "templates": [ "description" ], + "illimite": false } }, "Item": { diff --git a/templates/actor/commerce-actor-sheet.html b/templates/actor/commerce-actor-sheet.html new file mode 100644 index 00000000..1f80cfbd --- /dev/null +++ b/templates/actor/commerce-actor-sheet.html @@ -0,0 +1,71 @@ +
+ + {{!-- Sheet Header --}} +
+
+
+ +
+

+ {{#if @root.options.isObserver}} +
+ + Quantité illimitée en vente +
+ {{/if}} +
+
+
+
+ + {{!-- Sheet Body --}} +
+
+ {{editor description target="system.description" button=true owner=options.owner editable=options.isOwner engine="prosemirror"}} +
+
+ {{> "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire.html"}} + {{#unless system.illimite}} + {{#if @root.options.isObserver}} +
+ {{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-monnaie.html"}} + {{/if}} + {{/unless}} + {{!-- +
+
+
    +
  • + + + + + +
  • + {{#each system.services as |service key|}} +
  • + + + + +
    + + {{#unless @root.disabled}} + + + {{/unless}} +
    +
  • + {{/each}} +
+
+ --}} +
+ {{> "systems/foundryvtt-reve-de-dragon/templates/actor/editor-notes-mj.html"}} +
+
+
\ No newline at end of file diff --git a/templates/actor/commerce-inventaire-item.html b/templates/actor/commerce-inventaire-item.html new file mode 100644 index 00000000..81b25fee --- /dev/null +++ b/templates/actor/commerce-inventaire-item.html @@ -0,0 +1,49 @@ +{{#if (ne item.type 'monnaie')}} +
  • + + + {{#if (eq item.type 'conteneur')}} + + {{/if}} + + {{item.name}} + + + {{#unless @root.system.illimite}} + + {{#unless (and (eq item.type 'conteneur') (not vide))}} + {{#if @root.options.isOwner}} + + {{/if}} + + {{#if @root.options.isOwner}} + + {{/if}} + {{/unless}} + + {{/unless}} + + {{#unless (and (eq item.type 'conteneur') (not vide))}} + + {{/unless}} + + + {{#unless (and (eq item.type 'conteneur') (not vide))}} + {{#if @root.options.isOwner}} + + + {{#if (or @root.system.illimite (ne item.system.quantite 0))}} + + {{/if}} + {{/if}} + + {{#if (gt item.system.quantite 0)}} + + {{/if}} + {{/unless}} + +
  • +{{/if}} diff --git a/templates/actor/commerce-inventaire.html b/templates/actor/commerce-inventaire.html new file mode 100644 index 00000000..0cff801e --- /dev/null +++ b/templates/actor/commerce-inventaire.html @@ -0,0 +1,35 @@ +

    Boutique

    + + {{#if options.isGM}} + Nouvel objet + Tout vider + {{/if}} + + {{#unless @root.system.illimite}} + {{#if calc.surEncombrementMessage}}{{calc.surEncombrementMessage}} ‐{{/if}} + Encombrement: {{numberFormat calc.encTotal decimals=2}} + {{#if (regle-optionnelle 'afficher-prix-joueurs')}} + ‐ Valeur: {{numberFormat calc.prixTotalEquipement decimals=2}} Sols + {{/if}} + {{/unless}} + +
      +
    • + Nom + {{#unless @root.system.illimite}} + Quantité + {{/unless}} + Prix (sols) + Actions +
    • + {{#each objets as |item id|}} + {{#unless item.estContenu}} + {{#if (ne item.type 'conteneur')}} + {{> "systems/foundryvtt-reve-de-dragon/templates/actor/commerce-inventaire-item.html" item=item vide=true ouvert=true options=@root.options}} + {{/if}} + {{/unless}} + {{/each}} + {{#each conteneurs as |conteneur id|}} + {{buildConteneur this 'actor/commerce-inventaire-item.html' @root.options}} + {{/each}} +
    diff --git a/templates/actor/inventaire.html b/templates/actor/inventaire.html index 1456e8fe..c080c069 100644 --- a/templates/actor/inventaire.html +++ b/templates/actor/inventaire.html @@ -20,11 +20,11 @@ {{#each objets as |item id|}} {{#unless item.estContenu}} {{#if (ne item.type 'conteneur')}} - {{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-item.html" item=item vide=true ouvert=true }} + {{> "systems/foundryvtt-reve-de-dragon/templates/actor/inventaire-item.html" item=item vide=true ouvert=true options=@root.options}} {{/if}} {{/unless}} {{/each}} {{#each conteneurs as |conteneur id|}} - {{buildConteneur this}} + {{buildConteneur this 'actor/inventaire-item.html' @root.options}} {{/each}} diff --git a/templates/item-service-sheet.html b/templates/item-service-sheet.html index 534fdd76..8e8f0ee0 100644 --- a/templates/item-service-sheet.html +++ b/templates/item-service-sheet.html @@ -5,39 +5,6 @@
    {{editor description target="system.description" button=true owner=owner editable=(or isGM isOwner) engine="prosemirror"}}
    - {{!-- -
    -
      -
    • - - - - - -
    • - {{#each system.services as |service key|}} -
    • - - - - -
      - - {{#unless @root.disabled}} - - - {{/unless}} -
      -
    • - {{/each}} -
    -
    -
    - --}}
    Quantité en vente illimitée