From 98f9957ba0ff836185c7373bc6293b250beb188b Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Thu, 23 Apr 2026 06:35:02 -0400 Subject: [PATCH 1/2] Style and restore aid modifiers --- .../applications/dialogs/groupRollDialog.mjs | 16 ++++---- .../less/dialog/group-roll-dialog/main.less | 40 ++++++++++++++++++- .../dialogs/groupRollDialog/parts/member.hbs | 14 ++++++- .../dialogs/groupRollDialog/parts/result.hbs | 4 +- 4 files changed, 63 insertions(+), 11 deletions(-) diff --git a/module/applications/dialogs/groupRollDialog.mjs b/module/applications/dialogs/groupRollDialog.mjs index 821a91a1..6325795a 100644 --- a/module/applications/dialogs/groupRollDialog.mjs +++ b/module/applications/dialogs/groupRollDialog.mjs @@ -37,7 +37,7 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat tag: 'form', id: 'GroupRollDialog', classes: ['daggerheart', 'views', 'dh-style', 'dialog', 'group-roll-dialog'], - position: { width: 380, height: 'auto' }, + position: { width: 390, height: 'auto' }, window: { icon: 'fa-solid fa-users' }, @@ -47,7 +47,7 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat makeRoll: this.#makeRoll, removeRoll: this.#removeRoll, rerollDice: this.#rerollDice, - markSuccessfull: this.#markSuccessfull, + markSuccessful: this.#markSuccessful, cancelRoll: this.#onCancelRoll, finishRoll: this.#finishRoll }, @@ -204,7 +204,8 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat isEditable: actor?.testUserPermission(game.user, CONST.DOCUMENT_OWNERSHIP_LEVELS.OWNER), key: partId, readyToRoll: Boolean(data.rollChoice), - hasRolled: Boolean(data.rollData) + hasRolled: Boolean(data.rollData), + modifier: data.successfull ? 1 : data.successfull === false ? -1 : 0 }; } @@ -406,12 +407,13 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat ); } - static #markSuccessfull(_event, button) { - const previousValue = this.party.system.groupRoll.aidingCharacters[button.dataset.member].successfull; - const newValue = Boolean(button.dataset.successfull === 'true'); + static #markSuccessful(_event, button) { + const memberKey = button.closest('[data-member-key]').dataset.memberKey; + const previousValue = this.party.system.groupRoll.aidingCharacters[memberKey].successfull; + const newValue = Boolean(button.dataset.success === 'true'); this.updatePartyData( { - [`system.groupRoll.aidingCharacters.${button.dataset.member}.successfull`]: + [`system.groupRoll.aidingCharacters.${memberKey}.successfull`]: previousValue === newValue ? null : newValue }, this.getUpdatingParts(button) diff --git a/styles/less/dialog/group-roll-dialog/main.less b/styles/less/dialog/group-roll-dialog/main.less index a56281aa..98247a24 100644 --- a/styles/less/dialog/group-roll-dialog/main.less +++ b/styles/less/dialog/group-roll-dialog/main.less @@ -19,15 +19,31 @@ } .item-tags { + gap: 6px; + .tag.failure, .tag.success { + font-weight: 600; + justify-content: center; + min-width: 3ch; + } + + .tag.success { + border-color: @green; background: @green-10; color: @green; } .tag.failure { + border-color: @red; background: @red-10; color: @red; } + + .tag { + padding-top: 0; + padding-bottom: 0; + line-height: 1.1875rem; + } } .member-roll-container { @@ -48,12 +64,30 @@ .trait { display: flex; align-items: center; - gap: var(--spacer-8); + gap: 6px; select { --input-height: 2em; width: auto; } } + .item-tags { + align-items: stretch; + .buttons { + align-items: stretch; + display: flex; + button { + --button-size: auto; + color: var(--medium-red); + padding: 0 var(--spacer-4); + &[data-success=true] { + color: var(--green); + } + &.inactive { + opacity: 0.5; + } + } + } + } } &.inactive { @@ -178,6 +212,10 @@ margin-block: var(--spacer-4); } + .modifiers .item-tags { + min-height: calc(2px + 1.1875rem); + } + .total { .label { font-size: var(--font-size-14); diff --git a/templates/dialogs/groupRollDialog/parts/member.hbs b/templates/dialogs/groupRollDialog/parts/member.hbs index a57600cd..d2cc2b84 100644 --- a/templates/dialogs/groupRollDialog/parts/member.hbs +++ b/templates/dialogs/groupRollDialog/parts/member.hbs @@ -1,13 +1,23 @@ {{#with (ifThen (eq partId "leader") leader (lookup members partId))}}
{{log this}} - {{log @root}}
{{name}} {{#if hasRolled}}
{{rollChoiceLabel}}
+ {{#if modifier}} + + {{numberFormat modifier sign=true}} + + {{/if}} + {{#if (and isEditable (ne ../partId "leader"))}} +
+ + +
+ {{/if}}
{{else if readyToRoll}}
@@ -40,7 +50,7 @@ {{/if}} - {{#if (gte roll.modifierTotal 0)}}+{{else}}-{{/if}} + {{#if (gte roll.modifierTotal 0)}}+{{else}}-{{/if}} {{positive roll.modifierTotal}}
diff --git a/templates/dialogs/groupRollDialog/parts/result.hbs b/templates/dialogs/groupRollDialog/parts/result.hbs index 668c1ef0..993fbb02 100644 --- a/templates/dialogs/groupRollDialog/parts/result.hbs +++ b/templates/dialogs/groupRollDialog/parts/result.hbs @@ -12,7 +12,9 @@ Modifiers
{{#each groupRoll.modifiers as |modifier|}} - {{#if (gte modifier 0)}}+{{else}}-{{/if}}{{positive modifier}} + + {{numberFormat modifier sign=true}} + {{/each}}
From 632e33ecd6e8b945a8ec8fb2620d8524158d2313 Mon Sep 17 00:00:00 2001 From: Carlos Fernandez Date: Thu, 23 Apr 2026 06:53:41 -0400 Subject: [PATCH 2/2] Move successful buttons to inner result --- .../less/dialog/group-roll-dialog/main.less | 205 +++++++++--------- .../dialogs/groupRollDialog/parts/member.hbs | 60 ++--- 2 files changed, 138 insertions(+), 127 deletions(-) diff --git a/styles/less/dialog/group-roll-dialog/main.less b/styles/less/dialog/group-roll-dialog/main.less index 98247a24..d89c61bf 100644 --- a/styles/less/dialog/group-roll-dialog/main.less +++ b/styles/less/dialog/group-roll-dialog/main.less @@ -46,6 +46,33 @@ } } + .with-result { + border-radius: 5px; + background: var(--duality-bg); + color: var(--color-light-2); + + &.hope { + --duality-text-color: @golden; + --duality-bg: url(../assets/parchments/dh-parchment-hope.png); + } + + &.fear { + --duality-text-color: @chat-blue; + --duality-bg: url(../assets/parchments/dh-parchment-fear.png); + } + + &.critical { + --duality-text-color: @chat-purple; + --duality-bg: url(../assets/parchments/dh-parchment-critical.png); + } + + .duality-label { + font-family: var(--dh-font-subtitle); + color: var(--duality-text-color); + font-weight: 700; + } + } + .member-roll-container { display: flex; align-items: center; @@ -53,6 +80,11 @@ gap: 8px; height: 3.375rem; + &.inactive { + opacity: 0.3; + pointer-events: none; + } + .name-area { display: flex; flex-direction: column; @@ -72,27 +104,16 @@ } .item-tags { align-items: stretch; - .buttons { - align-items: stretch; - display: flex; - button { - --button-size: auto; - color: var(--medium-red); - padding: 0 var(--spacer-4); - &[data-success=true] { - color: var(--green); - } - &.inactive { - opacity: 0.5; - } - } - } } } - &.inactive { - opacity: 0.3; - pointer-events: none; + .buttons { + display: flex; + flex-direction: column; + button { + --button-size: 1.5em; + padding: 0 var(--spacer-4); + } } a.roll-button.initial-roll { @@ -100,94 +121,82 @@ height: 1.875rem; margin-right: 2px; /** makes hover look a bit nicer */ } - } - } - .roll-container { - display: flex; - flex-direction: column; - } - - .with-result { - border-radius: 5px; - background: var(--duality-bg); - color: var(--color-light-2); - - &.hope { - --duality-text-color: @golden; - --duality-bg: url(../assets/parchments/dh-parchment-hope.png); - } - - &.fear { - --duality-text-color: @chat-blue; - --duality-bg: url(../assets/parchments/dh-parchment-fear.png); - } - - &.critical { - --duality-text-color: @chat-purple; - --duality-bg: url(../assets/parchments/dh-parchment-critical.png); - } - - .duality-label { - font-family: var(--dh-font-subtitle); - color: var(--duality-text-color); - font-weight: 700; - } - } - - .roll-data { - display: flex; - flex-direction: column; - align-items: end; - justify-content: center; - padding: 0 4px; - min-height: 3rem; - - .duality-label { - font-size: var(--font-size-15); - - .unused-damage { - text-decoration: line-through; - } - - .with { - font-size: var(--font-size-10); - } - } - - .roll-dice-container { - display: flex; - align-items: center; - justify-content: center; - flex-wrap: wrap; - gap: 4px; - - .roll-dice { - position: relative; + .with-result { display: flex; + justify-content: end; align-items: center; - justify-content: center; + gap: 6px; - .dice-label { - position: absolute; - color: white; - font-size: 1rem; - paint-order: stroke fill; - -webkit-text-stroke: 2px black; + .roll-data { + display: flex; + flex-direction: column; + align-items: end; + justify-content: center; + padding: 0 4px; + min-height: 3rem; + + .duality-label { + font-size: var(--font-size-15); + + .unused-damage { + text-decoration: line-through; + } + + .with { + font-size: var(--font-size-10); + } + } + + .roll-dice-container { + display: flex; + align-items: center; + justify-content: center; + flex-wrap: wrap; + gap: 4px; + + .roll-dice { + position: relative; + display: flex; + align-items: center; + justify-content: center; + + .dice-label { + position: absolute; + color: white; + font-size: 1rem; + paint-order: stroke fill; + -webkit-text-stroke: 2px black; + } + + img { + height: 1.25rem; + } + } + + .roll-operator { + font-size: var(--font-size-18); + } + + .roll-value { + font-size: var(--font-size-16); + } + } } - img { - height: 1.25rem; + .buttons { + gap: 2px; + button { + color: var(--medium-red); + &[data-success=true] { + color: var(--green); + } + &.inactive { + opacity: 0.4; + } + } } } - - .roll-operator { - font-size: var(--font-size-18); - } - - .roll-value { - font-size: var(--font-size-16); - } } } diff --git a/templates/dialogs/groupRollDialog/parts/member.hbs b/templates/dialogs/groupRollDialog/parts/member.hbs index d2cc2b84..535f9992 100644 --- a/templates/dialogs/groupRollDialog/parts/member.hbs +++ b/templates/dialogs/groupRollDialog/parts/member.hbs @@ -12,12 +12,6 @@ {{numberFormat modifier sign=true}} {{/if}} - {{#if (and isEditable (ne ../partId "leader"))}} -
- - -
- {{/if}} {{else if readyToRoll}}
@@ -29,30 +23,38 @@ {{/if}}
{{#if roll}} -
-
- {{roll.total}} - {{localize "DAGGERHEART.GENERAL.withThing" thing=roll.totalLabel}} -
-
- - {{roll.dHope.total}} - - - - {{roll.dFear.total}} - - - {{#if roll.advantage.type}} - {{#if (eq roll.advantage.type 1)}}+{{else}}-{{/if}} - - {{roll.advantage.value}} - - - {{/if}} - {{#if (gte roll.modifierTotal 0)}}+{{else}}-{{/if}} - {{positive roll.modifierTotal}} +
+
+
+ {{roll.total}} + {{localize "DAGGERHEART.GENERAL.withThing" thing=roll.totalLabel}} +
+
+ + {{roll.dHope.total}} + + + + {{roll.dFear.total}} + + + {{#if roll.advantage.type}} + {{#if (eq roll.advantage.type 1)}}+{{else}}-{{/if}} + + {{roll.advantage.value}} + + + {{/if}} + {{#if (gte roll.modifierTotal 0)}}+{{else}}-{{/if}} + {{positive roll.modifierTotal}} +
+ {{#if (and isEditable (ne ../partId "leader"))}} +
+ + +
+ {{/if}}
{{else if readyToRoll}}