Fixed data handling in the LevelUp view

This commit is contained in:
WBHarry 2025-05-28 19:49:22 +02:00
parent 3cc8800950
commit cc0766fc20
8 changed files with 231 additions and 412 deletions

View file

@ -1,4 +1,5 @@
import { getPathValue, getTier } from '../helpers/utils.mjs';
import { LevelOptionType } from './levelTier.mjs';
const fields = foundry.data.fields;
@ -97,8 +98,8 @@ export default class DhpPC extends foundry.abstract.TypeDataModel {
armorMarks: new fields.SchemaField({
max: new fields.NumberField({ initial: 6, integer: true }),
value: new fields.NumberField({ initial: 0, integer: true })
})
// levelUpData: new fields.TypeDataModel(DhpLevelUpData),
}),
levelData: new fields.EmbeddedDataField(DhPCLevelData)
};
}
@ -509,3 +510,29 @@ export default class DhpPC extends foundry.abstract.TypeDataModel {
else return 0;
}
}
class DhPCLevelData extends foundry.abstract.DataModel {
static defineSchema() {
return {
level: new fields.SchemaField({
current: new fields.NumberField({ required: true, integer: true, initial: 1 }),
changed: new fields.NumberField({ required: true, integer: true, initial: 1 })
}),
selections: new fields.ArrayField(
new fields.SchemaField({
tier: new fields.NumberField({ required: true, integer: true }),
level: new fields.NumberField({ required: true, integer: true }),
optionKey: new fields.StringField({ required: true }),
type: new fields.StringField({ required: true, choices: LevelOptionType }),
checkboxNr: new fields.NumberField({ required: true, integer: true }),
value: new fields.NumberField({ integer: true }),
amount: new fields.NumberField({ integer: true })
})
)
};
}
get canLevelUp() {
return this.level.current < this.level.updated;
}
}