Compare commits

...

2 Commits

Author SHA1 Message Date
macniel 5104f43e2f inventory is now contained in its own scrollView. 2025-11-03 18:14:53 +01:00
macniel 34c95891e6 cleans up code 2025-11-03 18:14:39 +01:00
5 changed files with 53 additions and 54 deletions

View File

@ -82,7 +82,7 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
},
equipment: {
template: Equipment.template,
scrollable: ['']
scrollable: ['.inventory']
},
skills: {
template: Skills.template
@ -260,14 +260,14 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
static async #onSubmitForm(event, form, formData) {
event.preventDefault()
await this.document.update(formData.object) // Note: formData.object
await this.document.update(formData.object)
}
_getTabsConfig(group) {
const tabs = foundry.utils.deepClone(super._getTabsConfig(group))
Meta._getTabConfig(tabs, this);
Social._getTabConfig(tabs, this);
Meta._getTabConfig(tabs, this)
Social._getTabConfig(tabs, this)
Advsf._getTabConfig(tabs, this)
Combat._getTabConfig(tabs, this)
Equipment._getTabConfig(tabs, this)
@ -362,16 +362,12 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
if (fernkampf) {
const fkitems = fernkampf.system.rangedSkills.map((skillInQuestion) => actorData.items.find(p => p.name === skillInQuestion))
fkitems.forEach(async skill => {
const obj = await skill
fkitems.forEach(skill => {
context.attacks.push({
name: obj.name,
name: skill.name,
using: fernkampf.name,
atroll: `1d20cs<${this.document.system.fk.aktuell + obj.system.at}`,
at: `${this.document.system.fk.aktuell + obj.system.at}`,
tproll: `${fernkampf.system.rangedAttackDamage}`, // TODO consider adding TP/KK mod and Range mod
at: `${this.document.system.fk.aktuell + skill.system.at}`,
tp: `${fernkampf.system.rangedAttackDamage}`,
iniroll: `(${context.inidice})d6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
ini: `${context.inidice}w6 + ${context.inivalue + fernkampf.system.iniModifier ?? 0}`,
})
})
@ -389,13 +385,9 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
context.attacks.push({
name: obj.name,
using: links.name,
atroll: `1d20cs<${this.document.system.at.links.aktuell + obj.system.at + links.system.attackModifier}`, // TODO consider adding W/M
at: `${this.document.system.at.links.aktuell + obj.system.at + links.system.attackModifier}`,
paroll: `1d20cs<${this.document.system.pa.links.aktuell + obj.system.pa + links.system.parryModifier}`, // TODO consider adding W/M
pa: `${this.document.system.pa.links.aktuell + obj.system.pa + links.system.parryModifier}`,
tproll: `${links.system.meleeAttackDamage}`, // TODO consider adding TP/KK mod
tp: `${links.system.meleeAttackDamage}`,
iniroll: `(${context.inidice})d6 + ${context.inivalue + links.system.iniModifier ?? 0}`,
ini: `${context.inidice}w6 + ${context.inivalue + links.system.iniModifier ?? 0}`,
})
})
@ -413,13 +405,9 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
context.attacks.push({
name: obj.name,
using: rechts.name,
atroll: `1d20cs<${this.document.system.at.rechts.aktuell + obj.system.at + rechts.system.attackModifier}`, // TODO consider adding W/M
at: `${this.document.system.at.rechts.aktuell + obj.system.at + rechts.system.attackModifier}`,
paroll: `1d20cs<${this.document.system.pa.rechts.aktuell + obj.system.pa + rechts.system.parryModifier}`, // TODO consider adding W/M
pa: `${this.document.system.pa.rechts.aktuell + obj.system.pa + rechts.system.parryModifier}`,
tproll: `${rechts.system.meleeAttackDamage}`, // TODO consider adding TP/KK mod
tp: `${rechts.system.meleeAttackDamage}`,
iniroll: `(${context.inidice})d6 + ${context.inivalue + rechts.system.iniModifier ?? 0}`,
ini: `${context.inidice}w6 + ${context.inivalue + rechts.system.iniModifier ?? 0}`,
})
})
@ -547,16 +535,13 @@ class CharacterSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
async _onDrop(event) {
const data = TextEditor.implementation.getDragEventData(event);
const actor = this.actor;
const data = TextEditor.implementation.getDragEventData(event)
const targetDocument = this.actor.itemTypes["Equipment"].find(p => p._id === event.target.dataset['itemId'])
//const allowed = Hooks.call("dropActorSheetData", actor, this, data);
//if (allowed === false) return;
// Dropped Documents
const documentClass = foundry.utils.getDocumentClass(data.type);
const documentClass = foundry.utils.getDocumentClass(data.type)
if (documentClass) {
const document = await documentClass.fromDropData(data);
const document = await documentClass.fromDropData(data)
if (document.type === "Equipment" || document.type === "Advantage" || document.type === "Spell" || document.type === "Liturgy" || document.type === "ActiveEffect" || document.type === "SpecialAbility") {
// No duplication by moving items from one actor to another

View File

@ -89,7 +89,7 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
static async #onSubmitForm(event, form, formData) {
event.preventDefault()
await this.document.update(formData.object) // Note: formData.object
await this.document.update(formData.object)
}
static #openEmbeddedDocument(event, target) {
@ -100,8 +100,8 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
static async #removeAttack(evt) {
const {index} = evt.srcElement.dataset;
let sans = Array.from(this.document.system.attacks);
sans.splice(index, 1);
let sans = Array.from(this.document.system.attacks)
sans.splice(index, 1)
await this.document.update({'system.attacks': sans})
}
@ -113,7 +113,7 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
speaker: ChatMessage.getSpeaker({actor: this.document}),
flavor: label,
rollMode: game.settings.get('core', 'rollMode'),
});
})
}
static async #addAttack() {
@ -140,11 +140,11 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
/** @override */
async _prepareContext(options) {
const context = await super._prepareContext(options);
const actorData = context.document;
const context = await super._prepareContext(options)
const actorData = context.document
context.attacks = [];
context.actor = actorData;
context.attacks = []
context.actor = actorData
actorData.system.attacks.forEach((attack, index) => {
context.attacks.push({
@ -180,7 +180,7 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
})
return context;
return context
}
@ -199,7 +199,7 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
//const allowed = Hooks.call("dropActorSheetData", actor, this, data);
// if (allowed === false) return;
// Dropped Documents
const documentClass = foundry.utils.getDocumentClass(data.type);
const documentClass = foundry.utils.getDocumentClass(data.type)
if (documentClass) {
const document = await documentClass.fromDropData(data);
@ -209,7 +209,7 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
document.parent.items.get(document._id).delete()
}
await this._onDropDocument(event, document);
await this._onDropDocument(event, document)
}
}
}
@ -226,7 +226,7 @@ export class CreatureSheet extends HandlebarsApplicationMixin(ActorSheetV2) {
dragstart: this._onDragStart.bind(this),
drop: this._onDrop.bind(this)
}
}).bind(this.element);
}).bind(this.element)
}

View File

@ -44,7 +44,7 @@ export class CultureSheet extends HandlebarsApplicationMixin(DocumentSheetV2) {
static async #onSubmitForm(event, form, formData) {
event.preventDefault()
await this.document.update(formData.object) // Note: formData.object
await this.document.update(formData.object)
}
/** @override */

View File

@ -6,13 +6,19 @@
& > div {
display: grid;
grid-template-columns: 1fr 320px;
grid-template-rows: 74px 1fr;
grid-template-rows: 32px 32px 32px 1fr;
gap: 10px;
height: 100%;
grid-template-areas:
"capacity capacity"
"coinage coinage"
"inventory-header equipment-header"
"inventory equipment";
.coinage {
grid-area: coinage;
}
.capacity {
grid-area: capacity;
@ -35,24 +41,30 @@
}
}
.inventory {
grid-area: inventory;
display: flex;
flex-direction: column;
h3 {
flex: 0;
h3.inventory-header {
line-height: 32px;
grid-area: inventory-header;
margin: 0;
padding: 0;
}
.inventory-table {
.inventory {
grid-area: inventory;
flex: 1;
display: flex;
flex-direction: column;
overflow-x: hidden;
overflow-y: auto;
border: 1px inset #ccc;
background-color: rgba(0, 0, 0, 0.2);
.equipment {
@include equipment.equipment
}
}
}
}
}

View File

@ -9,12 +9,14 @@
</div>
</div>
<div class="inventory">
<h3>Inventar </h3>
<div class="coinage">
<label>Geldmittel: {{currency this.wealth}}</label>
{{> "systems/DSA_4-1/templates/ui/partial-equipment-button.hbs" equipments}}
</div>
<h3 class="inventory-header">Inventar </h3>
<div class="inventory">
{{> "systems/DSA_4-1/templates/ui/partial-equipment-button.hbs" equipments}}
</div>
<!-- TODO: fix paperdoll
<div class="paperdoll">