diff --git a/lang/en.json b/lang/en.json index eb736f5e..30878907 100755 --- a/lang/en.json +++ b/lang/en.json @@ -2366,7 +2366,6 @@ "maxDomains": { "label": "Max Class Domains", "hint": "Max domains you can set on a class" } }, "currency": { - "enabled": "Enable Overrides", "title": "Currency Overrides", "currencyName": "Currency Name", "coinName": "Coin Name", diff --git a/module/applications/sheets/actors/character.mjs b/module/applications/sheets/actors/character.mjs index 6b89bf48..85267944 100644 --- a/module/applications/sheets/actors/character.mjs +++ b/module/applications/sheets/actors/character.mjs @@ -210,26 +210,33 @@ export default class CharacterSheet extends DHBaseActorSheet { context.resources.stress.emptyPips = context.resources.stress.max < maxResource ? maxResource - context.resources.stress.max : 0; - context.inventory = { - currency: { - title: game.i18n.localize('DAGGERHEART.CONFIG.Gold.title'), - coins: game.i18n.localize('DAGGERHEART.CONFIG.Gold.coins'), - handfuls: game.i18n.localize('DAGGERHEART.CONFIG.Gold.handfuls'), - bags: game.i18n.localize('DAGGERHEART.CONFIG.Gold.bags'), - chests: game.i18n.localize('DAGGERHEART.CONFIG.Gold.chests') - } - }; + context.inventory = { currencies: {} }; + const { title, ...currencies } = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.Homebrew + ).currency; + for (let key in currencies) { + context.inventory.currencies[key] = { + ...currencies[key], + field: context.systemFields.gold.fields[key], + value: context.source.system.gold[key] + }; + } + // context.inventory = { + // currency: { + // title: game.i18n.localize('DAGGERHEART.CONFIG.Gold.title'), + // coins: game.i18n.localize('DAGGERHEART.CONFIG.Gold.coins'), + // handfuls: game.i18n.localize('DAGGERHEART.CONFIG.Gold.handfuls'), + // bags: game.i18n.localize('DAGGERHEART.CONFIG.Gold.bags'), + // chests: game.i18n.localize('DAGGERHEART.CONFIG.Gold.chests') + // } + // }; context.beastformActive = this.document.effects.find(x => x.type === 'beastform'); - const homebrewCurrency = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).currency; - if (homebrewCurrency.enabled) { - context.inventory.currency = homebrewCurrency; - } - - if (context.inventory.length === 0) { - context.inventory = Array(1).fill(Array(5).fill([])); - } + // if (context.inventory.length === 0) { + // context.inventory = Array(1).fill(Array(5).fill([])); + // } return context; } diff --git a/module/applications/sheets/actors/party.mjs b/module/applications/sheets/actors/party.mjs index 8d009778..e89a2b14 100644 --- a/module/applications/sheets/actors/party.mjs +++ b/module/applications/sheets/actors/party.mjs @@ -96,23 +96,17 @@ export default class Party extends DHBaseActorSheet { async _prepareContext(_options) { const context = await super._prepareContext(_options); - context.inventory = { - currency: { - title: game.i18n.localize('DAGGERHEART.CONFIG.Gold.title'), - coins: game.i18n.localize('DAGGERHEART.CONFIG.Gold.coins'), - handfuls: game.i18n.localize('DAGGERHEART.CONFIG.Gold.handfuls'), - bags: game.i18n.localize('DAGGERHEART.CONFIG.Gold.bags'), - chests: game.i18n.localize('DAGGERHEART.CONFIG.Gold.chests') - } - }; - - const homebrewCurrency = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Homebrew).currency; - if (homebrewCurrency.enabled) { - context.inventory.currency = homebrewCurrency; - } - - if (context.inventory.length === 0) { - context.inventory = Array(1).fill(Array(5).fill([])); + context.inventory = { currencies: {} }; + const { title, ...currencies } = game.settings.get( + CONFIG.DH.id, + CONFIG.DH.SETTINGS.gameSettings.Homebrew + ).currency; + for (let key in currencies) { + context.inventory.currencies[key] = { + ...currencies[key], + field: context.systemFields.gold.fields[key], + value: context.source.system.gold[key] + }; } return context; diff --git a/module/data/settings/Homebrew.mjs b/module/data/settings/Homebrew.mjs index ca44a3ed..ead3c962 100644 --- a/module/data/settings/Homebrew.mjs +++ b/module/data/settings/Homebrew.mjs @@ -1,6 +1,16 @@ import { defaultRestOptions } from '../../config/generalConfig.mjs'; import { ActionsField } from '../fields/actionField.mjs'; +const currencyField = (initial, label) => + new foundry.data.fields.SchemaField({ + enabled: new foundry.data.fields.BooleanField({ required: true, initial: true }), + label: new foundry.data.fields.StringField({ + required: true, + initial, + label + }) + }); + export default class DhHomebrew extends foundry.abstract.DataModel { static defineSchema() { const fields = foundry.data.fields; @@ -30,36 +40,15 @@ export default class DhHomebrew extends foundry.abstract.DataModel { initial: () => [2, 1, 1, 0, 0, -1] }), currency: new fields.SchemaField({ - enabled: new fields.BooleanField({ - required: true, - initial: false, - label: 'DAGGERHEART.SETTINGS.Homebrew.currency.enabled' - }), title: new fields.StringField({ required: true, initial: 'Gold', label: 'DAGGERHEART.SETTINGS.Homebrew.currency.currencyName' }), - coins: new fields.StringField({ - required: true, - initial: 'Coins', - label: 'DAGGERHEART.SETTINGS.Homebrew.currency.coinName' - }), - handfuls: new fields.StringField({ - required: true, - initial: 'Handfuls', - label: 'DAGGERHEART.SETTINGS.Homebrew.currency.handfulName' - }), - bags: new fields.StringField({ - required: true, - initial: 'Bags', - label: 'DAGGERHEART.SETTINGS.Homebrew.currency.bagName' - }), - chests: new fields.StringField({ - required: true, - initial: 'Chests', - label: 'DAGGERHEART.SETTINGS.Homebrew.currency.chestName' - }) + coins: currencyField('Coins', 'DAGGERHEART.SETTINGS.Homebrew.currency.coinName'), + handfuls: currencyField('Handfuls', 'DAGGERHEART.SETTINGS.Homebrew.currency.handfulName'), + bags: currencyField('Bags', 'DAGGERHEART.SETTINGS.Homebrew.currency.bagName'), + chests: currencyField('Chests', 'DAGGERHEART.SETTINGS.Homebrew.currency.chestName') }), restMoves: new fields.SchemaField({ longRest: new fields.SchemaField({ @@ -146,4 +135,26 @@ export default class DhHomebrew extends foundry.abstract.DataModel { }) }; } + + /** @inheritDoc */ + _initializeSource(source, options = {}) { + source = super._initializeSource(source, options); + source.currency.coins = { + enabled: source.currency.coins.enabled ?? true, + label: source.currency.coins.label || source.currency.coins + }; + source.currency.handfuls = { + enabled: source.currency.handfuls.enabled ?? true, + label: source.currency.handfuls.label || source.currency.handfuls + }; + source.currency.bags = { + enabled: source.currency.bags.enabled ?? true, + label: source.currency.bags.label || source.currency.bags + }; + source.currency.chests = { + enabled: source.currency.chests.enabled ?? true, + label: source.currency.chests.label || source.currency.chests + }; + return source; + } } diff --git a/styles/less/sheets/actors/character/inventory.less b/styles/less/sheets/actors/character/inventory.less index 5605a3d0..b555aa3d 100644 --- a/styles/less/sheets/actors/character/inventory.less +++ b/styles/less/sheets/actors/character/inventory.less @@ -57,11 +57,12 @@ } .currency-section { - display: flex; + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; gap: 10px; padding: 10px 10px 0; - input { + .input { color: light-dark(@dark, @beige); } } diff --git a/styles/less/sheets/actors/party/inventory.less b/styles/less/sheets/actors/party/inventory.less index 1dfc66de..2dcc97d8 100644 --- a/styles/less/sheets/actors/party/inventory.less +++ b/styles/less/sheets/actors/party/inventory.less @@ -61,11 +61,12 @@ } .currency-section { - display: flex; + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; gap: 10px; padding: 10px 10px 0; - input { + .input { color: light-dark(@dark, @beige); } } diff --git a/styles/less/ui/settings/settings.less b/styles/less/ui/settings/settings.less index 788db394..49c9fc7c 100644 --- a/styles/less/ui/settings/settings.less +++ b/styles/less/ui/settings/settings.less @@ -27,6 +27,21 @@ } } + .toggleable-row { + width: 100%; + display: flex; + align-items: center; + gap: 4px; + + &.spaced { + padding-right: 28.5px; + } + + .form-group { + flex: 1; + } + } + .setting-group-field { white-space: nowrap; display: flex; diff --git a/templates/settings/homebrew-settings/settings.hbs b/templates/settings/homebrew-settings/settings.hbs index 893e1bc3..d59a9cd5 100644 --- a/templates/settings/homebrew-settings/settings.hbs +++ b/templates/settings/homebrew-settings/settings.hbs @@ -29,13 +29,25 @@ - {{formGroup settingFields.schema.fields.currency.fields.enabled value=settingFields._source.currency.enabled localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.title value=settingFields._source.currency.title localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.coins value=settingFields._source.currency.coins localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.handfuls value=settingFields._source.currency.handfuls localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.bags value=settingFields._source.currency.bags localize=true}} - {{formGroup settingFields.schema.fields.currency.fields.chests value=settingFields._source.currency.chests localize=true}} - +