fixes weird behaviour of adding and removing items to the paperdoll, verbose technique adds technical debt!

pull/49/head
macniel 2025-10-04 14:53:25 +02:00
parent 65fcc13822
commit 2814fabbbe
2 changed files with 46 additions and 34 deletions

View File

@ -407,6 +407,24 @@ export class CharacterSheet extends ActorSheet {
}
#getEquipmentset(setId) {
const equipmentSet = this.object.system.heldenausruestung[setId]
const updateObject = {}
updateObject[`system.heldenausruestung.${setId}.links`] = equipmentSet.links;
updateObject[`system.heldenausruestung.${setId}.rechts`] = equipmentSet.rechts;
updateObject[`system.heldenausruestung.${setId}.brust`] = equipmentSet.brust;
updateObject[`system.heldenausruestung.${setId}.bauch`] = equipmentSet.bauch;
updateObject[`system.heldenausruestung.${setId}.ruecken`] = equipmentSet.ruecken;
updateObject[`system.heldenausruestung.${setId}.kopf`] = equipmentSet.kopf;
updateObject[`system.heldenausruestung.${setId}.fernkampf`] = equipmentSet.fernkampf;
updateObject[`system.heldenausruestung.${setId}.munition`] = equipmentSet.munition;
updateObject[`system.heldenausruestung.${setId}.armlinks`] = equipmentSet.armlinks;
updateObject[`system.heldenausruestung.${setId}.armrechts`] = equipmentSet.armrechts;
updateObject[`system.heldenausruestung.${setId}.beinlinks`] = equipmentSet.beinlinks;
updateObject[`system.heldenausruestung.${setId}.beinrechts`] = equipmentSet.beinrechts;
return updateObject;
}
activateListeners(html) {
super.activateListeners(html);
@ -448,32 +466,21 @@ export class CharacterSheet extends ActorSheet {
html.on('drop', '.equipped', async (evt) => {
const {actor, target, setId} = evt.currentTarget.dataset;
const {documentId} = JSON.parse(evt.originalEvent.dataTransfer.getData("application/json"));
try {
const {documentId} = JSON.parse(evt.originalEvent.dataTransfer.getData("application/json"));
if (actor === this.object._id && documentId) { // managing equipped items
//const slot = this.#isWorn(documentId, setId)
const equipmentSet = this.object.system.heldenausruestung[setId]
const updateObject = {}
updateObject[`system.heldenausruestung.${setId}.links`] = equipmentSet.links;
updateObject[`system.heldenausruestung.${setId}.rechts`] = equipmentSet.rechts;
updateObject[`system.heldenausruestung.${setId}.brust`] = equipmentSet.brust;
updateObject[`system.heldenausruestung.${setId}.ruecken`] = equipmentSet.ruecken;
updateObject[`system.heldenausruestung.${setId}.kopf`] = equipmentSet.kopf;
updateObject[`system.heldenausruestung.${setId}.fernkampf`] = equipmentSet.fernkampf;
updateObject[`system.heldenausruestung.${setId}.munition`] = equipmentSet.munition;
updateObject[`system.heldenausruestung.${setId}.armlinks`] = equipmentSet.armlinks;
updateObject[`system.heldenausruestung.${setId}.armrechts`] = equipmentSet.armrechts;
updateObject[`system.heldenausruestung.${setId}.beinlinks`] = equipmentSet.beinlinks;
updateObject[`system.heldenausruestung.${setId}.beinrechts`] = equipmentSet.beinrechts;
if (actor === this.object._id && documentId) { // managing equipped items
//const slot = this.#isWorn(documentId, setId)
const updateObject = this.#getEquipmentset(setId)
updateObject[`system.heldenausruestung.${setId}.${target}`] = documentId;
console.log(updateObject);
updateObject[`system.heldenausruestung.${setId}.${target}`] = documentId;
console.log(updateObject);
await this.object.update(updateObject);
}
await this.object.update(updateObject);
}
evt.stopPropagation();
evt.stopPropagation();
} catch (e) {}
})
new ContextMenu(html, '.talent.rollable', [
@ -519,6 +526,21 @@ export class CharacterSheet extends ActorSheet {
}
]);
new ContextMenu(html, '.equipped', [
{
name: "Gegenstand vom Set entfernen",
callback: (event) => {
const {setId, target, actor} = event[0].dataset
const updateObject = this.#getEquipmentset(setId)
updateObject[`system.heldenausruestung.${setId}.${target}`] = null;
this.object.update(updateObject);
},
condition: () => true
}
]);
}
#handleDroppedSkill(actor, skill) {

View File

@ -46,74 +46,64 @@
width: 34px;
height: 34px;
position: absolute !important;
&.links {
position: absolute;
top: 230px;
left: 250px;
}
&.rechts {
position: absolute;
top: 230px;
left: 20px;
}
&.brust {
position: absolute;
top: 120px;
left: 110px;
}
&.armlinks {
position: absolute;
top: 180px;
left: 210px;
}
&.armrechts {
position: absolute;
top: 180px;
left: 60px;
}
&.beinlinks {
position: absolute;
top: 380px;
left: 210px;
}
&.beinrechts {
position: absolute;
top: 380px;
left: 60px;
}
&.bauch {
position: absolute;
top: 200px;
left: 136px;
}
&.kopf {
position: absolute;
top: 40px;
left: 136px
}
&.fernkampf {
position: absolute;
top: 40px;
left: 240px;
}
&.ruecken {
position: absolute;
top: 120px;
left: 160px;
}
&.munition {
position: absolute;
top: 80px;
left: 240px;
}