Compare commits

..

3 Commits

Author SHA1 Message Date
Sven Balzer
7036efd8fd add the ability to change the icon of actors and items 2025-05-03 11:26:06 +02:00
Sven Balzer
8922bb1b72 add the ability to reorder items in Inventory 2025-05-02 10:55:28 +02:00
Sven Balzer
4bc8645fcb use v13s default drop handling for actor sheets 2025-05-02 04:38:34 +02:00
9 changed files with 20 additions and 31 deletions

View File

@ -25,7 +25,7 @@
</div>
<div class="row">
<img class="character-image" src="{{ actor.img }}" title="{{ actor.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="character-image" src="{{ actor.img }}" title="{{ actor.name }}" data-action="editImage" data-edit="img">
<div class="col">
<div class="row">
{{#each actor.system.attributes}}
@ -322,8 +322,8 @@
<div class="list-item">{{localize "DSA41.list_empty"}}</div>
{{/unless}}
{{#each actor.itemTypes.Bewaffnung}}
<div class="list-item" data-item-id="{{this._id}}">
{{#each (sorted actor.itemTypes.Bewaffnung)}}
<div class="list-item draggable" data-item-id="{{this._id}}">
<div class="row" data-action="item-open">
<img class="item-image" src="{{this.img}}" title="{{this.name}}">
<div class="col">
@ -356,8 +356,8 @@
<div class="list-item">{{localize "DSA41.list_empty"}}</div>
{{/unless}}
{{#each actor.itemTypes.Ruestung}}
<div class="list-item" data-item-id="{{this._id}}">
{{#each (sorted actor.itemTypes.Ruestung)}}
<div class="list-item draggable" data-item-id="{{this._id}}">
<div class="row" data-action="item-open">
<img class="item-image" src="{{this.img}}" title="{{this.name}}">
<span class="center">{{this.name}}</span>
@ -382,8 +382,8 @@
<div class="list-item">{{localize "DSA41.list_empty"}}</div>
{{/unless}}
{{#each actor.itemTypes.Gegenstand}}
<div class="list-item" data-item-id="{{this._id}}">
{{#each (sorted actor.itemTypes.Gegenstand)}}
<div class="list-item draggable" data-item-id="{{this._id}}">
<div class="row" data-action="item-open">
<img class="item-image" src="{{this.img}}" title="{{this.name}}">
<span class="center">{{this.name}}</span>

View File

@ -1,6 +1,6 @@
<div class="Bewaffnung {{ cssClass }}">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
<div class="row gap">

View File

@ -1,6 +1,6 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
<div class="row gap">

View File

@ -1,6 +1,6 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
<div class="grid3 gap">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}

View File

@ -1,6 +1,6 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}
<div class="row gap">

View File

@ -1,6 +1,6 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
<div class="grid2 gap">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}

View File

@ -1,6 +1,6 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
<div class="grid3 gap">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}

View File

@ -1,6 +1,6 @@
<div class="item-sheet {{ cssClass }}" autocomplete="off">
<div class="row">
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" {{#if editable}}data-edit="img"{{/if}}>
<img class="item-image" src="{{ item.img }}" title="{{ item.name }}" data-action="editImage" data-edit="img">
<div class="col">
<div class="grid2 gap">
{{>editable-input type="text" name="name" value=item.name placeholder=(localize "DSA41.name")}}

View File

@ -92,6 +92,12 @@ Hooks.once("init", async function() {
}
});
Handlebars.registerHelper({
sorted: (array, options) => {
return array.toSorted((a, b) => a.sort - b.sort);
}
});
await loadTemplates({
"editable-input": "systems/dsa-4th-edition/src/EditableInput.hbs",
@ -1115,23 +1121,6 @@ class DSA41_ActorSheet extends DSA41_ApplicationMixin(ActorSheetV2) {
},
};
_onFirstRender(context, options) {
super._onFirstRender(context, options);
const content = this.element.querySelector(".window-content");
content.addEventListener("drop", async (event) => {
event.preventDefault();
const data = TextEditor.getDragEventData(event);
switch (data.type) {
case "Item": {
const item = await Item.implementation.fromDropData(data);
await this.actor.createEmbeddedDocuments("Item", [item.toObject()]);
} break;
}
});
}
// allow changing embedded item fields
async _onChangeForm(formConfig, event) {
const item_id = event.target.closest("[data-item-id]")?.dataset.itemId;