diff --git a/module/applications/sheets/_module.mjs b/module/applications/sheets/_module.mjs new file mode 100644 index 00000000..fa94a420 --- /dev/null +++ b/module/applications/sheets/_module.mjs @@ -0,0 +1,3 @@ +export { default as RdDItemSheet} from "./common-item-sheet.mjs" +export { default as RdDMonnaieSheet } from "./monnaie-sheet.mjs" +export { default as RdDMunitionSheet } from "./munition-sheet.mjs" diff --git a/module/applications/sheets/common-item-sheet.mjs b/module/applications/sheets/common-item-sheet.mjs new file mode 100644 index 00000000..34568aff --- /dev/null +++ b/module/applications/sheets/common-item-sheet.mjs @@ -0,0 +1,200 @@ +const { HandlebarsApplicationMixin } = foundry.applications.api +import { SYSTEM_RDD } from "../../constants.js" +import { Misc } from "../../misc.js" + +export default class RdDItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) { + + static register(sheetClass) { + const itemType = sheetClass.ITEM_TYPE + Items.registerSheet(SYSTEM_RDD, sheetClass, { + label: Misc.typeName('Item', itemType), + types: [itemType], + makeDefault: true + }) + } + + static get ITEM_TYPE() { return undefined } + /** + * Different sheet modes. + * @enum {number} + */ + static SHEET_MODES = { EDIT: 0, PLAY: 1 } + + constructor(options = {}) { + super(options) + this.#dragDrop = this.#createDragDropHandlers() + } + + #dragDrop + _sheetMode = this.constructor.SHEET_MODES.PLAY + + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["fvtt-rdd", "item"], + position: { + width: 600, + height: "auto", + }, + form: { + submitOnChange: true, + }, + window: { + resizable: true, + }, + dragDrop: [{ dragSelector: "[data-drag]", dropSelector: null }], + actions: { + toggleSheet: RdDItemSheet.#onToggleSheet, + editImage: RdDItemSheet.#onEditImage, + }, + } + + /** + * Is the sheet currently in 'Play' mode? + * @type {boolean} + */ + get isPlayMode() { + return this._sheetMode === this.constructor.SHEET_MODES.PLAY + } + + /** + * Is the sheet currently in 'Edit' mode? + * @type {boolean} + */ + get isEditMode() { + return this._sheetMode === this.constructor.SHEET_MODES.EDIT + } + + /** @override */ + async _prepareContext() { + const context = { + fields: this.document.schema.fields, + systemFields: this.document.system.schema.fields, + item: this.document, + system: this.document.system, + source: this.document.toObject(), + isEditMode: this.isEditMode, + isPlayMode: this.isPlayMode, + isEditable: this.isEditable, + } + return context + } + + /** @override */ + _onRender(context, options) { + this.#dragDrop.forEach((d) => d.bind(this.element)) + } + + // #region Drag-and-Drop Workflow + /** + * Create drag-and-drop workflow handlers for this Application + * @returns {DragDrop[]} An array of DragDrop handlers + * @private + */ + #createDragDropHandlers() { + return this.options.dragDrop.map((d) => { + d.permissions = { + dragstart: this._canDragStart.bind(this), + drop: this._canDragDrop.bind(this), + } + d.callbacks = { + dragstart: this._onDragStart.bind(this), + dragover: this._onDragOver.bind(this), + drop: this._onDrop.bind(this), + } + return new DragDrop(d) + }) + } + + /** + * Define whether a user is able to begin a dragstart workflow for a given drag selector + * @param {string} selector The candidate HTML selector for dragging + * @returns {boolean} Can the current user drag this selector? + * @protected + */ + _canDragStart(selector) { + return this.isEditable + } + + /** + * Define whether a user is able to conclude a drag-and-drop workflow for a given drop selector + * @param {string} selector The candidate HTML selector for the drop target + * @returns {boolean} Can the current user drop on this selector? + * @protected + */ + _canDragDrop(selector) { + return this.isEditable && this.document.isOwner + } + + /** + * Callback actions which occur at the beginning of a drag start workflow. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + _onDragStart(event) { + const el = event.currentTarget + if ("link" in event.target.dataset) return + + // Extract the data you need + let dragData = null + + if (!dragData) return + + // Set data transfer + event.dataTransfer.setData("text/plain", JSON.stringify(dragData)) + } + + /** + * Callback actions which occur when a dragged element is over a drop target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + _onDragOver(event) { } + + /** + * Callback actions which occur when a dragged element is dropped on a target. + * @param {DragEvent} event The originating DragEvent + * @protected + */ + async _onDrop(event) { } + + // #endregion + + // #region Actions + /** + * Handle toggling between Edit and Play mode. + * @param {Event} event The initiating click event. + * @param {HTMLElement} target The current target of the event listener. + */ + static #onToggleSheet(event, target) { + const modes = this.constructor.SHEET_MODES + this._sheetMode = this.isEditMode ? modes.PLAY : modes.EDIT + this.render() + } + + /** + * Handle changing a Document's image. + * + * @this RdDItemSheet + * @param {PointerEvent} event The originating click event + * @param {HTMLElement} target The capturing HTML element which defined a [data-action] + * @returns {Promise} + * @private + */ + static async #onEditImage(event, target) { + const attr = target.dataset.edit + const current = foundry.utils.getProperty(this.document, attr) + const { img } = this.document.constructor.getDefaultArtwork?.(this.document.toObject()) ?? {} + const fp = new FilePicker({ + current, + type: "image", + redirectToRoot: img ? [img] : [], + callback: (path) => { + this.document.update({ [attr]: path }) + }, + top: this.position.top + 40, + left: this.position.left + 10, + }) + return fp.browse() + } + // #endregion +} diff --git a/module/applications/sheets/monnaie-sheet.mjs b/module/applications/sheets/monnaie-sheet.mjs new file mode 100644 index 00000000..aee416e1 --- /dev/null +++ b/module/applications/sheets/monnaie-sheet.mjs @@ -0,0 +1,35 @@ +import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../../common/_module.mjs"; +import { ITEM_TYPES } from "../../constants.js"; +import RdDItemSheet from "./common-item-sheet.mjs"; + +export default class RdDMonnaieSheet extends RdDItemSheet { + /** @override */ + static get ITEM_TYPE() { return ITEM_TYPES.monnaie } + + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["fvtt-rdd", "item", "monnaie"], + position: { + width: 600, + }, + window: { + contentClasses: ["monnaie-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/foundryvtt-reve-de-dragon/templates/item/monnaie.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + return Object.assign(context, + await TEMPLATE_DESCRIPTION.prepareContext(this.item), + await TEMPLATE_INVENTAIRE.prepareContext(this.item) + ) + } +} \ No newline at end of file diff --git a/module/applications/sheets/munition-sheet.mjs b/module/applications/sheets/munition-sheet.mjs new file mode 100644 index 00000000..83792bb3 --- /dev/null +++ b/module/applications/sheets/munition-sheet.mjs @@ -0,0 +1,35 @@ +import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../../common/_module.mjs"; +import { ITEM_TYPES } from "../../constants.js"; +import RdDItemSheet from "./common-item-sheet.mjs"; + +export default class RdDMunitionSheet extends RdDItemSheet { + /** @override */ + static get ITEM_TYPE() { return ITEM_TYPES.munition } + + /** @override */ + static DEFAULT_OPTIONS = { + classes: ["fvtt-rdd", "item", "munition"], + position: { + width: 600, + }, + window: { + contentClasses: ["munition-content"], + }, + } + + /** @override */ + static PARTS = { + main: { + template: "systems/foundryvtt-reve-de-dragon/templates/item/munition.hbs", + }, + } + + /** @override */ + async _prepareContext() { + const context = await super._prepareContext() + return Object.assign(context, + await TEMPLATE_DESCRIPTION.prepareContext(this.item), + await TEMPLATE_INVENTAIRE.prepareContext(this.item) + ) + } +} \ No newline at end of file diff --git a/module/common/_module.mjs b/module/common/_module.mjs new file mode 100644 index 00000000..f74c9114 --- /dev/null +++ b/module/common/_module.mjs @@ -0,0 +1,7 @@ +import { CommonDescription } from "./description.mjs"; +import { CommonInventaire } from "./inventaire.mjs"; + +export const TEMPLATE_DESCRIPTION = new CommonDescription() +export const TEMPLATE_INVENTAIRE = new CommonInventaire() + + diff --git a/module/common/common-template.mjs b/module/common/common-template.mjs new file mode 100644 index 00000000..7325ca75 --- /dev/null +++ b/module/common/common-template.mjs @@ -0,0 +1,8 @@ +/** + * class describing common methods implemented by template parts, + * used for sheet/models/documents + */ +export default class CommonTemplate { + fields() { } + async prepareContext(item) { } +} \ No newline at end of file diff --git a/module/common/description.mjs b/module/common/description.mjs new file mode 100644 index 00000000..8ca18917 --- /dev/null +++ b/module/common/description.mjs @@ -0,0 +1,22 @@ +import { RdDTextEditor } from "../apps/rdd-text-roll-editor.js" +import CommonTemplate from "./common-template.mjs" +import { HTMLSTRING } from "./field-types.mjs" + +const fields = foundry.data.fields + +export class CommonDescription extends CommonTemplate { + fields() { + return { + description: new fields.HTMLField({ ...HTMLSTRING }), + descriptionmj: new fields.HTMLField({ gmOnly: true, ...HTMLSTRING }) + } + } + + async prepareContext(item) { + return { + description: await RdDTextEditor.enrichHTML(item.system.description, item), + descriptionmj: await RdDTextEditor.enrichHTML(item.system.descriptionmj, item), + } + } + +} diff --git a/module/common/field-types.mjs b/module/common/field-types.mjs new file mode 100644 index 00000000..5a4799be --- /dev/null +++ b/module/common/field-types.mjs @@ -0,0 +1,9 @@ +export const INTEGER = { required: true, nullable: false, min: 0, integer: true } +export const DECIMAL = { required: true, nullable: false, min: 0, integer: false } /* TODO: validation de nombre décimales?*/ +export const INTEGER_SIGNED = { required: true, nullable: false, integer: true } +export const DECIMAL_SIGNED = { required: true, nullable: false, integer: false } +export const STRING = { required: true, nullable: false, blank: true, trim: true } +export const HTMLSTRING = { initial: "", required: true, nullable: false, blank: true, trim: false, textSearch: true } + +export const MODEL_ARRAY = { initial: [], required: true, nullable: false } + diff --git a/module/common/inventaire.mjs b/module/common/inventaire.mjs new file mode 100644 index 00000000..05472cd4 --- /dev/null +++ b/module/common/inventaire.mjs @@ -0,0 +1,28 @@ +import CommonTemplate from "./common-template.mjs" +import { RARETES } from "../item/raretes.js" +import { DECIMAL, INTEGER, INTEGER_SIGNED, MODEL_ARRAY, STRING } from "./field-types.mjs" + +const fields = foundry.data.fields + +export class CommonInventaire extends CommonTemplate { + fields() { + return { + encombrement: new fields.NumberField({ label: "Encombrement", initial: 0, ...INTEGER }), + quantite: new fields.NumberField({ label: "Quantité", initial: 1, ...INTEGER }), + qualite: new fields.NumberField({ label: "Qualité", initial: 0, ...INTEGER_SIGNED }), + cout: new fields.NumberField({ label: "Coût", initial: 0.0, ...DECIMAL }), + environnement: new fields.ArrayField( + new fields.SchemaField({ + milieu: new fields.StringField({ label: "Milieu", initial: "", ...STRING }), + rarete: new fields.StringField({ + label: "Rareté", initial: RARETES[0].code, ...STRING, + validate: (value, options) => RARETES.find(it => it.code == value) + }), + frequence: new fields.NumberField({ label: "Fréquence", initial: RARETES[0].frequence, ...INTEGER }), + }), + { label: "Environnement", ...MODEL_ARRAY }), + } + } + async prepareContext(item) { + } +} diff --git a/module/documents/_module.mjs b/module/documents/_module.mjs new file mode 100644 index 00000000..35b1f74b --- /dev/null +++ b/module/documents/_module.mjs @@ -0,0 +1,2 @@ +export { default as RdDModelMonnaie } from "./monnaie.mjs" +export { default as RdDModelMunition } from "./munition.mjs" diff --git a/module/documents/monnaie.mjs b/module/documents/monnaie.mjs new file mode 100644 index 00000000..3a72264b --- /dev/null +++ b/module/documents/monnaie.mjs @@ -0,0 +1,7 @@ +import { RdDItem } from "../item.js"; + +export default class RdDItemMonnaie extends RdDItem { + static get defaultIcon() { + return 'systems/foundryvtt-reve-de-dragon/icons/objets/piece_etain_poisson.webp' + } +} diff --git a/module/documents/munition.mjs b/module/documents/munition.mjs new file mode 100644 index 00000000..19ade5fd --- /dev/null +++ b/module/documents/munition.mjs @@ -0,0 +1,7 @@ +import { RdDItem } from "../item.js"; + +export default class RdDItemMunition extends RdDItem { + static get defaultIcon() { + return 'systems/foundryvtt-reve-de-dragon/icons/objets/fleche.webp' + } +} diff --git a/module/item-sheet.js b/module/item-sheet.js index e9f615eb..c29e925b 100644 --- a/module/item-sheet.js +++ b/module/item-sheet.js @@ -14,12 +14,11 @@ import { RdDItem } from "./item.js"; import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js"; import { RdDTextEditor } from "./apps/rdd-text-roll-editor.js"; import { ItemAction } from "./item/item-actions.js"; -import { RdDItemGemme } from "./item/gemme.js"; /** * Extend the basic ItemSheet for RdD specific items */ -export class RdDItemSheet extends ItemSheet { +export class RdDItemSheetV1 extends ItemSheet { static get ITEM_TYPE() { return undefined @@ -43,7 +42,7 @@ export class RdDItemSheet extends ItemSheet { static get defaultOptions() { return foundry.utils.mergeObject(super.defaultOptions, { classes: [SYSTEM_RDD, "sheet", "item"], - template: RdDItemSheet.defaultTemplate(RdDItemSheet.ITEM_TYPE), + template: RdDItemSheetV1.defaultTemplate(RdDItemSheetV1.ITEM_TYPE), width: 550, height: 550 }, { inplace: false }); @@ -51,7 +50,7 @@ export class RdDItemSheet extends ItemSheet { /* -------------------------------------------- */ get template() { - return RdDItemSheet.defaultTemplate(this.item.type); + return RdDItemSheetV1.defaultTemplate(this.item.type); } get title() { @@ -264,7 +263,7 @@ export class RdDItemSheet extends ItemSheet { _updateObject(event, formData) { switch (this.item.type) { case ITEM_TYPES.sort: - formData['system.bonuscase'] = RdDItemSort.bonuscasesToString(RdDItemSheet._listCaseTmr( + formData['system.bonuscase'] = RdDItemSort.bonuscasesToString(RdDItemSheetV1._listCaseTmr( formData.caseTmrCoord, formData.caseTmrBonus, formData.caseTmrAdd @@ -314,7 +313,7 @@ export class RdDItemSheet extends ItemSheet { async _onDrop(event) { // Try to extract the dragData - let dragData = RdDItemSheet.$extractDragData(event); + let dragData = RdDItemSheetV1.$extractDragData(event); if (!dragData) return false; const allowed = Hooks.call("dropActorSheetData", this.actor, this, dragData); if (allowed === false) return false; diff --git a/module/item/sheet-base-inventaire.js b/module/item/sheet-base-inventaire.js index 61367fb4..1952c56d 100644 --- a/module/item/sheet-base-inventaire.js +++ b/module/item/sheet-base-inventaire.js @@ -1,14 +1,14 @@ import { HtmlUtility } from "../html-utility.js"; -import { RdDItemSheet } from "../item-sheet.js"; +import { RdDItemSheetV1 } from "../item-sheet.js"; import { Misc } from "../misc.js"; import { RdDRaretes } from "./raretes.js"; const TYPE_ITEMS_NATURELS = ["faune", "herbe", "plante", "ingredient"]; -export class RdDItemInventaireSheet extends RdDItemSheet { +export class RdDItemInventaireSheet extends RdDItemSheetV1 { static get defaultOptions() { - return foundry.utils.mergeObject(RdDItemSheet.defaultOptions, { + return foundry.utils.mergeObject(RdDItemSheetV1.defaultOptions, { tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "informations" }] }, { inplace: false }) } diff --git a/module/item/sheet-blessure.js b/module/item/sheet-blessure.js index 8ce5eaae..3142cfa4 100644 --- a/module/item/sheet-blessure.js +++ b/module/item/sheet-blessure.js @@ -1,6 +1,6 @@ -import { RdDItemSheet } from "../item-sheet.js"; +import { RdDItemSheetV1 } from "../item-sheet.js"; -export class RdDBlessureItemSheet extends RdDItemSheet { +export class RdDBlessureItemSheet extends RdDItemSheetV1 { static get ITEM_TYPE() { return "blessure" }; diff --git a/module/item/sheet-rencontre.js b/module/item/sheet-rencontre.js index 551c4149..077ca6a5 100644 --- a/module/item/sheet-rencontre.js +++ b/module/item/sheet-rencontre.js @@ -1,7 +1,7 @@ import { RdDRencontre } from "./rencontre.js"; -import { RdDItemSheet } from "../item-sheet.js"; +import { RdDItemSheetV1 } from "../item-sheet.js"; -export class RdDRencontreItemSheet extends RdDItemSheet { +export class RdDRencontreItemSheet extends RdDItemSheetV1 { static get ITEM_TYPE() { return "rencontre" }; diff --git a/module/item/sheet-service.js b/module/item/sheet-service.js index b9b00146..21683b00 100644 --- a/module/item/sheet-service.js +++ b/module/item/sheet-service.js @@ -1,6 +1,6 @@ -import { RdDItemSheet } from "../item-sheet.js"; +import { RdDItemSheetV1 } from "../item-sheet.js"; -export class RdDServiceItemSheet extends RdDItemSheet { +export class RdDServiceItemSheet extends RdDItemSheetV1 { static get ITEM_TYPE() { return "service" }; diff --git a/module/item/sheet-signedraconique.js b/module/item/sheet-signedraconique.js index 79128959..616ac781 100644 --- a/module/item/sheet-signedraconique.js +++ b/module/item/sheet-signedraconique.js @@ -1,12 +1,12 @@ -import { RdDItemSheet } from "../item-sheet.js"; +import { RdDItemSheetV1 } from "../item-sheet.js"; import { RdDItemSigneDraconique } from "./signedraconique.js"; import { TMRUtility } from "../tmr-utility.js"; /** * Item sheet pour signes draconiques - * @extends {RdDItemSheet} + * @extends {RdDItemSheetV1} */ -export class RdDSigneDraconiqueItemSheet extends RdDItemSheet { +export class RdDSigneDraconiqueItemSheet extends RdDItemSheetV1 { static get ITEM_TYPE() { return "signedraconique" } diff --git a/module/models/_module.mjs b/module/models/_module.mjs new file mode 100644 index 00000000..35b1f74b --- /dev/null +++ b/module/models/_module.mjs @@ -0,0 +1,2 @@ +export { default as RdDModelMonnaie } from "./monnaie.mjs" +export { default as RdDModelMunition } from "./munition.mjs" diff --git a/module/models/monnaie.mjs b/module/models/monnaie.mjs new file mode 100644 index 00000000..0eac014e --- /dev/null +++ b/module/models/monnaie.mjs @@ -0,0 +1,10 @@ +import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../common/_module.mjs"; + +export default class RdDModelMonnaie extends foundry.abstract.TypeDataModel { + static defineSchema() { + return Object.assign({}, + TEMPLATE_DESCRIPTION.fields(), + TEMPLATE_INVENTAIRE.fields() + ) + } +} diff --git a/module/models/munition.mjs b/module/models/munition.mjs new file mode 100644 index 00000000..2d5d7d61 --- /dev/null +++ b/module/models/munition.mjs @@ -0,0 +1,10 @@ +import { TEMPLATE_DESCRIPTION, TEMPLATE_INVENTAIRE } from "../common/_module.mjs"; + +export default class RdDModelMunition extends foundry.abstract.TypeDataModel { + static defineSchema() { + return Object.assign({}, + TEMPLATE_DESCRIPTION.fields(), + TEMPLATE_INVENTAIRE.fields() + ) + } +} diff --git a/module/rdd-main.js b/module/rdd-main.js index 533385ac..9e0b3dcc 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -54,7 +54,7 @@ import { RdDItemSouffle } from "./item/souffle.js" import { RdDRencontre } from "./item/rencontre.js" -import { RdDItemSheet } from "./item-sheet.js" +import { RdDItemSheetV1 } from "./item-sheet.js" import { RdDBlessureItemSheet } from "./item/sheet-blessure.js" import { RdDServiceItemSheet } from "./item/sheet-service.js" import { RdDRencontreItemSheet } from "./item/sheet-rencontre.js" @@ -80,6 +80,10 @@ import { RdDItemPotion } from "./item/potion.js" import { RdDItemGemme } from "./item/gemme.js" import { RdDGemmeItemSheet } from "./item/sheet-gemme.js" +import * as models from "./models/_module.mjs" +import * as items from "./documents/_module.mjs" +import * as sheets from "./applications/sheets/_module.mjs" + /** * RdD system * Author: LeRatierBretonnien @@ -100,6 +104,8 @@ export class SystemReveDeDragon { this.RdDHotbar = RdDHotbar this.RdDStatBlockParser = RdDStatBlockParser this.itemClasses = { + monnaie: items.RdDModelMonnaie, + munition: items.RdDModelMunition, armure: RdDItemArmure, blessure: RdDItemBlessure, gemme: RdDItemGemme, @@ -129,6 +135,9 @@ export class SystemReveDeDragon { /* -------------------------------------------- */ onInit() { game.system.rdd = this + + globalThis.RdD = game.system + this.AppAstrologie = AppAstrologie console.log(`Initializing Reve de Dragon System Settings`) @@ -175,6 +184,10 @@ export class SystemReveDeDragon { console.log(`Initializing Reve de Dragon Documents`) CONFIG.Actor.documentClass = RdDBaseActor CONFIG.Item.documentClass = RdDItem + CONFIG.Item.dataModels = { + monnaie: models.RdDModelMonnaie, + munition: models.RdDModelMunition, + } CONFIG.RDD = { resolutionTable: RdDResolutionTable.resolutionTable, carac_array: RdDUtility.getCaracArray(), @@ -195,12 +208,15 @@ export class SystemReveDeDragon { Items.registerSheet(SYSTEM_RDD, RdDItemInventaireSheet, { types: [ - "objet", "arme", "armure", "livre", "munition", - "monnaie", "nourritureboisson", + "objet", "arme", "armure", "livre", "nourritureboisson", ], makeDefault: true }) - Items.registerSheet(SYSTEM_RDD, RdDItemSheet, { + + sheets.RdDItemSheet.register(sheets.RdDMonnaieSheet) + sheets.RdDItemSheet.register(sheets.RdDMunitionSheet) + + Items.registerSheet(SYSTEM_RDD, RdDItemSheetV1, { types: [ "competence", "competencecreature", "recettealchimique", "musique", "chant", "danse", "jeu", "race", @@ -211,18 +227,18 @@ export class SystemReveDeDragon { ], makeDefault: true }) - - RdDItemSheet.register(RdDBlessureItemSheet) - RdDItemSheet.register(RdDConteneurItemSheet) - RdDItemSheet.register(RdDFauneItemSheet) - RdDItemSheet.register(RdDGemmeItemSheet) - RdDItemSheet.register(RdDHerbeItemSheet) - RdDItemSheet.register(RdDIngredientItemSheet) - RdDItemSheet.register(RdDPlanteItemSheet) - RdDItemSheet.register(RdDPotionItemSheet) - RdDItemSheet.register(RdDRencontreItemSheet) - RdDItemSheet.register(RdDServiceItemSheet) - RdDItemSheet.register(RdDSigneDraconiqueItemSheet) + + RdDItemSheetV1.register(RdDBlessureItemSheet) + RdDItemSheetV1.register(RdDConteneurItemSheet) + RdDItemSheetV1.register(RdDFauneItemSheet) + RdDItemSheetV1.register(RdDGemmeItemSheet) + RdDItemSheetV1.register(RdDHerbeItemSheet) + RdDItemSheetV1.register(RdDIngredientItemSheet) + RdDItemSheetV1.register(RdDPlanteItemSheet) + RdDItemSheetV1.register(RdDPotionItemSheet) + RdDItemSheetV1.register(RdDRencontreItemSheet) + RdDItemSheetV1.register(RdDServiceItemSheet) + RdDItemSheetV1.register(RdDSigneDraconiqueItemSheet) RdDJournalSheet.register() // préparation des différents modules diff --git a/template.json b/template.json index 74dbdf20..869ba16b 100644 --- a/template.json +++ b/template.json @@ -742,9 +742,6 @@ "objet": { "templates": ["description", "equipement", "inventaire"] }, - "monnaie": { - "templates": ["description", "inventaire"] - }, "gemme": { "templates": ["description", "enchantable", "inventaire", "temporel"], "type": "", @@ -753,9 +750,6 @@ "inertie": 0, "enchantabilite": 0 }, - "munition": { - "templates": ["description", "inventaire"] - }, "nourritureboisson": { "templates": ["description", "inventaire", "comestible"], "cuisinier": "", diff --git a/templates/item/monnaie.hbs b/templates/item/monnaie.hbs new file mode 100644 index 00000000..c370c592 --- /dev/null +++ b/templates/item/monnaie.hbs @@ -0,0 +1,14 @@ +
+ {{>"systems/foundryvtt-reve-de-dragon/templates/header-item.hbs"}} + +
+
+ {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}} + {{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs"}} +
+ {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.hbs"}} +
+
diff --git a/templates/item/munition.hbs b/templates/item/munition.hbs new file mode 100644 index 00000000..f83fd7f3 --- /dev/null +++ b/templates/item/munition.hbs @@ -0,0 +1,14 @@ +
+ {{>"systems/foundryvtt-reve-de-dragon/templates/header-item.hbs"}} + +
+
+ {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-inventaire.hbs"}} + {{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.hbs"}} +
+ {{>"systems/foundryvtt-reve-de-dragon/templates/item/partial-environnement.hbs"}} +
+
\ No newline at end of file