120 - Countdowns (#158)

* Added the shell of the Countdown application

* Added countdown automation

* Fixed overflow layout and added confirmation on countdown removal

* Added ownership to countdowns
This commit is contained in:
WBHarry 2025-06-21 21:37:22 +02:00 committed by GitHub
parent 3464717958
commit c15d55a505
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 1222 additions and 137 deletions

View file

@ -11,6 +11,12 @@
{{formInput settingFields.schema.fields.actionPoints value=settingFields._source.actionPoints }}
</div>
</div>
<div class="form-group">
<label>{{localize "DAGGERHEART.Settings.Automation.FIELDS.countdowns.label"}}</label>
<div class="form-fields">
{{formInput settingFields.schema.fields.countdowns value=settingFields._source.countdowns }}
</div>
</div>
<footer class="form-footer">
<button data-action="reset">

View file

@ -52,10 +52,15 @@
<div class="encounter-controls {{#if hasCombat}}combat{{/if}}">
{{#if hasCombat}}
<div class="encounter-control-fear-container">
<img class="dice " src="../icons/svg/d12-grey.svg"/>
<i class="fas fa-skull encounter-control-fear"></i>
<div class="encounter-control-counter">{{fear}}</div>
<div class="encounter-fear-controls">
<div class="encounter-fear-dice-container">
<div class="encounter-control-fear-container">
<img class="dice " src="../icons/svg/d12-grey.svg"/>
<i class="fas fa-skull encounter-control-fear"></i>
</div>
<div>{{fear}}</div>
</div>
<a class="encounter-countdowns" data-tooltip="{{localize "DAGGERHEART.Countdown.Title" type=(localize "DAGGERHEART.Countdown.Types.combat")}}" data-action="openCountdowns"><i class="fa-solid fa-stopwatch"></i></a>
</div>
{{/if}}

View file

@ -0,0 +1,42 @@
<div>
<div class="expanded-view {{#if minimized}}hidden{{/if}}">
<div class="flexrow">
{{#if canCreate}}<button data-action="addCountdown">{{localize "DAGGERHEART.Countdown.AddCountdown"}}</button>{{/if}}
{{#if isGM}}<button class="flex0" data-action="openOwnership" data-tooltip="{{localize "DAGGERHEART.Countdown.OpenOwnership"}}"><i class="fa-solid fa-users"></i></button>{{/if}}
</div>
<div class="countdowns-container">
{{#each source.countdowns}}
<fieldset class="countdown-fieldset">
<legend>
{{this.name}}
{{#if this.canEdit}}<a><i class="fa-solid fa-trash icon-button" data-action="removeCountdown" data-countdown="{{@key}}"></i></a>{{/if}}
{{#if @root.isGM}}<a><i class="fa-solid fa-users icon-button" data-action="openCountdownOwnership" data-countdown="{{@key}}" data-tooltip="{{localize "DAGGERHEART.Countdown.OpenOwnership"}}"></i></a>{{/if}}
</legend>
<div class="countdown-container">
<img src="{{this.img}}" {{#if this.canEdit}}data-action='editImage'{{else}}class="disabled"{{/if}} data-countdown="{{@key}}" />
<div class="countdown-inner-container">
{{formGroup @root.countdownFields.name name=(concat @root.base ".countdowns." @key ".name") value=this.name localize=true disabled=(not this.canEdit)}}
<div class="countdown-value-container">
{{formGroup @root.countdownFields.progress.fields.current name=(concat @root.base ".countdowns." @key ".progress.current") value=this.progress.current localize=true disabled=(not this.canEdit)}}
{{formGroup @root.countdownFields.progress.fields.max name=(concat @root.base ".countdowns." @key ".progress.max") value=this.progress.max localize=true disabled=(not this.canEdit)}}
</div>
{{formGroup @root.countdownFields.progress.fields.type.fields.value name=(concat @root.base ".countdowns." @key ".progress.type.value") value=this.progress.type.value localize=true localize=true disabled=(not this.canEdit)}}
</div>
</div>
</fieldset>
{{/each}}
</div>
</div>
<div class="minimized-view {{#if (not minimized)}}hidden{{/if}}">
{{#each source.countdowns}}
<a class="mini-countdown-container {{#if (not this.canEdit)}}disabled{{/if}}" data-countdown="{{@key}}">
<img src="{{this.img}}" />
<div class="mini-countdown-name">{{this.name}}</div>
<div class="mini-countdown-value">{{this.progress.current}}/{{this.progress.max}}</div>
</a>
{{/each}}
</div>
</div>

View file

@ -0,0 +1,22 @@
<div class="ownership-outer-container">
<div class="form-group">
<label>{{localize "DAGGERHEART.OwnershipSelection.Default"}}</label>
<div class="form-fields">
<select name="ownership.default" data-dtype="Number">
{{selectOptions @root.ownershipOptions selected=ownership.default labelAttr="label" valueAttr="value" }}
</select>
</div>
</div>
{{#each ownership.players as |player id|}}
<div class="ownership-container">
{{#if player.img}}<img src="{{player.img}}" />{{/if}}
<div>{{player.name}}</div>
<select name="{{concat "ownership.players." id ".type"}}" data-dtype="Number">
{{selectOptions @root.ownershipOptions selected=player.ownership labelAttr="label" valueAttr="value" }}
</select>
</div>
{{/each}}
<footer class="flexrow">
<button type="submit">{{localize "Save"}}</button>
</footer>
</div>