From e7a817f9c0bf1245a4a4f0b8ec6f6900aa7f52b8 Mon Sep 17 00:00:00 2001 From: WBHarry Date: Tue, 16 Sep 2025 16:39:24 +0200 Subject: [PATCH] . --- module/data/countdowns.mjs | 76 +++++++++++++++++++++++- module/systemRegistration/migrations.mjs | 4 +- 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/module/data/countdowns.mjs b/module/data/countdowns.mjs index 1bfc2b18..915599ff 100644 --- a/module/data/countdowns.mjs +++ b/module/data/countdowns.mjs @@ -22,7 +22,7 @@ class DhCountdownData extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; return { - countdowns: new fields.TypedObjectField(new fields.EmbeddedDataField(DhCountdown)), + countdowns: new fields.TypedObjectField(new fields.EmbeddedDataField(DhOldCountdown)), ownership: new fields.SchemaField({ default: new fields.NumberField({ required: true, @@ -59,6 +59,80 @@ class DhCountdownData extends foundry.abstract.DataModel { } } +/* Outdated and unused. Needed for migration. Remove in next minor version. (1.3) */ +class DhOldCountdown extends foundry.abstract.DataModel { + static defineSchema() { + const fields = foundry.data.fields; + return { + name: new fields.StringField({ + required: true, + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.name.label' + }), + img: new fields.FilePathField({ + categories: ['IMAGE'], + base64: false, + initial: 'icons/magic/time/hourglass-yellow-green.webp' + }), + ownership: new fields.SchemaField({ + default: new fields.NumberField({ + required: true, + choices: Object.values(CONST.DOCUMENT_OWNERSHIP_LEVELS), + initial: CONST.DOCUMENT_OWNERSHIP_LEVELS.NONE + }), + players: new fields.TypedObjectField( + new fields.SchemaField({ + type: new fields.NumberField({ + required: true, + choices: Object.values(CONST.DOCUMENT_OWNERSHIP_LEVELS), + initial: CONST.DOCUMENT_OWNERSHIP_LEVELS.INHERIT + }) + }) + ) + }), + progress: new fields.SchemaField({ + current: new fields.NumberField({ + required: true, + integer: true, + initial: 1, + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.progress.current.label' + }), + max: new fields.NumberField({ + required: true, + integer: true, + initial: 1, + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.progress.max.label' + }), + type: new fields.SchemaField({ + value: new fields.StringField({ + required: true, + choices: CONFIG.DH.GENERAL.countdownTypes, + initial: CONFIG.DH.GENERAL.countdownTypes.custom.id, + label: 'DAGGERHEART.GENERAL.type' + }), + label: new fields.StringField({ + label: 'DAGGERHEART.APPLICATIONS.Countdown.FIELDS.countdowns.element.progress.type.label.label' + }) + }) + }) + }; + } + + get playerOwnership() { + return Array.from(game.users).reduce((acc, user) => { + acc[user.id] = { + value: user.isGM + ? CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER + : this.ownership.players[user.id] && this.ownership.players[user.id].type !== -1 + ? this.ownership.players[user.id].type + : this.ownership.default, + isGM: user.isGM + }; + + return acc; + }, {}); + } +} + export class DhCountdown extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; diff --git a/module/systemRegistration/migrations.mjs b/module/systemRegistration/migrations.mjs index 684e9795..e27fa3bd 100644 --- a/module/systemRegistration/migrations.mjs +++ b/module/systemRegistration/migrations.mjs @@ -163,12 +163,12 @@ export async function runMigrations() { }, {}), progress: { ...countdown.progress, - type: countdown.progress.value + type: countdown.progress.type.value } }; return acc; - }); + }, {}); }; await countdownSettings.updateSource({