mirror of
https://github.com/RoY7x/worldbuilding.git
synced 2025-04-30 02:31:41 -04:00
[#32] Draw available tracked resources from world actors rather than system model.
This commit is contained in:
parent
db34d156af
commit
9b19f8b590
5 changed files with 40 additions and 17 deletions
|
@ -21,6 +21,16 @@ export class SimpleActor extends Actor {
|
||||||
return EntitySheetHelper.createDialog.call(this, data, options);
|
return EntitySheetHelper.createDialog.call(this, data, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this Actor used as a template for other Actors?
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
get isTemplate() {
|
||||||
|
return !!this.getFlag("worldbuilding", "isTemplate");
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/* Roll Data Preparation */
|
/* Roll Data Preparation */
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
|
|
@ -20,4 +20,14 @@ export class SimpleItem extends Item {
|
||||||
static async createDialog(data={}, options={}) {
|
static async createDialog(data={}, options={}) {
|
||||||
return EntitySheetHelper.createDialog.call(this, data, options);
|
return EntitySheetHelper.createDialog.call(this, data, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this Item used as a template for other Items?
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
get isTemplate() {
|
||||||
|
return !!this.getFlag("worldbuilding", "isTemplate");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,7 +115,7 @@ Hooks.on("getActorDirectoryEntryContext", (html, options) => {
|
||||||
icon: '<i class="fas fa-stamp"></i>',
|
icon: '<i class="fas fa-stamp"></i>',
|
||||||
condition: li => {
|
condition: li => {
|
||||||
const actor = game.actors.get(li.data(idAttr));
|
const actor = game.actors.get(li.data(idAttr));
|
||||||
return !actor.getFlag("worldbuilding", "isTemplate");
|
return !actor.isTemplate;
|
||||||
},
|
},
|
||||||
callback: li => {
|
callback: li => {
|
||||||
const actor = game.actors.get(li.data(idAttr));
|
const actor = game.actors.get(li.data(idAttr));
|
||||||
|
@ -129,7 +129,7 @@ Hooks.on("getActorDirectoryEntryContext", (html, options) => {
|
||||||
icon: '<i class="fas fa-times"></i>',
|
icon: '<i class="fas fa-times"></i>',
|
||||||
condition: li => {
|
condition: li => {
|
||||||
const actor = game.actors.get(li.data(idAttr));
|
const actor = game.actors.get(li.data(idAttr));
|
||||||
return actor.getFlag("worldbuilding", "isTemplate");
|
return actor.isTemplate;
|
||||||
},
|
},
|
||||||
callback: li => {
|
callback: li => {
|
||||||
const actor = game.actors.get(li.data(idAttr));
|
const actor = game.actors.get(li.data(idAttr));
|
||||||
|
@ -149,7 +149,7 @@ Hooks.on("getItemDirectoryEntryContext", (html, options) => {
|
||||||
icon: '<i class="fas fa-stamp"></i>',
|
icon: '<i class="fas fa-stamp"></i>',
|
||||||
condition: li => {
|
condition: li => {
|
||||||
const item = game.items.get(li.data(idAttr));
|
const item = game.items.get(li.data(idAttr));
|
||||||
return !item.getFlag("worldbuilding", "isTemplate");
|
return !item.isTemplate;
|
||||||
},
|
},
|
||||||
callback: li => {
|
callback: li => {
|
||||||
const item = game.items.get(li.data(idAttr));
|
const item = game.items.get(li.data(idAttr));
|
||||||
|
@ -163,7 +163,7 @@ Hooks.on("getItemDirectoryEntryContext", (html, options) => {
|
||||||
icon: '<i class="fas fa-times"></i>',
|
icon: '<i class="fas fa-times"></i>',
|
||||||
condition: li => {
|
condition: li => {
|
||||||
const item = game.items.get(li.data(idAttr));
|
const item = game.items.get(li.data(idAttr));
|
||||||
return item.getFlag("worldbuilding", "isTemplate");
|
return item.isTemplate;
|
||||||
},
|
},
|
||||||
callback: li => {
|
callback: li => {
|
||||||
const item = game.items.get(li.data(idAttr));
|
const item = game.items.get(li.data(idAttr));
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
export class SimpleTokenDocument extends TokenDocument {
|
|
||||||
|
|
||||||
/** @inheritdoc */
|
|
||||||
getBarAttribute(barName, {alternative}={}) {
|
|
||||||
const attr = super.getBarAttribute(barName, {alternative});
|
|
||||||
if ( attr === null ) return null;
|
|
||||||
attr.editable = true; // Attribute always editable, super requires attr to exist in actor template
|
|
||||||
return attr;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Extend the base TokenDocument to allow resource to support resource type attributes.
|
* Extend the base TokenDocument to support resource type attributes.
|
||||||
* @extends {TokenDocument}
|
* @extends {TokenDocument}
|
||||||
*/
|
*/
|
||||||
export class SimpleTokenDocument extends TokenDocument {
|
export class SimpleTokenDocument extends TokenDocument {
|
||||||
|
@ -13,6 +13,20 @@ export class SimpleTokenDocument extends TokenDocument {
|
||||||
data.editable = true;
|
data.editable = true;
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
|
||||||
|
static getTrackedAttributes(data, _path=[]) {
|
||||||
|
if ( data || _path.length ) return super.getTrackedAttributes(data, _path);
|
||||||
|
data = {};
|
||||||
|
for ( const model of Object.values(game.system.model.Actor) ) {
|
||||||
|
foundry.utils.mergeObject(data, model);
|
||||||
|
}
|
||||||
|
for ( const actor of game.actors ) {
|
||||||
|
if ( actor.isTemplate ) foundry.utils.mergeObject(data, actor.toObject().data);
|
||||||
|
}
|
||||||
|
return super.getTrackedAttributes(data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue