Improve how capacity consumption calculations are performed
This commit is contained in:
parent
cf109a6ed1
commit
aa5c6d5aba
6 changed files with 38 additions and 2 deletions
|
|
@ -1 +1,12 @@
|
||||||
export class DotDungeonItem extends Item {};
|
export class DotDungeonItem extends Item {
|
||||||
|
get usedCapacity() {
|
||||||
|
let capacity = 0;
|
||||||
|
if (this.system.uses_inventory_slot && this.system.quantity > 0) {
|
||||||
|
capacity++;
|
||||||
|
};
|
||||||
|
if (this.system.quantity_affects_used_capacity) {
|
||||||
|
capacity *= this.system.quantity;
|
||||||
|
};
|
||||||
|
return capacity;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
||||||
9
module/documents/Item/Material.mjs
Normal file
9
module/documents/Item/Material.mjs
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { DotDungeonItem } from "./GenericItem.mjs";
|
||||||
|
|
||||||
|
export class Material extends DotDungeonItem {
|
||||||
|
get usedCapacity() {
|
||||||
|
let affects = game.settings.get(`dotdungeon`, `materialsAffectCapacity`);
|
||||||
|
console.log(`materialsAffectCapacity =`, affects)
|
||||||
|
return affects ? super.usedCapacity : 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import { DotDungeonItem } from "./GenericItem.mjs";
|
import { DotDungeonItem } from "./GenericItem.mjs";
|
||||||
import { Aspect } from "./Aspect.mjs";
|
import { Aspect } from "./Aspect.mjs";
|
||||||
|
import { Material } from "./Material.mjs";
|
||||||
|
|
||||||
const classes = {
|
const classes = {
|
||||||
aspect: Aspect,
|
aspect: Aspect,
|
||||||
|
material: Material,
|
||||||
};
|
};
|
||||||
|
|
||||||
const defaultClass = DotDungeonItem;
|
const defaultClass = DotDungeonItem;
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,10 @@ export class CommonItemData extends foundry.abstract.TypeDataModel {
|
||||||
initial: true,
|
initial: true,
|
||||||
nullable: false,
|
nullable: false,
|
||||||
}),
|
}),
|
||||||
|
quantity_affects_used_capacity: new fields.BooleanField({
|
||||||
|
initial: true,
|
||||||
|
nullable: false,
|
||||||
|
}),
|
||||||
buy: new fields.NumberField({
|
buy: new fields.NumberField({
|
||||||
initial: null,
|
initial: null,
|
||||||
nullable: true,
|
nullable: true,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,16 @@ export default function() {
|
||||||
requiresReload: false,
|
requiresReload: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
game.settings.register(`dotdungeon`, `materialsAffectCapacity`, {
|
||||||
|
name: `dotdungeon.settings.materialsAffectCapacity.name`,
|
||||||
|
hint: `dotdungeon.settings.materialsAffectCapacity.description`,
|
||||||
|
scope: `world`,
|
||||||
|
config: true,
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
requiresReload: false,
|
||||||
|
});
|
||||||
|
|
||||||
game.settings.register(`dotdungeon`, `resourcesOrSupplies`, {
|
game.settings.register(`dotdungeon`, `resourcesOrSupplies`, {
|
||||||
name: `dotdungeon.settings.resourcesOrSupplies.name`,
|
name: `dotdungeon.settings.resourcesOrSupplies.name`,
|
||||||
hint: `dotdungeon.settings.resourcesOrSupplies.description`,
|
hint: `dotdungeon.settings.resourcesOrSupplies.description`,
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ export class PlayerSheetv2 extends GenericActorSheet {
|
||||||
get #inventoryCapacity() {
|
get #inventoryCapacity() {
|
||||||
return {
|
return {
|
||||||
used: this.actor.items
|
used: this.actor.items
|
||||||
.reduce((sum, i) => sum + (i.system.uses_inventory_slot ? i.system.quantity : 0), 0),
|
.reduce((sum, i) => sum + i.usedCapacity, 0),
|
||||||
max: this.actor.system.inventory_slots,
|
max: this.actor.system.inventory_slots,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue