Implement Mob Sheet
This commit is contained in:
parent
c257e4e5ee
commit
028b8629fe
10 changed files with 202 additions and 1 deletions
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue