Implement Mob Sheet
This commit is contained in:
parent
c257e4e5ee
commit
028b8629fe
10 changed files with 202 additions and 1 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
14
.styles/sheets/actor/mob.css
Normal file
14
.styles/sheets/actor/mob.css
Normal file
|
|
@ -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 */
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
0
module/documents/Actor/Mob.mjs
Normal file
0
module/documents/Actor/Mob.mjs
Normal file
|
|
@ -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"],
|
||||
|
|
|
|||
30
module/models/Actor/Mob.mjs
Normal file
30
module/models/Actor/Mob.mjs
Normal file
|
|
@ -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,
|
||||
}),
|
||||
};
|
||||
};
|
||||
};
|
||||
40
module/sheets/MobSheet.mjs
Normal file
40
module/sheets/MobSheet.mjs
Normal file
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
|
@ -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";
|
||||
|
|
|
|||
16
styles/sheets/actor/mob.scss
Normal file
16
styles/sheets/actor/mob.scss
Normal file
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
77
templates/actors/mobs/main.hbs
Normal file
77
templates/actors/mobs/main.hbs
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<form autocomplete="off" class="actor--mob">
|
||||
<h2><input type="text" name="name" value="{{actor.name}}"></h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td><label for="{{meta.idp}}-dice">Dice</label></td>
|
||||
<td>
|
||||
<input
|
||||
type="text"
|
||||
id="{{meta.idp}}-dice"
|
||||
name="system.dice"
|
||||
value="{{system.dice}}"
|
||||
>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="{{meta.idp}}-bonus">Bonus</label></td>
|
||||
<td>
|
||||
<input
|
||||
type="number"
|
||||
id="{{meta.idp}}-bonus"
|
||||
name="system.bonus"
|
||||
value="{{system.bonus}}"
|
||||
>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="{{meta.idp}}-initiative">Initiative</label></td>
|
||||
<td>
|
||||
<input
|
||||
type="number"
|
||||
id="{{meta.idp}}-initiative"
|
||||
name="system.initiative"
|
||||
value="{{system.initiative}}"
|
||||
>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="{{meta.idp}}-bytes">Bytes</label></td>
|
||||
<td>
|
||||
<input
|
||||
type="number"
|
||||
id="{{meta.idp}}-bytes"
|
||||
name="system.bytes"
|
||||
value="{{system.bytes}}"
|
||||
>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="{{meta.idp}}-morale">Morale</label></td>
|
||||
<td>
|
||||
<input
|
||||
type="number"
|
||||
id="{{meta.idp}}-morale"
|
||||
name="system.morale"
|
||||
value="{{system.morale}}"
|
||||
>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label for="{{meta.idp}}-drops">Drops</label></td>
|
||||
<td>
|
||||
<input
|
||||
type="text"
|
||||
id="{{meta.idp}}-drops"
|
||||
name="system.drops"
|
||||
value="{{system.drops}}"
|
||||
>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<label for="{{meta.idp}}-stunts">Stunts</label>
|
||||
<textarea
|
||||
type="text"
|
||||
id="{{meta.idp}}-stunts"
|
||||
name="system.stunts"
|
||||
>{{system.stunts}}</textarea>
|
||||
</form>
|
||||
Loading…
Add table
Add a link
Reference in a new issue