mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-15 21:21:08 +01:00
Levelup Remake (#100)
* Set up DhLevelTier datamodel * Added Levelup data model and started at the render * Fixed data handling in the LevelUp view * Added back the save function * Finalised levelup selections and propagating to PC * Added level advancement selection data * Added DomainCard selection * Css merge commit * Added PC level/delevel benefits of leveling up * Fixed sticky previous selections on continous leveling * Fixed up Summary. Fixed multiclass/subclass blocking on selection * Removed unused level.hbs * Fixed attribute base for PC * Improved naming of attribute properties * Renamed/structured resources/evasion/proficiency * Improved trait marking * Rework to level up once at a time * Added markers * Removed tabs when in Summary * Fixed multilevel buttons * Improved multiclass/subclass recognition * Fixed tagify error on selection * Review fixes
This commit is contained in:
parent
47a6abddfb
commit
a92221778e
41 changed files with 3279 additions and 1283 deletions
|
|
@ -1,20 +0,0 @@
|
|||
<div class="flex-col">
|
||||
<div class="levelup-title-container">Level {{activeLevel}}</div>
|
||||
<div class="levelup-section">
|
||||
{{#each data}}
|
||||
{{> "systems/daggerheart/templates/views/parts/level.hbs" data=this }}
|
||||
{{/each}}
|
||||
{{!-- {{#each levelupConfig as |configData key|}}
|
||||
{{> "systems/daggerheart/templates/views/parts/level.hbs" configData=configData levelData=(lookup ../levelData key) completedSelection=../completedSelection activeTier=../activeTier activeLevel=../activeLevel category=key }}
|
||||
{{/each}} --}}
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
{{#if (eq activeLevel changedLevel )}}
|
||||
<button data-action="finishLevelup" {{#if (not completedSelection)}}disabled{{/if}}>{{localize "DAGGERHEART.Application.LevelUp.TakeLevelUp"}}</button>
|
||||
{{else}}
|
||||
<button data-action="advanceLevel" {{#if (not completedSelection)}}disabled{{/if}}>{{localize "DAGGERHEART.Application.LevelUp.AdvanceLevel" level=(add activeLevel 1)}}</button>
|
||||
{{/if}}
|
||||
<button data-action="close">{{localize "DAGGERHEART.Application.Cancel"}}</button>
|
||||
</footer>
|
||||
</div>
|
||||
11
templates/views/levelup/parts/selectable-card-preview.hbs
Normal file
11
templates/views/levelup/parts/selectable-card-preview.hbs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<div class="component dh-style card-preview-container selectable {{#if this.disabled}}disabled{{/if}}" data-action="selectPreview" data-path="{{this.path}}" data-uuid="{{this.uuid}}" {{#if selected}}data-selected="true"{{/if}}>
|
||||
<div class="preview-image-outer-container">
|
||||
<img class="preview-image-container" src="{{this.img}}" />
|
||||
{{#if this.selected}}
|
||||
<div class="preview-selected-icon-container">
|
||||
<i class="fa-solid fa-check"></i>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="preview-text-container">{{this.name}}</div>
|
||||
</div>
|
||||
40
templates/views/levelup/tabs/advancements.hbs
Normal file
40
templates/views/levelup/tabs/advancements.hbs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<section
|
||||
class='tab {{tabs.advancements.cssClass}} {{tabs.advancements.id}}'
|
||||
data-tab='{{tabs.advancements.id}}'
|
||||
data-group='{{tabs.advancements.group}}'
|
||||
>
|
||||
<div class="section-container">
|
||||
<div class="tiers-container">
|
||||
{{#each this.levelup.tiersForRendering as |tier key|}}
|
||||
<fieldset class="tier-container {{#if (not tier.active)}}inactive{{/if}}">
|
||||
<legend>{{tier.name}}</legend>
|
||||
|
||||
{{#each tier.groups}}
|
||||
<div class="checkbox-group-container">
|
||||
<div class="checkboxes-container">
|
||||
{{#each this.checkboxGroups}}
|
||||
<div class="checkbox-grouping-coontainer {{#if this.multi}}multi{{/if}}">
|
||||
{{#each this.checkboxes}}
|
||||
<input
|
||||
type="checkbox" class="selection-checkbox{{#if (gt this.cost 1)}} multi{{/if}}" {{checked this.selected}} {{#if this.disabled}}disabled{{/if}}
|
||||
data-tier="{{this.tier}}"
|
||||
data-level="{{this.level}}"
|
||||
data-option="{{this.type}}"
|
||||
data-checkbox-nr="{{this.checkboxNr}}"
|
||||
data-cost="{{this.minCost}}"
|
||||
data-amount="{{this.amount}}"
|
||||
data-value="{{this.value}}"
|
||||
data-type="{{this.type}}"
|
||||
/>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="checkbox-group-label">{{this.label}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
95
templates/views/levelup/tabs/selections.hbs
Normal file
95
templates/views/levelup/tabs/selections.hbs
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<section
|
||||
class='tab {{tabs.selections.cssClass}} {{tabs.selections.id}}'
|
||||
data-tab='{{tabs.selections.id}}'
|
||||
data-group='{{tabs.selections.group}}'
|
||||
>
|
||||
<div class="section-container levelup-selections-container">
|
||||
{{#if (gt this.newExperiences.length 0)}}
|
||||
<div>
|
||||
<h3>{{localize "DAGGERHEART.Application.LevelUp.summary.newExperiences"}}</h3>
|
||||
<div class="achievement-experience-cards">
|
||||
{{#each this.newExperiences}}
|
||||
<div class="achievement-experience-card">
|
||||
<div class="flexrow">
|
||||
<input type="text" name="{{concat "levelup.levels." this.level ".achievements.experiences." this.key ".name"}}" value="{{this.name}}" placeholder="{{localize "DAGGERHEART.Application.LevelUp.summary.experiencePlaceholder"}}" />
|
||||
<div class="flex0">{{signedNumber this.modifier}}</div>
|
||||
</div>
|
||||
<div class="achievement-experience-marker">
|
||||
{{#if this.name}}<i class="fa-solid fa-check"></i>{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.traits.active}}
|
||||
<div>
|
||||
<h3 class="levelup-selections-title">
|
||||
<div>{{localize "DAGGERHEART.Application.LevelUp.summary.traits"}}</div>
|
||||
<div>{{this.traits.progress.selected}}/{{this.traits.progress.max}}</div>
|
||||
</h3>
|
||||
|
||||
<input type="text" class="levelup-trait-increases" value="{{this.traits.values}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.experienceIncreases.active}}
|
||||
<div>
|
||||
<h3 class="levelup-selections-title">
|
||||
<div>{{localize "DAGGERHEART.Application.LevelUp.summary.experienceIncreases"}}</div>
|
||||
<div>{{this.experienceIncreases.progress.selected}}/{{this.experienceIncreases.progress.max}}</div>
|
||||
</h3>
|
||||
|
||||
<input type="text" class="levelup-experience-increases" value="{{this.experienceIncreases.values}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if (gt this.domainCards.length 0)}}
|
||||
<div>
|
||||
<h3>{{localize "DAGGERHEART.Application.LevelUp.summary.domainCards"}}</h3>
|
||||
|
||||
<div class="levelup-card-selection domain-cards">
|
||||
{{#each this.domainCards}}
|
||||
{{> "systems/daggerheart/templates/components/card-preview.hbs" this }}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if (gt this.subclassCards.length 0)}}
|
||||
<div>
|
||||
<h3>{{localize "DAGGERHEART.Application.LevelUp.summary.subclass"}}</h3>
|
||||
|
||||
<div class="levelup-card-selection subclass-cards">
|
||||
{{#each this.subclassCards}}
|
||||
{{> "systems/daggerheart/templates/views/levelup/parts/selectable-card-preview.hbs" img=this.img name=this.name path=this.path selected=this.selected uuid=this.uuid disabled=this.disabled }}
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.multiclass}}
|
||||
<div>
|
||||
<h3>{{localize "DAGGERHEART.Application.LevelUp.summary.multiclass"}}</h3>
|
||||
|
||||
<div class="levelup-card-selection multiclass-cards" data-path="{{this.multiclass.path}}" data-tier="{{this.multiclass.tier}}" data-min-cost="{{this.multiclass.minCost}}" data-amount="{{this.multiclass.amount}}" data-value="{{this.multiclass.value}}" data-type="{{this.multiclass.type}}">
|
||||
{{> "systems/daggerheart/templates/components/card-preview.hbs" this.multiclass }}
|
||||
<div class="levelup-domains-selection-container">
|
||||
{{#each this.multiclass.domains}}
|
||||
<div class="levelup-domain-selection-container {{#if this.disabled}}disabled{{/if}}" {{#if (not this.disabled)}}data-action="selectDomain" data-uuid="{{../multiclass.uuid}}" data-domain="{{this.id}}" data-path="{{../multiclass.path}}" {{/if}}>
|
||||
<div class="levelup-domain-label">{{localize this.label}}</div>
|
||||
<img src="{{this.src}}" />
|
||||
{{#if this.selected}}
|
||||
<div class="levelup-domain-selected">
|
||||
<i class="fa-solid fa-check"></i>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</section>
|
||||
134
templates/views/levelup/tabs/summary.hbs
Normal file
134
templates/views/levelup/tabs/summary.hbs
Normal file
|
|
@ -0,0 +1,134 @@
|
|||
<section
|
||||
class='tab {{tabs.summary.cssClass}} {{tabs.summary.id}}'
|
||||
data-tab='{{tabs.summary.id}}'
|
||||
data-group='{{tabs.summary.group}}'
|
||||
>
|
||||
<div class="section-container levelup-summary-container">
|
||||
<fieldset>
|
||||
<legend>{{localize "DAGGERHEART.Application.LevelUp.summary.levelAchievements"}}</legend>
|
||||
|
||||
<div class="level-achievements-container">
|
||||
{{#if this.achievements.proficiency.shown}}
|
||||
<div>
|
||||
<div class="increase-container">
|
||||
{{localize "DAGGERHEART.Application.LevelUp.summary.proficiencyIncrease" proficiency=this.achievements.proficiency.old }}
|
||||
<i class="fa-solid fa-arrow-right-long"></i>
|
||||
{{this.achievements.proficiency.new}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div>
|
||||
<h5 class="summary-section">{{localize "DAGGERHEART.Application.LevelUp.summary.damageThresholds"}}{{#if this.levelAchievements.damageThresholds.unarmored}}({{localize "DAGGERHEART.General.unarmored"}}){{/if}}</h5>
|
||||
<div class="increase-container">
|
||||
{{localize "DAGGERHEART.Application.LevelUp.summary.damageThresholdMajorIncrease" threshold=this.achievements.damageThresholds.major.old }}
|
||||
<i class="fa-solid fa-arrow-right-long"></i>
|
||||
{{this.achievements.damageThresholds.major.new}}
|
||||
</div>
|
||||
<div class="increase-container">
|
||||
{{localize "DAGGERHEART.Application.LevelUp.summary.damageThresholdSevereIncrease" threshold=this.achievements.damageThresholds.severe.old }}
|
||||
<i class="fa-solid fa-arrow-right-long"></i>
|
||||
{{this.achievements.damageThresholds.severe.new}}
|
||||
</div>
|
||||
</div>
|
||||
{{#if this.achievements.domainCards.shown}}
|
||||
<div>
|
||||
<h5>{{localize "DAGGERHEART.Application.LevelUp.summary.domainCards"}}</h5>
|
||||
<div class="summary-selection-container">
|
||||
{{#each this.achievements.domainCards.values}}
|
||||
<div class="summary-selection">{{this.name}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if this.achievements.experiences.shown}}
|
||||
<div>
|
||||
<h5>{{localize "DAGGERHEART.Application.LevelUp.summary.newExperiences"}}</h5>
|
||||
<div class="summary-selection-container">
|
||||
{{#each this.achievements.experiences.values}}
|
||||
<div class="summary-selection">{{this.name}} {{signedNumber this.modifier}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "DAGGERHEART.Application.LevelUp.summary.levelAdvancements"}}</legend>
|
||||
|
||||
<div class="level-advancements-container">
|
||||
{{#if this.advancements.statistics.shown}}
|
||||
<div>
|
||||
{{#if this.advancements.statistics.proficiency.shown}}
|
||||
<div class="increase-container">
|
||||
{{localize "DAGGERHEART.Application.LevelUp.summary.proficiencyIncrease" proficiency=this.advancements.statistics.proficiency.old }}
|
||||
<i class="fa-solid fa-arrow-right-long"></i>
|
||||
{{this.advancements.statistics.proficiency.new}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.advancements.statistics.hitPoints.shown}}
|
||||
<div class="increase-container">
|
||||
{{localize "DAGGERHEART.Application.LevelUp.summary.hpIncrease" hitPoints=this.advancements.statistics.hitPoints.old }}
|
||||
<i class="fa-solid fa-arrow-right-long"></i>
|
||||
{{this.advancements.statistics.hitPoints.new}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.advancements.statistics.stress.shown}}
|
||||
<div class="increase-container">
|
||||
{{localize "DAGGERHEART.Application.LevelUp.summary.stressIncrease" stress=this.advancements.statistics.stress.old }}
|
||||
<i class="fa-solid fa-arrow-right-long"></i>
|
||||
{{this.advancements.statistics.stress.new}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#if this.advancements.statistics.evasion.shown}}
|
||||
<div class="increase-container">
|
||||
{{localize "DAGGERHEART.Application.LevelUp.summary.evasionIncrease" evasion=this.advancements.statistics.evasion.old }}
|
||||
<i class="fa-solid fa-arrow-right-long"></i>
|
||||
{{this.advancements.statistics.evasion.new}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.advancements.traits}}
|
||||
<div>
|
||||
<h5>{{localize "DAGGERHEART.Application.LevelUp.summary.traits"}}</h5>
|
||||
<div class="summary-selection-container">
|
||||
{{#each this.advancements.traits}}
|
||||
<div class="summary-selection">{{this}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.advancements.domainCards}}
|
||||
<div>
|
||||
<h5>{{localize "DAGGERHEART.Application.LevelUp.summary.domainCards"}}</h5>
|
||||
<div class="summary-selection-container">
|
||||
{{#each this.advancements.domainCards}}
|
||||
<div class="summary-selection">{{this.name}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if this.advancements.experiences}}
|
||||
<div>
|
||||
<h5>{{localize "DAGGERHEART.Application.LevelUp.summary.experienceIncreases"}}</h5>
|
||||
<div class="summary-selection-container">
|
||||
{{#each this.advancements.experiences}}
|
||||
<div class="summary-selection">{{this.name}} {{signedNumber this.modifier}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<footer class="levelup-footer">
|
||||
<button data-action="save" {{#if (not this.levelup.allLevelsFinished)}}disabled{{/if}}>{{localize "Finish Levelup"}}</button>
|
||||
</footer>
|
||||
</div>
|
||||
</section>
|
||||
40
templates/views/levelup/tabs/tab-navigation.hbs
Normal file
40
templates/views/levelup/tabs/tab-navigation.hbs
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
<section class='tab-navigation'>
|
||||
<line-div></line-div>
|
||||
<div class="levelup-navigation-container">
|
||||
{{#if this.showTabs}}
|
||||
<nav class='feature-tab sheet-tabs tabs' data-group='primary'>
|
||||
{{#each tabs as |tab|}}
|
||||
{{#if (not (eq tab.id 'summary'))}}
|
||||
<div class="levelup-tab-container">
|
||||
<a class='{{tab.id}} {{tab.cssClass}}' data-action='tab' data-group='{{tab.group}}' data-tab='{{tab.id}}'>
|
||||
{{localize tab.label}}
|
||||
</a>
|
||||
{{#if tab.progress}}
|
||||
<div>{{tab.progress.selected}}/{{tab.progress.max}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</nav>
|
||||
{{/if}}
|
||||
<div class="levelup-navigation-actions {{#if (not this.showTabs)}}test{{/if}}">
|
||||
{{#if this.navigate.previous.fromSummary}}
|
||||
<button data-action="activatePart" data-part="advancements">{{localize "DAGGERHEART.Application.LevelUp.navigateToLevelup"}}</button>
|
||||
{{else}}
|
||||
{{#if (not this.navigate.previous.disabled)}}
|
||||
<button data-action="updateCurrentLevel" >{{this.navigate.previous.label}}</button>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if this.navigate.next.show}}
|
||||
{{#if this.navigate.next.toSummary}}
|
||||
<button data-action="activatePart" data-part="summary" {{#if this.navigate.next.disabled}}disabled{{/if}}>{{localize "DAGGERHEART.Application.LevelUp.navigateToSummary"}}</button>
|
||||
{{else}}
|
||||
<button data-action="updateCurrentLevel" data-forward="true" {{#if this.navigate.next.disabled}}disabled{{/if}}>{{this.navigate.next.label}}</button>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<div></div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<line-div></line-div>
|
||||
</section>
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<div class="levelup-container {{#if (not data.active)}}disabled{{/if}}">
|
||||
<fieldset class="levelup-inner-container">
|
||||
<legend class="levelup-legend">
|
||||
{{data.label}}
|
||||
</legend>
|
||||
|
||||
<div class="levelup-info">{{data.info}}</div>
|
||||
<div class="levelup-pretext">{{data.pretext}}</div>
|
||||
<div class="levelup-body">
|
||||
{{#each data.choices as |choice choiceKey|}}
|
||||
<div class="levelup-choice-row">
|
||||
<div class="levelup-choice-row-inner">
|
||||
{{#each choice.values as |value valueKey|}}
|
||||
{{#times choice.cost}}
|
||||
<div class="levelup-choice-input-container">
|
||||
<input
|
||||
type="checkbox"
|
||||
data-action="toggleBox"
|
||||
data-path="{{../path}}"
|
||||
data-level-attribute="{{@../key}}"
|
||||
{{checked ../selected}}
|
||||
{{#if ../disabled}}disabled{{/if}}
|
||||
/>
|
||||
{{#if (lt (add this 1) ../../cost)}}
|
||||
<i class="fa-solid fa-link"></i>
|
||||
{{/if}}
|
||||
{{#if ../locked}}
|
||||
<i class="fa-solid fa-lock"></i>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/times}}
|
||||
{{/each}}
|
||||
</div>
|
||||
<div>{{localize choice.description}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="levelup-posttext">{{data.posttext}}</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
Loading…
Add table
Add a link
Reference in a new issue