diff --git a/module/applications/sidebar/tabs/actorDirectory.mjs b/module/applications/sidebar/tabs/actorDirectory.mjs index 1306de61..a3c37acc 100644 --- a/module/applications/sidebar/tabs/actorDirectory.mjs +++ b/module/applications/sidebar/tabs/actorDirectory.mjs @@ -102,7 +102,11 @@ export default class DhActorDirectory extends foundry.applications.sidebar.tabs. const actor = game.actors.get(li.dataset.entryId); if (!actor) throw new Error('Unexpected missing actor'); - await game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, actor.id); + const currentActiveParty = game.actors.find(x => x.type === 'party' && x.system.active); + if (currentActiveParty) + await currentActiveParty.update({ 'system.active': false }); + + await actor.update({ 'system.active': true }); ui.actors.render(); } } diff --git a/module/config/settingsConfig.mjs b/module/config/settingsConfig.mjs index 12e8536e..74315a8b 100644 --- a/module/config/settingsConfig.mjs +++ b/module/config/settingsConfig.mjs @@ -40,8 +40,7 @@ export const gameSettings = { LastMigrationVersion: 'LastMigrationVersion', SpotlightRequestQueue: 'SpotlightRequestQueue', CompendiumBrowserSettings: 'CompendiumBrowserSettings', - SpotlightTracker: 'SpotlightTracker', - ActiveParty: 'ActiveParty', + SpotlightTracker: 'SpotlightTracker' }; export const actionAutomationChoices = { diff --git a/module/data/actor/party.mjs b/module/data/actor/party.mjs index ba39b7e5..d35261fc 100644 --- a/module/data/actor/party.mjs +++ b/module/data/actor/party.mjs @@ -9,6 +9,7 @@ export default class DhParty extends BaseDataActor { const fields = foundry.data.fields; return { ...super.defineSchema(), + active: new fields.BooleanField(), partyMembers: new ForeignDocumentUUIDArrayField({ type: 'Actor' }, { prune: true }), notes: new fields.HTMLField(), gold: new fields.SchemaField({ @@ -22,10 +23,6 @@ export default class DhParty extends BaseDataActor { }; } - get active() { - return game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty) === this.parent.id; - } - /* -------------------------------------------- */ /**@inheritdoc */ @@ -48,21 +45,13 @@ export default class DhParty extends BaseDataActor { } } - _onCreate(data, options, userId) { - super._onCreate(data, options, userId); + /**@inheritdoc */ + async _preCreate(data, options, user) { + const allowed = await super._preCreate(data, options, user); + if (allowed === false) return; - if (game.user.isActiveGM && !game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty)) { - game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, this.parent.id).then(_ => { - ui.actors.render(); - }); - } - } - - async _preDelete() { - super._preDelete(); - - if (this.active) - game.settings.set(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, null); + if (!game.actors.some(x => x.type === 'party' && x.active)) + await this.updateSource({ active: true }); } _onDelete(options, userId) { diff --git a/module/documents/actor.mjs b/module/documents/actor.mjs index d578a481..48f2f171 100644 --- a/module/documents/actor.mjs +++ b/module/documents/actor.mjs @@ -125,8 +125,6 @@ export default class DhpActor extends Actor { game.system.registeredTriggers.unregisterItemTriggers(token.actor.items); } } - - if(this.system._preDelete() === false) return false; } _onDelete(options, userId) { diff --git a/module/systemRegistration/settings.mjs b/module/systemRegistration/settings.mjs index ae78e23b..63611cda 100644 --- a/module/systemRegistration/settings.mjs +++ b/module/systemRegistration/settings.mjs @@ -189,11 +189,4 @@ const registerNonConfigSettings = () => { config: false, type: SpotlightTracker }); - - game.settings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.ActiveParty, { - scope: 'world', - config: false, - type: String, - default: null, - }); };