mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-07-22 02:19:54 +02:00
In setting sheets, split feature types and make description viewable
This commit is contained in:
parent
29be8c1395
commit
9d16bc48ae
9 changed files with 123 additions and 98 deletions
|
|
@ -10,11 +10,7 @@ export default class DHAdversarySettings extends DHBaseActorSettings {
|
|||
actions: {
|
||||
addExperience: DHAdversarySettings.#addExperience,
|
||||
removeExperience: DHAdversarySettings.#removeExperience
|
||||
},
|
||||
dragDrop: [
|
||||
{ dragSelector: null, dropSelector: '.tab.features' },
|
||||
{ dragSelector: '.feature-item', dropSelector: null }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
/**@override */
|
||||
|
|
@ -38,7 +34,8 @@ export default class DHAdversarySettings extends DHBaseActorSettings {
|
|||
},
|
||||
features: {
|
||||
id: 'features',
|
||||
template: 'systems/daggerheart/templates/sheets-settings/adversary-settings/features.hbs'
|
||||
template: 'systems/daggerheart/templates/sheets-settings/adversary-settings/features.hbs',
|
||||
scrollable: ['']
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -54,12 +51,16 @@ export default class DHAdversarySettings extends DHBaseActorSettings {
|
|||
async _prepareContext(options) {
|
||||
const context = await super._prepareContext(options);
|
||||
|
||||
const featureForms = Object.keys(CONFIG.DH.ITEM.featureForm);
|
||||
context.features = context.document.system.features.sort((a, b) =>
|
||||
a.system.featureForm !== b.system.featureForm
|
||||
? featureForms.indexOf(a.system.featureForm) - featureForms.indexOf(b.system.featureForm)
|
||||
: a.sort - b.sort
|
||||
);
|
||||
// Get feature groups. Uncategorized go to actions
|
||||
const featureFormsTypes = ['passive', 'action', 'reaction'];
|
||||
const features = this.document.system.features.sort((a, b) => a.sort - b.sort);
|
||||
const featureGroups = featureFormsTypes.map(t => ({
|
||||
featureForm: t,
|
||||
label: _loc(CONFIG.DH.ITEM.featureForm[t]),
|
||||
features: features.filter(f => f.system.featureForm === t)
|
||||
}));
|
||||
featureGroups[1].features.push(...features.filter(f => !featureFormsTypes.includes(f.system.featureForm)));
|
||||
context.featureGroups = featureGroups;
|
||||
|
||||
return context;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,11 +32,13 @@ export default class DHEnvironmentSettings extends DHBaseActorSettings {
|
|||
},
|
||||
features: {
|
||||
id: 'features',
|
||||
template: 'systems/daggerheart/templates/sheets-settings/environment-settings/features.hbs'
|
||||
template: 'systems/daggerheart/templates/sheets-settings/environment-settings/features.hbs',
|
||||
scrollable: ['']
|
||||
},
|
||||
adversaries: {
|
||||
id: 'adversaries',
|
||||
template: 'systems/daggerheart/templates/sheets-settings/environment-settings/adversaries.hbs'
|
||||
template: 'systems/daggerheart/templates/sheets-settings/environment-settings/adversaries.hbs',
|
||||
scrollable: ['']
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -52,12 +54,16 @@ export default class DHEnvironmentSettings extends DHBaseActorSettings {
|
|||
async _prepareContext(options) {
|
||||
const context = await super._prepareContext(options);
|
||||
|
||||
const featureForms = ['passive', 'action', 'reaction'];
|
||||
context.features = context.document.system.features.sort((a, b) =>
|
||||
a.system.featureForm !== b.system.featureForm
|
||||
? featureForms.indexOf(a.system.featureForm) - featureForms.indexOf(b.system.featureForm)
|
||||
: a.sort - b.sort
|
||||
);
|
||||
// Get feature groups. Uncategorized go to actions
|
||||
const featureFormsTypes = ['passive', 'action', 'reaction'];
|
||||
const features = this.document.system.features.sort((a, b) => a.sort - b.sort);
|
||||
const featureGroups = featureFormsTypes.map(t => ({
|
||||
featureForm: t,
|
||||
label: _loc(CONFIG.DH.ITEM.featureForm[t]),
|
||||
features: features.filter(f => f.system.featureForm === t)
|
||||
}));
|
||||
featureGroups[1].features.push(...features.filter(f => !featureFormsTypes.includes(f.system.featureForm)));
|
||||
context.featureGroups = featureGroups;
|
||||
|
||||
return context;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@ export default class DHNPCSettings extends DHBaseActorSettings {
|
|||
},
|
||||
features: {
|
||||
id: 'features',
|
||||
template: 'systems/daggerheart/templates/sheets-settings/npc-settings/features.hbs'
|
||||
template: 'systems/daggerheart/templates/sheets-settings/npc-settings/features.hbs',
|
||||
scrollable: ['']
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -43,12 +44,16 @@ export default class DHNPCSettings extends DHBaseActorSettings {
|
|||
async _prepareContext(options) {
|
||||
const context = await super._prepareContext(options);
|
||||
|
||||
const featureForms = ['passive', 'action', 'reaction'];
|
||||
context.features = context.document.system.features.sort((a, b) =>
|
||||
a.system.featureForm !== b.system.featureForm
|
||||
? featureForms.indexOf(a.system.featureForm) - featureForms.indexOf(b.system.featureForm)
|
||||
: a.sort - b.sort
|
||||
);
|
||||
// Get feature groups. Uncategorized go to actions
|
||||
const featureFormsTypes = ['passive', 'action', 'reaction'];
|
||||
const features = this.document.system.features.sort((a, b) => a.sort - b.sort);
|
||||
const featureGroups = featureFormsTypes.map(t => ({
|
||||
featureForm: t,
|
||||
label: _loc(CONFIG.DH.ITEM.featureForm[t]),
|
||||
features: features.filter(f => f.system.featureForm === t)
|
||||
}));
|
||||
featureGroups[1].features.push(...features.filter(f => !featureFormsTypes.includes(f.system.featureForm)));
|
||||
context.featureGroups = featureGroups;
|
||||
|
||||
return context;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ export default class DHBaseActorSettings extends DHApplicationMixin(ActorSheetV2
|
|||
},
|
||||
dragDrop: [
|
||||
{ dragSelector: null, dropSelector: '.tab.features' },
|
||||
{ dragSelector: '.feature-item', dropSelector: null }
|
||||
{ dragSelector: '.feature-item, .inventory-item[data-type="feature"]', dropSelector: null }
|
||||
]
|
||||
};
|
||||
|
||||
|
|
@ -77,7 +77,7 @@ export default class DHBaseActorSettings extends DHApplicationMixin(ActorSheetV2
|
|||
}
|
||||
|
||||
async _onDragStart(event) {
|
||||
const featureItemEl = event.currentTarget.closest('.feature-item');
|
||||
const featureItemEl = event.currentTarget.closest('.feature-item, .inventory-item[data-type="feature"]');
|
||||
const feature = this.actor.items.get(featureItemEl?.dataset.itemId);
|
||||
if (feature && event.target.closest('.tab.features')) {
|
||||
const featureData = { ...feature.toDragData(), fromInternal: true };
|
||||
|
|
|
|||
|
|
@ -734,7 +734,7 @@ export default function DHApplicationMixin(Base) {
|
|||
* @type {ApplicationClickAction}
|
||||
*/
|
||||
static async #onCreateDoc(event, target) {
|
||||
const { documentClass, type, inVault, disabled } = target.dataset;
|
||||
const { documentClass, type, inVault, disabled, featureForm } = target.dataset;
|
||||
const parentIsItem = this.document.documentName === 'Item';
|
||||
const featureOnCharacter = this.document.parent?.type === 'character' && type === 'feature';
|
||||
const parent = featureOnCharacter
|
||||
|
|
@ -752,6 +752,7 @@ export default function DHApplicationMixin(Base) {
|
|||
identifier: this.document.system.isMulticlass ? 'multiclass' : null
|
||||
};
|
||||
}
|
||||
if (featureForm) systemData.featureForm = featureForm;
|
||||
|
||||
const cls =
|
||||
type === 'action' ? game.system.api.models.actions.actionsTypes.base : getDocumentClass(documentClass);
|
||||
|
|
|
|||
|
|
@ -3,27 +3,30 @@
|
|||
data-tab='{{tabs.features.id}}'
|
||||
data-group='{{tabs.features.group}}'
|
||||
>
|
||||
<button type="button" class="add-feature-btn" data-action="createDoc" data-document-class="Item" data-type="feature">
|
||||
{{localize "DOCUMENT.New" type=(localize "TYPES.Item.feature")}}
|
||||
</button>
|
||||
<fieldset>
|
||||
<legend>{{localize tabs.features.label}}</legend>
|
||||
<ul class="feature-list">
|
||||
{{#each @root.features as |feature|}}
|
||||
<li class="feature-item" data-item-id="{{feature.id}}" draggable="true">
|
||||
<img src="{{feature.img}}" alt="">
|
||||
<div class="label">
|
||||
<span>{{feature.name}}</span>
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-action="editDoc" data-item-uuid="{{feature.uuid}}" data-tooltip="{{localize 'CONTROLS.CommonEdit'}}"><i class="fa-solid fa-pen-to-square"></i></a>
|
||||
<a data-action="deleteDoc" data-item-uuid="{{feature.uuid}}" data-tooltip="{{localize 'CONTROLS.CommonDelete'}}"><i class="fa-solid fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
<div class="features-dragger">
|
||||
<span>{{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{#each featureGroups as |group|}}
|
||||
<fieldset>
|
||||
<legend>
|
||||
{{group.label}}
|
||||
<a data-action="createDoc" data-document-class="Item" data-type="feature" data-tooltip="{{localize 'DOCUMENT.Create' type=(localize "TYPES.Item.feature")}}" data-feature-form="{{group.featureForm}}">
|
||||
<i class="fa-solid fa-plus icon-button"></i>
|
||||
</a>
|
||||
</legend>
|
||||
<ul class="feature-list">
|
||||
{{#each group.features as |feature|}}
|
||||
{{> 'daggerheart.inventory-item'
|
||||
item=feature
|
||||
type='feature'
|
||||
actorType=@root.document.type
|
||||
hideTags=true
|
||||
hideContextMenu=true
|
||||
hideResources=true
|
||||
showActions=false
|
||||
}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
<div class="features-dragger">
|
||||
<span>{{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}</span>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -3,24 +3,30 @@
|
|||
data-tab='{{tabs.features.id}}'
|
||||
data-group='{{tabs.features.group}}'
|
||||
>
|
||||
<button type="button" class="add-feature-btn" data-action="createDoc" data-document-class="Item" data-type="feature">
|
||||
{{localize "DOCUMENT.New" type=(localize "TYPES.Item.feature")}}
|
||||
</button>
|
||||
<fieldset>
|
||||
<legend>{{localize tabs.features.label}}</legend>
|
||||
<ul class="feature-list">
|
||||
{{#each @root.features as |feature|}}
|
||||
<li class="feature-item" data-item-id="{{feature.id}}">
|
||||
<img src="{{feature.img}}" alt="">
|
||||
<div class="label">
|
||||
<span>{{feature.name}}</span>
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-action="editDoc" data-item-uuid="{{feature.uuid}}" data-tooltip="{{localize 'CONTROLS.CommonEdit'}}"><i class="fa-solid fa-pen-to-square"></i></a>
|
||||
<a data-action="deleteDoc" data-item-uuid="{{feature.uuid}}" data-tooltip="{{localize 'CONTROLS.CommonDelete'}}"><i class="fa-solid fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</fieldset>
|
||||
{{#each featureGroups as |group|}}
|
||||
<fieldset>
|
||||
<legend>
|
||||
{{group.label}}
|
||||
<a data-action="createDoc" data-document-class="Item" data-type="feature" data-tooltip="{{localize 'DOCUMENT.Create' type=(localize "TYPES.Item.feature")}}" data-feature-form="{{group.featureForm}}">
|
||||
<i class="fa-solid fa-plus icon-button"></i>
|
||||
</a>
|
||||
</legend>
|
||||
<ul class="feature-list">
|
||||
{{#each group.features as |feature|}}
|
||||
{{> 'daggerheart.inventory-item'
|
||||
item=feature
|
||||
type='feature'
|
||||
actorType=@root.document.type
|
||||
hideTags=true
|
||||
hideContextMenu=true
|
||||
hideResources=true
|
||||
showActions=false
|
||||
}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
<div class="features-dragger">
|
||||
<span>{{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}</span>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -3,27 +3,30 @@
|
|||
data-tab='{{tabs.features.id}}'
|
||||
data-group='{{tabs.features.group}}'
|
||||
>
|
||||
<button type="button" class="add-feature-btn" data-action="createDoc" data-document-class="Item" data-type="feature">
|
||||
{{localize "DOCUMENT.New" type=(localize "TYPES.Item.feature")}}
|
||||
</button>
|
||||
<fieldset>
|
||||
<legend>{{localize tabs.features.label}}</legend>
|
||||
<ul class="feature-list">
|
||||
{{#each @root.features as |feature|}}
|
||||
<li class="feature-item" data-item-id="{{feature.id}}" draggable="true">
|
||||
<img src="{{feature.img}}" alt="">
|
||||
<div class="label">
|
||||
<span>{{feature.name}}</span>
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-action="editDoc" data-item-uuid="{{feature.uuid}}" data-tooltip="{{localize 'CONTROLS.CommonEdit'}}"><i class="fa-solid fa-pen-to-square"></i></a>
|
||||
<a data-action="deleteDoc" data-item-uuid="{{feature.uuid}}" data-tooltip="{{localize 'CONTROLS.CommonDelete'}}"><i class="fa-solid fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
<div class="features-dragger">
|
||||
<span>{{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
{{#each featureGroups as |group|}}
|
||||
<fieldset>
|
||||
<legend>
|
||||
{{group.label}}
|
||||
<a data-action="createDoc" data-document-class="Item" data-type="feature" data-tooltip="{{localize 'DOCUMENT.Create' type=(localize "TYPES.Item.feature")}}" data-feature-form="{{group.featureForm}}">
|
||||
<i class="fa-solid fa-plus icon-button"></i>
|
||||
</a>
|
||||
</legend>
|
||||
<ul class="feature-list">
|
||||
{{#each group.features as |feature|}}
|
||||
{{> 'daggerheart.inventory-item'
|
||||
item=feature
|
||||
type='feature'
|
||||
actorType=@root.document.type
|
||||
hideTags=true
|
||||
hideContextMenu=true
|
||||
hideResources=true
|
||||
showActions=false
|
||||
}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</fieldset>
|
||||
{{/each}}
|
||||
<div class="features-dragger">
|
||||
<span>{{localize "DAGGERHEART.GENERAL.dropFeaturesHere"}}</span>
|
||||
</div>
|
||||
</section>
|
||||
|
|
@ -46,10 +46,10 @@ Parameters:
|
|||
<span class="item-name">{{localize item.name}} {{#unless (or noExtensible (not item.system.description))}}<span class="expanded-icon"><i class="fa-solid fa-expand"></i></span>{{/unless}}</span>
|
||||
|
||||
{{!-- Tags Start --}}
|
||||
{{#if (not ../hideTags)}}
|
||||
{{#if (not hideTags)}}
|
||||
{{#> "systems/daggerheart/templates/sheets/global/partials/item-tags.hbs" item}}
|
||||
{{#if (eq ../type 'feature')}}
|
||||
{{#if (and system.featureForm (or (eq @root.document.type "adversary") (eq @root.document.type "environment")))}}
|
||||
{{#if (and system.featureForm (ne @root.document.type "character"))}}
|
||||
<div class="tag feature-form">
|
||||
<span class="recall-value">{{localize (concat "DAGGERHEART.CONFIG.FeatureForm." system.featureForm)}}</span>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue