Updated to make use of setup tabs. Ancestry now has primary/secondary features

This commit is contained in:
WBHarry 2025-07-10 22:03:38 +02:00
parent 70239ec06a
commit 635dae7a2e
19 changed files with 772 additions and 95 deletions

View file

@ -1,4 +1,8 @@
<section class="creation-action-footer">
<button data-action="close">{{localize "Cancel"}}</button>
<button {{#if tabs.setup.finished}}data-action="finish"{{else}}disabled{{/if}}>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.finishCreation"}}</button>
{{#if isLastTab}}
<button data-action="finish" {{disabled (not tabs.setup.finished)}}>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.finishCreation"}}</button>
{{else}}
<button data-action="setupGoNext" {{disabled nextDisabled}}>{{localize "Next"}}</button>
{{/if}}
</section>

View file

@ -0,0 +1,63 @@
<section
class='tab {{setupTabs.ancestry.cssClass}} {{setupTabs.ancestry.id}}'
data-tab='{{setupTabs.ancestry.id}}'
data-group='{{setupTabs.ancestry.group}}'
>
<div class="main-selections-container">
<fieldset class="section-container">
<legend>{{localize "TYPES.Item.ancestry"}}</legend>
<div class="ancestry-name">
<input type="text" name="ancestryName" value="{{ancestryName}}" placeholder="{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.ancestryNamePlaceholder"}}" {{disabled (not primaryAncestry.uuid)}} />
</div>
<div class="ancestry-mixed-controller {{#if mixedAncestry}}active{{/if}}">
<label class="mixed-ancestry-slider">
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.mixedAncestry"}}
<i class="fa-solid {{#if mixedAncestry}}fa-circle-check{{else}}fa-circle{{/if}}"></i>
</label>
<input type="range" id="volume" class="mixed-ancestry-slider" value="{{mixedAncestry}}" min="0" max="1" />
</div>
<div class="selections-outer-container">
<div class="selections-container primary-ancestry-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" primaryAncestry altPartialBlock=true secondaryDisabled=secondaryAncestry.uuid mixedAncestry=mixedAncestry }}
{{#if uuid}}
<div class="ancestry-preview-info-container">
<div class="ancestry-preview-label">{{name}}</div>
<div class="ancestry-preview-features">
<div class="ancestry-preview-feature" data-tooltip="{{concat "#item#" system.primaryFeature.uuid}}">{{system.primaryFeature.name}}</div>
<div class="ancestry-preview-feature {{#if secondaryDisabled}}inactive{{/if}}" data-tooltip="{{concat "#item#" system.secondaryFeature.uuid}}">{{system.secondaryFeature.name}}</div>
</div>
</div>
{{else}}
{{#if mixedAncestry}}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectPrimaryAncestry"}}
{{else}}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectAncestry"}}
{{/if}}
{{/if}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
{{#if mixedAncestry}}
<div class="selections-container secondary-ancestry-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" secondaryAncestry altPartialBlock=true }}
{{#if uuid}}
<div class="ancestry-preview-info-container">
<div class="ancestry-preview-label">{{name}}</div>
<div class="ancestry-preview-features">
<div class="ancestry-preview-feature inactive" data-tooltip="{{concat "#item#" system.primaryFeature.uuid}}">{{system.primaryFeature.name}}</div>
<div class="ancestry-preview-feature" data-tooltip="{{concat "#item#" system.secondaryFeature.uuid}}">{{system.secondaryFeature.name}}</div>
</div>
</div>
{{else}}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectSecondaryAncestry"}}
{{/if}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
{{/if}}
</div>
</fieldset>
</div>
</section>

View file

@ -0,0 +1,24 @@
<section
class='tab {{setupTabs.class.cssClass}} {{setupTabs.class.id}}'
data-tab='{{setupTabs.class.id}}'
data-group='{{setupTabs.class.group}}'
>
<div class="main-selections-container">
<fieldset class="section-container">
<legend>{{localize "TYPES.Item.class"}}</legend>
<div class="selections-outer-container">
<div class="selections-container class-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" class }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectClass"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
<div class="selections-container subclass-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" subclass disabled=(not class.img) }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectSubclass"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
</div>
</fieldset>
</div>
</section>

View file

@ -0,0 +1,18 @@
<section
class='tab {{setupTabs.community.cssClass}} {{setupTabs.community.id}}'
data-tab='{{setupTabs.community.id}}'
data-group='{{setupTabs.community.group}}'
>
<div class="main-selections-container">
<fieldset class="section-container">
<legend>{{localize "TYPES.Item.community"}}</legend>
<div class="selections-outer-container">
<div class="selections-container community-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" community }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectCommunity"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
</div>
</fieldset>
</div>
</section>

View file

@ -0,0 +1,22 @@
<section
class='tab {{setupTabs.domainCards.cssClass}} {{setupTabs.domainCards.id}}'
data-tab='{{setupTabs.domainCards.id}}'
data-group='{{setupTabs.domainCards.group}}'
>
<div class="main-selections-container">
<fieldset class="section-container">
<legend>{{localize "TYPES.Item.domainCard"}}</legend>
<div class="selections-outer-container">
{{#each domainCards as |domainCard id|}}
<div class="selections-container domain-card" data-card="{{id}}">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" domainCard }}
{{#each @root.class.system.domains }}
<div>{{localize (concat "DAGGERHEART.GENERAL.Domain." this ".label")}}</div>
{{/each}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
{{/each}}
</div>
</fieldset>
</div>
</section>

View file

@ -0,0 +1,19 @@
<section
class='tab {{setupTabs.experience.cssClass}} {{setupTabs.experience.id}}'
data-tab='{{setupTabs.experience.id}}'
data-group='{{setupTabs.experience.group}}'
>
<div class="main-selections-container">
<fieldset class="section-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.initialExperiences"}} {{experience.nrSelected}}/{{experience.nrTotal}}</legend>
<div class="experiences-inner-container">
{{#each experience.values as |experience id|}}
<div class="experience-container">
<input class="experience-description" type="text" name="{{concat "experiences." id ".description" }}" value="{{experience.description}}" placeholder="{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.newExperience"}}" />
<div class="experience-value">{{numberFormat this.value sign=true}}</div>
</div>
{{/each}}
</div>
</fieldset>
</div>
</section>

View file

@ -0,0 +1,32 @@
<section
class='tab {{setupTabs.traits.cssClass}} {{setupTabs.traits.id}}'
data-tab='{{setupTabs.traits.id}}'
data-group='{{setupTabs.traits.group}}'
>
<div class="main-selections-container">
<fieldset class="section-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.traitIncreases"}} {{traits.nrSelected}}/{{traits.nrTotal}}</legend>
<div class="traits-container">
<fieldset class="section-inner-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.suggestedTraits"}}</legend>
<div class="suggested-traits-container">
{{#each suggestedTraits}}
<div class="suggested-trait-container">{{this}}</div>
{{/each}}
</div>
<button class="action-button" data-action="useSuggestedTraits">{{localize "Use"}}</button>
</fieldset>
<div class="traits-inner-container">
{{#each traits.values}}
<div class="trait-container">
<div>{{this.name}}</div>
<select name="{{concat "traits." this.key ".value"}}" data-dtype="Number">
{{selectOptions this.options selected=this.value valueAttr="key" labelAttr="value" blank=""}}
</select>
</div>
{{/each}}
</div>
</div>
</fieldset>
</div>
</section>

View file

@ -3,27 +3,17 @@
data-tab='{{tabs.setup.id}}'
data-group='{{tabs.setup.group}}'
>
<div class="main-selections-container">
<fieldset class="section-container">
<legend>{{localize "TYPES.Item.class"}}</legend>
<div class="selections-outer-container">
<div class="selections-container class-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" class }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectClass"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
<div class="selections-container subclass-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" subclass disabled=(not class.img) }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectSubclass"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
</div>
</fieldset>
{{#if (gte visibility 2)}}
<nav class='feature-tab sheet-tabs tabs setup-tabs' data-group='setup'>
{{#each setupTabs as |tab|}}
<button class='{{tab.id}} {{tab.cssClass}}' data-action='tab' data-group='{{tab.group}}' data-tab='{{tab.id}}' {{disabled tab.disabled}}>
{{localize tab.label}}
</button>
{{/each}}
</nav>
{{!-- <div class="main-selections-container">
<div class="secondary-selections-container {{#unless (gte visibility 1)}}inactive{{/unless}}">
<fieldset class="section-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.heritage"}}</legend>
<legend>{{localize "TYPES.Item.ancestry"}}</legend>
<div class="selections-outer-container">
<div class="selections-container ancestry-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" ancestry }}
@ -31,6 +21,17 @@
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
<div class="selections-container community-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" ancestry }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectAncestry"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
</div>
</fieldset>
<fieldset class="section-container">
<legend>{{localize "TYPES.Item.community"}}</legend>
<div class="selections-outer-container">
<div class="selections-container community-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" community }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectCommunity"}}
@ -38,36 +39,26 @@
</div>
</div>
</fieldset>
{{/if}}
</div>
{{#if (gte visibility 3)}}
<div class="secondary-selections-container {{#unless (gte visibility 2)}}inactive{{/unless}}">
<fieldset class="section-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.traitIncreases"}} {{traits.nrSelected}}/{{traits.nrTotal}}</legend>
<div class="traits-container">
<fieldset class="section-inner-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.suggestedTraits"}}</legend>
<div class="suggested-traits-container">
{{#each suggestedTraits}}
<div class="suggested-trait-container">{{this}}</div>
{{/each}}
</div>
<button class="action-button" data-action="useSuggestedTraits">{{localize "Use"}}</button>
</fieldset>
<div class="traits-inner-container">
{{#each traits.values}}
<div class="trait-container">
<div>{{this.name}}</div>
<select name="{{concat "traits." this.key ".value"}}" data-dtype="Number">
{{selectOptions this.options selected=this.value valueAttr="key" labelAttr="value" blank=""}}
</select>
</div>
{{/each}}
<legend>{{localize "TYPES.Item.class"}}</legend>
<div class="selections-outer-container">
<div class="selections-container class-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" class }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectClass"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
<div class="selections-container subclass-card">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" subclass disabled=(not class.img) }}
{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.selectSubclass"}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
</div>
</fieldset>
{{/if}}
{{#if (gte visibility 4)}}
<fieldset class="section-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.initialExperiences"}} {{experience.nrSelected}}/{{experience.nrTotal}}</legend>
<div class="experiences-inner-container">
@ -79,23 +70,47 @@
{{/each}}
</div>
</fieldset>
{{/if}}
</div>
{{#if (gte visibility 5)}}
<fieldset class="section-container">
<legend>{{localize "TYPES.Item.domainCard"}}</legend>
<div class="selections-outer-container">
{{#each domainCards as |domainCard id|}}
<div class="selections-container domain-card" data-card="{{id}}">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" domainCard }}
{{#each @root.class.system.domains }}
<div>{{localize (concat "DAGGERHEART.GENERAL.Domain." this ".label")}}</div>
{{/each}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
<fieldset class="section-container {{#unless (gte visibility 3)}}inactive{{/unless}}">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.traitIncreases"}} {{traits.nrSelected}}/{{traits.nrTotal}}</legend>
<div class="traits-container">
<fieldset class="section-inner-container">
<legend>{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.suggestedTraits"}}</legend>
<div class="suggested-traits-container">
{{#each suggestedTraits}}
<div class="suggested-trait-container">{{this}}</div>
{{/each}}
</div>
<button class="action-button" data-action="useSuggestedTraits">{{localize "Use"}}</button>
</fieldset>
<div class="traits-inner-container">
{{#each traits.values}}
<div class="trait-container">
<div>{{this.name}}</div>
<select name="{{concat "traits." this.key ".value"}}" data-dtype="Number">
{{selectOptions this.options selected=this.value valueAttr="key" labelAttr="value" blank=""}}
</select>
</div>
{{/each}}
</div>
</fieldset>
{{/if}}
</div>
</div>
</fieldset>
<fieldset class="section-container {{#unless (gte visibility 4)}}inactive{{/unless}}">
<legend>{{localize "TYPES.Item.domainCard"}}</legend>
<div class="selections-outer-container">
{{#each domainCards as |domainCard id|}}
<div class="selections-container domain-card" data-card="{{id}}">
{{#> "systems/daggerheart/templates/components/card-preview.hbs" domainCard }}
{{#each @root.class.system.domains }}
<div>{{localize (concat "DAGGERHEART.GENERAL.Domain." this ".label")}}</div>
{{/each}}
{{/"systems/daggerheart/templates/components/card-preview.hbs"}}
</div>
{{/each}}
</div>
</fieldset>
</div> --}}
</section>

View file

@ -4,7 +4,13 @@
>
{{#if this.img}}
<img class="preview-image-container" src="{{this.img}}" />
<div class="preview-text-container">{{this.name}}</div>
<div class="preview-text-container">
{{#if altPartialBlock}}
{{> @partial-block }}
{{else}}
{{this.name}}
{{/if}}
</div>
{{else}}
<div class="preview-empty-container">
<div class="preview-empty-inner-container">

View file

@ -15,7 +15,7 @@
{{#if (or document.system.needsCharacterSetup document.system.levelData.canLevelUp)}}
<button
type="button"
class="level-button glow" data-tooltip="{{#if document.system.needsCharacterSetup}}{{localize "DAGGERHEART.Sheets.PC.CharacterSetup"}}{{else}}{{localize "DAGGERHEART.ACTORS.Character.levelUp"}}{{/if}}"
class="level-button glow" data-tooltip="{{#if document.system.needsCharacterSetup}}{{localize "DAGGERHEART.APPLICATIONS.CharacterCreation.buttonTitle"}}{{else}}{{localize "DAGGERHEART.ACTORS.Character.levelUp"}}{{/if}}"
data-action="levelManagement"
>
<i class="fa-solid fa-triangle-exclamation"></i>

View file

@ -0,0 +1,41 @@
<section
class='tab {{tabs.features.cssClass}} {{tabs.features.id}}'
data-tab='{{tabs.features.id}}'
data-group='{{tabs.features.group}}'
>
<fieldset class="one-column drop-section primary-feature">
<legend>{{localize "DAGGERHEART.ITEMS.Ancestry.primaryFeature"}} <a><i data-action="addFeature" data-type="primary" class="fa-solid fa-plus icon-button"></i></a></legend>
<div class="features-list">
{{#if document.system.primaryFeature}}
<div class="feature-item"
data-action="editFeature"
data-type="primary"
>
<img class="image" src="{{document.system.primaryFeature.img}}" />
<span>{{document.system.primaryFeature.name}}</span>
<div class="controls">
<a data-action="removeFeature" data-type="primary"><i class="fa-solid fa-trash"></i></a>
</div>
</div>
{{/if}}
</div>
</fieldset>
<fieldset class="one-column drop-section secondary-feature">
<legend>{{localize "DAGGERHEART.ITEMS.Ancestry.secondaryFeature"}} <a><i data-action="addFeature" data-type="secondary" class="fa-solid fa-plus icon-button"></i></a></legend>
<div class="features-list">
{{#if document.system.secondaryFeature}}
<div class="feature-item"
data-action="editFeature"
data-type="secondary"
>
<img class="image" src="{{document.system.secondaryFeature.img}}" />
<span>{{document.system.secondaryFeature.name}}</span>
<div class="controls">
<a data-action="removeFeature" data-type="secondary"><i class="fa-solid fa-trash"></i></a>
</div>
</div>
{{/if}}
</div>
</fieldset>
</section>