diff --git a/.styles/root.css b/.styles/root.css index c900a2d..ec14fea 100644 --- a/.styles/root.css +++ b/.styles/root.css @@ -449,6 +449,19 @@ flex-direction: column; } } +.dotdungeon .actor--mob { + padding: 4px; +} +.dotdungeon .actor--mob input[type=text] { + font-size: 1.5em; + height: 1.5em; + width: 100%; +} +.dotdungeon .actor--mob textarea { + width: 100%; + resize: vertical; +} + .dotdungeon .actor--basic-sync { display: flex; justify-content: center; @@ -519,4 +532,4 @@ resize: vertical; } -/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/global/icons.scss%22,%22../styles/global/buttons.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22,%22../styles/sheets/items/spell.scss%22,%22../styles/sheets/items/pet.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET;;;AIhEF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGF;EACC;;AAED;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAIA;EACC;;;AD9PF;ECsQC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD9RL;ECwSC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;AChUL;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AFlBH;EE4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */ +/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../styles/generic.scss%22,%22../styles/mixins/_foundry.scss%22,%22../styles/_vars.scss%22,%22../styles/mixins/_partials.scss%22,%22../styles/global/icons.scss%22,%22../styles/global/buttons.scss%22,%22../styles/sheets/partials/stat.scss%22,%22../styles/sheets/partials/skill.scss%22,%22../styles/sheets/partials/panel.scss%22,%22../styles/mixins/_breakpoints.scss%22,%22../styles/sheets/actor/mvp.scss%22,%22../styles/sheets/actor/mob.scss%22,%22../styles/sheets/actor/sync/basic.scss%22,%22../styles/sheets/items/aspect.scss%22,%22../styles/sheets/items/spell.scss%22,%22../styles/sheets/items/pet.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAIQ;AAKP;EACC;;AAED;EACC;;AAGD;ECfA;EACA;EACA;EDeC,aEhBW;EFiBX;;AAGD;EACC;;AAGD;ECzBA;EACA;EACA;EDyBC;EACA;;AAEA;EACC;;AAIF;AAAA;AAAA;EAGC;EGpCD;EACA;EACA;EACA;EACA;EACA,aDLW;;ACOX;AAAA;AAAA;AAAA;AAAA;EAEC;;AH+BD;EACC;;AAGD;EACC;;AAEA;EACC;;;AAMH;EACC;;AAEA;EACC;EACA,YEzDW;;AF2DX;EACC;EACA,aE/DS;EFgET;;;AIhEF;EACC;EACA;EACA;;AAIC;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;AAFD;EACC;EACA;;;ACTH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,YHXc;EGYd,OHXe;;AGYf;EACC;EACA,OHfa;EGgBb,cHhBa;;AGoBf;EACC,YHlBc;EGmBd,OHlBe;;AGmBf;EACC;EACA,OHtBa;EGuBb,cHvBa;;AG2Bf;EACC,YHzBa;EG0Bb,OHzBc;;AG0Bd;EACC;EACA,OH7BY;EG8BZ,cH9BY;;AGkCd;EACC;;AAID;EACC;;AACA;EACC;;;ACvDJ;EACC;EACA;EACA;;ACHD;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;;ACdH;EACC;EACA;EAEA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EPlBD;EACA;EACA;EOkBE;EACA;EACA,aNrBU;EMsBV;;AAGD;EAEC,QADO;EAEP,OAFO;EAGP;;AAIF;EACC;;;AC7BD;EDkCA;IACC;IACA;;;AExCF;EACC;EACA,qBACC;EASD;EACA,oBACC;EAGD;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIA;EACC;;AAMF;EACC;;AACA;EACC;EACA;;AAGD;EACC;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EAGC;EACA;;AAGD;EACC;;AAGF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;;AAEA;AAAA;EACC;;AAIF;EACC;EACA;;AAGF;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAKD;EACC;EACA;EACA;;AAEA;EACC;;AAKJ;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGF;EACC;;AAED;EACC;;AAEA;EACC;EACA;EACA;;AAEA;EACC;;AAIH;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAIA;EACC;;;AD9PF;ECsQC;IACC;IACA;IACA,qBACC;;EAkBC;IACC;;EAKD;IACC;IACA;;;AD9RL;ECwSC;IACC;IACA;IACA,qBACC;;EAeC;IACC;;;ACjUN;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACVD;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAGD;EACC;EACA;;AAMA;EACC;EACA;;;AHlBH;EG4BG;IACC;IACA;;;ACzCL;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA;;;ACXF;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22root.css%22%7D */ diff --git a/.styles/sheets/actor/mob.css b/.styles/sheets/actor/mob.css new file mode 100644 index 0000000..87e8f1f --- /dev/null +++ b/.styles/sheets/actor/mob.css @@ -0,0 +1,14 @@ +.dotdungeon .actor--mob { + padding: 4px; +} +.dotdungeon .actor--mob input[type=text] { + font-size: 1.5em; + height: 1.5em; + width: 100%; +} +.dotdungeon .actor--mob textarea { + width: 100%; + resize: vertical; +} + +/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../../../styles/sheets/actor/mob.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEA;EACC;;AAEA;EACC;EACA;EACA;;AAGD;EACC;EACA%22,%22file%22:%22mob.css%22%7D */ diff --git a/module/documents/Actor/Handler.mjs b/module/documents/Actor/Handler.mjs index db708ad..342521a 100644 --- a/module/documents/Actor/Handler.mjs +++ b/module/documents/Actor/Handler.mjs @@ -1,9 +1,11 @@ import PlayerActor from "./Player.mjs"; +import MobActor from "./Mob.mjs"; /** @extends {Actor} */ export class ActorHandler extends Actor { proxyTargets = { player: PlayerActor, + mob: MobActor, }; constructor(data, ctx) { diff --git a/module/documents/Actor/Mob.mjs b/module/documents/Actor/Mob.mjs new file mode 100644 index 0000000..e69de29 diff --git a/module/dotdungeon.mjs b/module/dotdungeon.mjs index 2e5e1fe..49c6374 100644 --- a/module/dotdungeon.mjs +++ b/module/dotdungeon.mjs @@ -4,6 +4,7 @@ import { SpellItemData } from "./models/Item/Spell.mjs"; import { PlayerData } from "./models/Actor/Player.mjs"; import { PetItemData } from "./models/Item/Pet.mjs"; import { SyncData } from "./models/Actor/Sync.mjs"; +import { MobData } from "./models/Actor/Mob.mjs"; // Main Documents import { ActorHandler } from "./documents/Actor/Handler.mjs"; @@ -14,6 +15,7 @@ import { SpellSheet } from "./sheets/SpellSheet.mjs"; import { AspectSheet } from "./sheets/AspectSheet.mjs"; import { PlayerSheet } from "./sheets/PlayerSheet.mjs"; import { BasicSyncSheet } from "./sheets/SyncVariations/BasicSyncSheet.mjs"; +import { MobSheet } from "./sheets/MobSheet.mjs"; import { PetSheet } from "./sheets/PetSheet.mjs"; // Utility imports @@ -34,6 +36,7 @@ Hooks.once(`init`, () => { CONFIG.Actor.dataModels.player = PlayerData; CONFIG.Actor.dataModels.sync = SyncData; + CONFIG.Actor.dataModels.mob = MobData; CONFIG.Item.dataModels.aspect = AspectItemData; CONFIG.Item.dataModels.spell = SpellItemData; CONFIG.Item.dataModels.pet = PetItemData; @@ -48,6 +51,11 @@ Hooks.once(`init`, () => { types: ["player"], label: "dotdungeon.sheet-names.PlayerSheet" }); + Actors.registerSheet("dotdungeon", MobSheet, { + makeDefault: true, + types: ["mob"], + label: "dotdungeon.sheet-names.MobSheet" + }); Actors.registerSheet("dotdungeon", BasicSyncSheet, { makeDefault: true, types: ["sync"], diff --git a/module/models/Actor/Mob.mjs b/module/models/Actor/Mob.mjs new file mode 100644 index 0000000..e56c572 --- /dev/null +++ b/module/models/Actor/Mob.mjs @@ -0,0 +1,30 @@ +export class MobData extends foundry.abstract.TypeDataModel { + static defineSchema() { + const fields = foundry.data.fields; + return { + dice: new fields.StringField({ + initial: ``, + }), + bonus: new fields.NumberField({ + initial: 0, + nullable: false, + }), + initiative: new fields.NumberField({ + initial: null, + nullable: true, + }), + morale: new fields.NumberField({ + initial: null, + nullable: true, + }), + drops: new fields.StringField({ + initial: ``, + blank: true, + }), + stunts: new fields.StringField({ + initial: ``, + blank: true, + }), + }; + }; +}; diff --git a/module/sheets/MobSheet.mjs b/module/sheets/MobSheet.mjs new file mode 100644 index 0000000..2b359df --- /dev/null +++ b/module/sheets/MobSheet.mjs @@ -0,0 +1,40 @@ +import { ActorHandler } from "../documents/Actor/Handler.mjs"; +import { GenericActorSheet } from "./GenericActorSheet.mjs"; + +export class MobSheet extends GenericActorSheet { + static get defaultOptions() { + let opts = mergeObject( + super.defaultOptions, + { + template: `systems/dotdungeon/templates/actors/mobs/main.hbs`, + width: 300, + height: 360, + } + ); + opts.classes.push(`dotdungeon`); + return opts; + }; + + activateListeners(html) { + super.activateListeners(html); + + if (this.document.isEmbedded) return; + if (!this.isEditable) return; + console.debug(`.dungeon | Adding event listeners for Mob: ${this.id}`); + }; + + async getData() { + const ctx = await super.getData(); + /** @type {ActorHandler} */ + const actor = this.actor; + + ctx.system = actor.system; + ctx.flags = actor.flags; + ctx.items = this.actor.itemTypes; + + ctx.computed = {}; + + console.log(actor.uuid, `context:`, ctx) + return ctx; + }; +}; \ No newline at end of file diff --git a/styles/root.scss b/styles/root.scss index a01d539..9d91d69 100644 --- a/styles/root.scss +++ b/styles/root.scss @@ -12,6 +12,7 @@ @use "./sheets/partials/panel.scss"; @use "./sheets/actor/mvp.scss"; +@use "./sheets/actor/mob.scss"; @use "./sheets/actor/sync/basic.scss"; @use "./sheets/items/aspect.scss"; @use "./sheets/items/spell.scss"; diff --git a/styles/sheets/actor/mob.scss b/styles/sheets/actor/mob.scss new file mode 100644 index 0000000..b4773ee --- /dev/null +++ b/styles/sheets/actor/mob.scss @@ -0,0 +1,16 @@ +@use "../../vars" as *; + +.dotdungeon .actor--mob { + padding: 4px; + + input[type=text] { + font-size: 1.5em; + height: 1.5em; + width: 100%; + } + + textarea { + width: 100%; + resize: vertical; + } +} \ No newline at end of file diff --git a/templates/actors/mobs/main.hbs b/templates/actors/mobs/main.hbs new file mode 100644 index 0000000..222318e --- /dev/null +++ b/templates/actors/mobs/main.hbs @@ -0,0 +1,77 @@ +
\ No newline at end of file