Improve how capacity consumption calculations are performed

This commit is contained in:
Oliver-Akins 2024-03-20 17:56:41 -06:00
parent cf109a6ed1
commit aa5c6d5aba
6 changed files with 38 additions and 2 deletions

View file

@ -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;
};
};

View 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;
};
};

View file

@ -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;

View file

@ -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,

View file

@ -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`,

View file

@ -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,
}; };
}; };