68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
import { SYSTEM } from "../config/system.mjs"
|
|
|
|
export function htmlField(initial = "", options = {}) {
|
|
return new foundry.data.fields.HTMLField({ required: true, initial, textSearch: true, ...options })
|
|
}
|
|
|
|
export function stringField(initial = "", options = {}) {
|
|
return new foundry.data.fields.StringField({ required: true, nullable: false, initial, ...options })
|
|
}
|
|
|
|
export function numberField(initial = 0, min = 0, max = null, options = {}) {
|
|
return new foundry.data.fields.NumberField({
|
|
required: true,
|
|
nullable: false,
|
|
integer: true,
|
|
initial,
|
|
min,
|
|
...(max === null ? {} : { max }),
|
|
...options,
|
|
})
|
|
}
|
|
|
|
export function booleanField(initial = false, options = {}) {
|
|
return new foundry.data.fields.BooleanField({ required: true, initial, ...options })
|
|
}
|
|
|
|
export function abilitySchema() {
|
|
const fields = foundry.data.fields
|
|
const schema = {}
|
|
for (const abilityId of SYSTEM.abilityOrder) {
|
|
const ability = SYSTEM.abilities[abilityId]
|
|
schema[abilityId] = new fields.SchemaField(
|
|
{
|
|
label: stringField(ability.label, { label: "MGNE.Common.Label" }),
|
|
value: numberField(0, -3, 6, { label: "MGNE.Common.Value" }),
|
|
},
|
|
{ label: ability.label }
|
|
)
|
|
}
|
|
return new fields.SchemaField(schema)
|
|
}
|
|
|
|
export function conditionSchema() {
|
|
const fields = foundry.data.fields
|
|
const schema = {}
|
|
for (const condition of Object.values(SYSTEM.conditions)) {
|
|
if (condition.hasValue) {
|
|
schema[condition.id] = new fields.SchemaField(
|
|
{ value: numberField(0, 0, 12, { label: "MGNE.Common.Value" }) },
|
|
{ label: condition.label }
|
|
)
|
|
} else {
|
|
schema[condition.id] = new fields.SchemaField(
|
|
{ active: booleanField(false, { label: condition.label }) },
|
|
{ label: condition.label }
|
|
)
|
|
}
|
|
}
|
|
return new fields.SchemaField(schema)
|
|
}
|
|
|
|
export function trackSchema(initialValue = 0, initialMax = 0) {
|
|
return new foundry.data.fields.SchemaField({
|
|
value: numberField(initialValue, -99),
|
|
max: numberField(initialMax, 0),
|
|
})
|
|
}
|