Skip to content

Commit caa0728

Browse files
committed
Document Data Models
- provide better initial values - tighten validation
1 parent 747f63f commit caa0728

26 files changed

+184
-192
lines changed

module/documents/actors/character/character-data-model.mjs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -47,42 +47,42 @@ export class CharacterDataModel extends foundry.abstract.TypeDataModel {
4747
static defineSchema() {
4848
const { SchemaField, NumberField, StringField, ArrayField, EmbeddedDataField } = foundry.data.fields;
4949
return {
50-
level: new SchemaField({ value: new NumberField({ min: 5, max: 60, initial: 5, integer: true , nullable: false}) }),
50+
level: new SchemaField({ value: new NumberField({ initial: 5, min: 5, max: 60, integer: true, nullable: false }) }),
5151
resources: new SchemaField({
5252
hp: new SchemaField({
53-
min: new NumberField({ min: 0, initial: 0, integer: true , nullable: false}),
54-
max: new NumberField({ min: 0, initial: 10, integer: true , nullable: false}),
55-
value: new NumberField({ min: 0, initial: 10, integer: true , nullable: false}),
56-
bonus: new NumberField({ min: 0, initial: 0, integer: true , nullable: false}),
53+
min: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
54+
max: new NumberField({ initial: 10, min: 0, integer: true, nullable: false }),
55+
value: new NumberField({ initial: 10, min: 0, integer: true, nullable: false }),
56+
bonus: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
5757
}),
5858
mp: new SchemaField({
59-
min: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
60-
max: new NumberField({ min: 0, initial: 10, integer: true, nullable: false}),
61-
value: new NumberField({ min: 0, initial: 10, integer: true, nullable: false}),
62-
bonus: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
59+
min: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
60+
max: new NumberField({ initial: 10, min: 0, integer: true, nullable: false }),
61+
value: new NumberField({ initial: 10, min: 0, integer: true, nullable: false }),
62+
bonus: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
6363
}),
6464
rp1: new SchemaField({
6565
name: new StringField({ initial: '' }),
66-
value: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
66+
value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
6767
}),
6868
rp2: new SchemaField({
6969
name: new StringField({ initial: '' }),
70-
value: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
70+
value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
7171
}),
7272
rp3: new SchemaField({
7373
name: new StringField({ initial: '' }),
74-
value: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
74+
value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
7575
}),
76-
zenit: new SchemaField({ value: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}) }),
76+
zenit: new SchemaField({ value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }) }),
7777
ip: new SchemaField({
78-
min: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
79-
max: new NumberField({ min: 0, initial: 6, integer: true, nullable: false}),
80-
value: new NumberField({ min: 0, initial: 6, integer: true, nullable: false}),
81-
bonus: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
78+
min: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
79+
max: new NumberField({ initial: 6, min: 0, integer: true, nullable: false }),
80+
value: new NumberField({ initial: 6, min: 0, integer: true, nullable: false }),
81+
bonus: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
8282
}),
83-
fp: new SchemaField({ value: new NumberField({ min: 0, initial: 3, integer: true, nullable: false}) }),
83+
fp: new SchemaField({ value: new NumberField({ initial: 3, min: 0, integer: true, nullable: false }) }),
8484
bonds: new ArrayField(new EmbeddedDataField(BondDataModel, {})),
85-
exp: new SchemaField({ value: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}) }),
85+
exp: new SchemaField({ value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }) }),
8686
identity: new SchemaField({ name: new StringField() }),
8787
pronouns: new SchemaField({ name: new StringField() }),
8888
theme: new SchemaField({ name: new StringField() }),
@@ -92,16 +92,16 @@ export class CharacterDataModel extends foundry.abstract.TypeDataModel {
9292
attributes: new EmbeddedDataField(AttributesDataModel, {}),
9393
derived: new SchemaField({
9494
init: new SchemaField({
95-
value: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
96-
bonus: new NumberField({ initial: 0, integer: true, nullable: false}),
95+
value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
96+
bonus: new NumberField({ initial: 0, integer: true, nullable: false }),
9797
}),
9898
def: new SchemaField({
99-
value: new NumberField({ min: 0, initial: 0, integer: true, nullable: false}),
100-
bonus: new NumberField({ initial: 0, integer: true , nullable: false}),
99+
value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
100+
bonus: new NumberField({ initial: 0, integer: true, nullable: false }),
101101
}),
102102
mdef: new SchemaField({
103-
value: new NumberField({ min: 0, initial: 0, integer: true , nullable: false}),
104-
bonus: new NumberField({ initial: 0, integer: true , nullable: false}),
103+
value: new NumberField({ initial: 0, min: 0, integer: true, nullable: false }),
104+
bonus: new NumberField({ initial: 0, integer: true, nullable: false }),
105105
}),
106106
}),
107107
bonuses: new EmbeddedDataField(BonusesDataModel, {}),

module/documents/actors/common/accuracy-bonuses-data-model.mjs

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,24 @@
1414
* @property {number} sword
1515
* @property {number} thrown
1616
*/
17-
export class AccuracyBonusesDataModel extends foundry.abstract.DataModel
18-
{
19-
static defineSchema()
20-
{
21-
const {NumberField} = foundry.data.fields;
22-
return {
23-
accuracyCheck: new NumberField({initial: 0, integer: true, nullable: false}),
24-
magicCheck: new NumberField({initial: 0, integer: true, nullable: false}),
25-
opposedCheck: new NumberField({initial: 0, integer: true, nullable: false}),
26-
openCheck: new NumberField({initial: 0, integer: true, nullable: false}),
27-
arcane: new NumberField({initial: 0, integer: true, nullable: false}),
28-
bow: new NumberField({initial: 0, integer: true, nullable: false}),
29-
brawling: new NumberField({initial: 0, integer: true, nullable: false}),
30-
dagger: new NumberField({initial: 0, integer: true, nullable: false}),
31-
firearm: new NumberField({initial: 0, integer: true, nullable: false}),
32-
flail: new NumberField({initial: 0, integer: true, nullable: false}),
33-
heavy: new NumberField({initial: 0, integer: true, nullable: false}),
34-
spear: new NumberField({initial: 0, integer: true, nullable: false}),
35-
sword: new NumberField({initial: 0, integer: true, nullable: false}),
36-
thrown: new NumberField({initial: 0, integer: true, nullable: false}),
37-
};
38-
}
39-
}
17+
export class AccuracyBonusesDataModel extends foundry.abstract.DataModel {
18+
static defineSchema() {
19+
const { NumberField } = foundry.data.fields;
20+
return {
21+
accuracyCheck: new NumberField({ initial: 0, integer: true, nullable: false }),
22+
magicCheck: new NumberField({ initial: 0, integer: true, nullable: false }),
23+
opposedCheck: new NumberField({ initial: 0, integer: true, nullable: false }),
24+
openCheck: new NumberField({ initial: 0, integer: true, nullable: false }),
25+
arcane: new NumberField({ initial: 0, integer: true, nullable: false }),
26+
bow: new NumberField({ initial: 0, integer: true, nullable: false }),
27+
brawling: new NumberField({ initial: 0, integer: true, nullable: false }),
28+
dagger: new NumberField({ initial: 0, integer: true, nullable: false }),
29+
firearm: new NumberField({ initial: 0, integer: true, nullable: false }),
30+
flail: new NumberField({ initial: 0, integer: true, nullable: false }),
31+
heavy: new NumberField({ initial: 0, integer: true, nullable: false }),
32+
spear: new NumberField({ initial: 0, integer: true, nullable: false }),
33+
sword: new NumberField({ initial: 0, integer: true, nullable: false }),
34+
thrown: new NumberField({ initial: 0, integer: true, nullable: false }),
35+
};
36+
}
37+
}

module/documents/actors/common/affinities-data-model.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {AffinityDataModel} from "./affinity-data-model.mjs";
1+
import {AffinityDataModel} from './affinity-data-model.mjs';
22

33
/**
44
* @property {AffinityDataModel} phys

module/documents/actors/common/affinity-data-model.mjs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@
33
* @property {number} current
44
* @property {number} bonus
55
*/
6-
export class AffinityDataModel extends foundry.abstract.DataModel
7-
{
8-
static defineSchema()
9-
{
10-
const {NumberField} = foundry.data.fields;
11-
return {
12-
base: new NumberField({min: -1, max: 4, initial: 0, integer: true, nullable: false}),
13-
current: new NumberField({min: -1, max: 4, initial: 0, integer: true, nullable: false}),
14-
bonus: new NumberField({min: -5, max: 5, initial: 0, integer: true, nullable: false}),
15-
};
16-
}
17-
}
6+
export class AffinityDataModel extends foundry.abstract.DataModel {
7+
static defineSchema() {
8+
const { NumberField } = foundry.data.fields;
9+
return {
10+
base: new NumberField({ initial: 0, min: -1, max: 4, integer: true, nullable: false }),
11+
current: new NumberField({ initial: 0, min: -1, max: 4, integer: true, nullable: false }),
12+
bonus: new NumberField({ initial: 0, min: -5, max: 5, integer: true, nullable: false }),
13+
};
14+
}
15+
}
Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1+
/**
2+
* @param {number} number
3+
* @return {boolean}
4+
*/
5+
function isEven(number) {
6+
return number % 2 === 0;
7+
}
8+
19
/**
210
* @property {number} base
311
* @property {number} current
412
* @property {number} bonus
513
*/
6-
export class AttributeDataModel extends foundry.abstract.DataModel
7-
{
8-
static defineSchema()
9-
{
10-
const {NumberField} = foundry.data.fields;
11-
return {
12-
base: new NumberField({min: 6, max: 12, initial: 8, integer: true, validate: (value) => value % 2 === 0, nullable: false}),
13-
current: new NumberField({
14-
min: 6,
15-
max: 12,
16-
initial: 8,
17-
integer: true,
18-
validate: (value) => value % 2 === 0
19-
}),
20-
bonus: new NumberField({min: -6, max: 6, initial: 0, integer: true, validate: (value) => value % 2 === 0, nullable: false}),
21-
};
22-
}
23-
}
14+
export class AttributeDataModel extends foundry.abstract.DataModel {
15+
static defineSchema() {
16+
const { NumberField } = foundry.data.fields;
17+
return {
18+
base: new NumberField({ initial: 8, min: 6, max: 12, integer: true, nullable: false, validate: isEven }),
19+
current: new NumberField({ initial: 8, min: 6, max: 12, integer: true, nullable: false, validate: isEven }),
20+
bonus: new NumberField({ initial: 0, min: -6, max: 6, integer: true, nullable: false, validate: isEven }),
21+
};
22+
}
23+
}

module/documents/actors/common/attributes-data-model.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {AttributeDataModel} from "./attribute-data-model.mjs";
1+
import {AttributeDataModel} from './attribute-data-model.mjs';
22

33
/**
44
* @property {AttributeDataModel} dex

module/documents/actors/common/bond-data-model.mjs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,15 @@
55
* @property {"Affection", "Hatred"} affHat
66
* @property {number} strength
77
*/
8-
export class BondDataModel extends foundry.abstract.DataModel
9-
{
10-
static defineSchema()
11-
{
12-
const {StringField, NumberField} = foundry.data.fields;
13-
return {
14-
name: new StringField({initial: ''}),
15-
admInf: new StringField({initial: '', blank: true, choices: ['Admiration', 'Inferiority']}),
16-
loyMis: new StringField({initial: '', blank: true, choices: ['Loyalty', 'Mistrust']}),
17-
affHat: new StringField({initial: '', blank: true, choices: ['Affection', 'Hatred']}),
18-
strength: new NumberField({min: 0, max: 4, initial: 0, nullable: false}),
19-
};
20-
}
21-
}
8+
export class BondDataModel extends foundry.abstract.DataModel {
9+
static defineSchema() {
10+
const { StringField, NumberField } = foundry.data.fields;
11+
return {
12+
name: new StringField({ initial: '' }),
13+
admInf: new StringField({ initial: '', blank: true, choices: ['Admiration', 'Inferiority'] }),
14+
loyMis: new StringField({ initial: '', blank: true, choices: ['Loyalty', 'Mistrust'] }),
15+
affHat: new StringField({ initial: '', blank: true, choices: ['Affection', 'Hatred'] }),
16+
strength: new NumberField({ initial: 0, min: 0, max: 4, integer: true, nullable: false }),
17+
};
18+
}
19+
}

module/documents/actors/common/bonuses-data-model.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {AccuracyBonusesDataModel} from "./accuracy-bonuses-data-model.mjs";
2-
import {DamageBonusesDataModel} from "./damage-bonuses-data-model.mjs";
1+
import {AccuracyBonusesDataModel} from './accuracy-bonuses-data-model.mjs';
2+
import {DamageBonusesDataModel} from './damage-bonuses-data-model.mjs';
33

44
/**
55
* @property {AccuracyBonusesDataModel} accuracy

module/documents/actors/common/damage-bonuses-data-model.mjs

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,22 @@
1212
* @property {number} sword
1313
* @property {number} thrown
1414
*/
15-
export class DamageBonusesDataModel extends foundry.abstract.DataModel
16-
{
17-
static defineSchema()
18-
{
19-
const {NumberField} = foundry.data.fields;
20-
return {
21-
physical: new NumberField({initial: 0, integer: true, nullable: false}),
22-
magic: new NumberField({initial: 0, integer: true, nullable: false}),
23-
arcane: new NumberField({initial: 0, integer: true, nullable: false}),
24-
bow: new NumberField({initial: 0, integer: true, nullable: false}),
25-
brawling: new NumberField({initial: 0, integer: true, nullable: false}),
26-
dagger: new NumberField({initial: 0, integer: true, nullable: false}),
27-
firearm: new NumberField({initial: 0, integer: true, nullable: false}),
28-
flail: new NumberField({initial: 0, integer: true, nullable: false}),
29-
heavy: new NumberField({initial: 0, integer: true, nullable: false}),
30-
spear: new NumberField({initial: 0, integer: true, nullable: false}),
31-
sword: new NumberField({initial: 0, integer: true, nullable: false}),
32-
thrown: new NumberField({initial: 0, integer: true, nullable: false}),
33-
};
34-
}
35-
}
15+
export class DamageBonusesDataModel extends foundry.abstract.DataModel {
16+
static defineSchema() {
17+
const { NumberField } = foundry.data.fields;
18+
return {
19+
physical: new NumberField({ initial: 0, integer: true, nullable: false }),
20+
magic: new NumberField({ initial: 0, integer: true, nullable: false }),
21+
arcane: new NumberField({ initial: 0, integer: true, nullable: false }),
22+
bow: new NumberField({ initial: 0, integer: true, nullable: false }),
23+
brawling: new NumberField({ initial: 0, integer: true, nullable: false }),
24+
dagger: new NumberField({ initial: 0, integer: true, nullable: false }),
25+
firearm: new NumberField({ initial: 0, integer: true, nullable: false }),
26+
flail: new NumberField({ initial: 0, integer: true, nullable: false }),
27+
heavy: new NumberField({ initial: 0, integer: true, nullable: false }),
28+
spear: new NumberField({ initial: 0, integer: true, nullable: false }),
29+
sword: new NumberField({ initial: 0, integer: true, nullable: false }),
30+
thrown: new NumberField({ initial: 0, integer: true, nullable: false }),
31+
};
32+
}
33+
}

0 commit comments

Comments
 (0)