developing experience setting page

This commit is contained in:
moliloo 2025-06-30 21:22:15 -03:00
parent 0c9c37470a
commit ca297b97b1
9 changed files with 55 additions and 15 deletions

View file

@ -29,12 +29,13 @@ export default class AdversarySheet extends DaggerheartSheet(ActorSheetV2) {
sidebar: { template: 'systems/daggerheart/templates/sheets/actors/adversary/sidebar.hbs' }, sidebar: { template: 'systems/daggerheart/templates/sheets/actors/adversary/sidebar.hbs' },
header: { template: 'systems/daggerheart/templates/sheets/actors/adversary/header.hbs' }, header: { template: 'systems/daggerheart/templates/sheets/actors/adversary/header.hbs' },
features: { template: 'systems/daggerheart/templates/sheets/actors/adversary/features.hbs' }, features: { template: 'systems/daggerheart/templates/sheets/actors/adversary/features.hbs' },
notes: { template: 'systems/daggerheart/templates/sheets/actors/adversary/notes.hbs' },
effects: { template: 'systems/daggerheart/templates/sheets/actors/adversary/effects.hbs' } effects: { template: 'systems/daggerheart/templates/sheets/actors/adversary/effects.hbs' }
}; };
static TABS = { static TABS = {
features: { features: {
active: false, active: true,
cssClass: '', cssClass: '',
group: 'primary', group: 'primary',
id: 'features', id: 'features',

View file

@ -23,7 +23,10 @@ export default class DHAdversarySettings extends HandlebarsApplicationMixin(Appl
resizable: false resizable: false
}, },
position: { width: 455, height: 'auto' }, position: { width: 455, height: 'auto' },
actions: {}, actions: {
addExperience: this.addExperience,
removeExperience: this.removeExperience
},
form: { form: {
handler: this.updateForm, handler: this.updateForm,
submitOnChange: true, submitOnChange: true,
@ -111,6 +114,22 @@ export default class DHAdversarySettings extends HandlebarsApplicationMixin(Appl
return tabs; return tabs;
} }
static async addExperience() {
const newExperience = {
name: 'Experience',
modifier: 0
};
await this.actor.update({ [`system.experiences.${foundry.utils.randomID()}`]: newExperience });
}
static async removeExperience() {
const newExperience = {
name: 'Experience',
modifier: 0
};
await this.actor.update({ [`system.experiences.${foundry.utils.randomID()}`]: newExperience });
}
static async updateForm(event, _, formData) { static async updateForm(event, _, formData) {
await this.actor.update(formData.object); await this.actor.update(formData.object);
this.render(); this.render();

View file

@ -5074,6 +5074,9 @@ div.daggerheart.views.multiclass {
background-color: light-dark(#18162e, #f3c267); background-color: light-dark(#18162e, #f3c267);
color: light-dark(#efe6d8, #18162e); color: light-dark(#efe6d8, #18162e);
} }
.application.dh-style fieldset.fit-height {
height: 95%;
}
.application.dh-style fieldset.flex { .application.dh-style fieldset.flex {
display: flex; display: flex;
gap: 20px; gap: 20px;

View file

@ -112,6 +112,10 @@
} }
} }
&.fit-height {
height: 95%;
}
&.flex { &.flex {
display: flex; display: flex;
gap: 20px; gap: 20px;

View file

@ -4,4 +4,7 @@
data-group='{{tabs.features.group}}' data-group='{{tabs.features.group}}'
> >
<h2>features</h2> <h2>features</h2>
{{#debug document}}
{{/debug}}
</section> </section>

View file

@ -8,11 +8,21 @@
</div> </div>
<div class="tags"> <div class="tags">
<div class="tag"> <div class="tag">
{{localize (concat 'DAGGERHEART.Tiers.' source.system.tier)}} <span>
{{localize (concat 'DAGGERHEART.Tiers.' source.system.tier)}}
</span>
</div> </div>
<div class="tag"> <div class="tag">
{{localize (concat 'DAGGERHEART.Adversary.Type.' source.system.type '.label')}} <span>
{{localize (concat 'DAGGERHEART.Adversary.Type.' source.system.type '.label')}}
</span>
</div> </div>
{{#if (eq source.system.type 'horde')}}
<div class="tag">
<span>{{source.system.hordeHp}}</span>
<span>/HP</span>
</div>
{{/if}}
</div> </div>
<line-div></line-div> <line-div></line-div>
<div class="adversary-info"> <div class="adversary-info">

View file

@ -3,8 +3,8 @@
data-tab='{{tabs.notes.id}}' data-tab='{{tabs.notes.id}}'
data-group='{{tabs.notes.group}}' data-group='{{tabs.notes.group}}'
> >
<fieldset> <fieldset class="fit-height">
<legend>{{tabs.notes.label}}</legend> <legend>{{localize tabs.notes.label}}</legend>
{{formInput systemFields.notes value=document.system.notes enriched=source.document.notes localize=true toggled=true}} {{formInput systemFields.notes value=document.system.notes enriched=source.document.notes localize=true toggled=true}}
</fieldset> </fieldset>
</section> </section>

View file

@ -81,7 +81,7 @@
<side-line-div></side-line-div> <side-line-div></side-line-div>
</div> </div>
<ul class="items-sidebar-list"> <ul class="items-sidebar-list">
{{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=source.system.attack type=source.system.attack.type isSidebar=true}} {{> 'systems/daggerheart/templates/sheets/global/partials/inventory-item.hbs' item=source.system.attack type=source.system.attack.systemPath isSidebar=true}}
</ul> </ul>
</div> </div>
<div class="experience-section"> <div class="experience-section">
@ -96,7 +96,7 @@
<div class="experience-value"> <div class="experience-value">
+{{experience.total}} +{{experience.total}}
</div> </div>
<input name="{{concat "system.experiences." id ".description"}}" data-experience={{id}} value="{{experience.description}}" type="text" /> <span>{{experience.description}}</span>
<div class="controls"> <div class="controls">
<a data-action="toChat" data-type="experience" data-uuid="{{id}}"><i class="fa-regular fa-message"></i></a> <a data-action="toChat" data-type="experience" data-uuid="{{id}}"><i class="fa-regular fa-message"></i></a>
</div> </div>

View file

@ -3,15 +3,15 @@
data-tab='{{tabs.experiences.id}}' data-tab='{{tabs.experiences.id}}'
data-group='{{tabs.experiences.group}}' data-group='{{tabs.experiences.group}}'
> >
<button> <button data-action="addExperience">
New Experience New Experience
</button> </button>
{{#each document.system.experiences as |experience id|}}
<div class="experience-row"> {{#each document.system.experiences as |experience index|}}
<div class="experience-value"> <div class="experience-chip">
+{{experience.total}} <input class="experience.value" type="text" name="system.experiences.{{index}}.name" value="{{experience.name}}" />
</div> <input class="experience-value" type="text" name="system.experiences.{{index}}.value" value="{{experience.value}}" data-dtype="Number" />
<input name="{{concat "system.experiences." id ".name"}}" data-experience={{id}} value="{{experience.name}}" type="text" /> <button class="experience-button" data-action="removeExperience" data-experience="{{experience.id}}"><i class="fa-solid fa-x"></i></button>
</div> </div>
{{/each}} {{/each}}
</section> </section>