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) { activateListeners(html) {
super.activateListeners(html); super.activateListeners(html);
@ -448,25 +466,13 @@ export class CharacterSheet extends ActorSheet {
html.on('drop', '.equipped', async (evt) => { html.on('drop', '.equipped', async (evt) => {
const {actor, target, setId} = evt.currentTarget.dataset; const {actor, target, setId} = evt.currentTarget.dataset;
try {
const {documentId} = JSON.parse(evt.originalEvent.dataTransfer.getData("application/json")); const {documentId} = JSON.parse(evt.originalEvent.dataTransfer.getData("application/json"));
if (actor === this.object._id && documentId) { // managing equipped items if (actor === this.object._id && documentId) { // managing equipped items
//const slot = this.#isWorn(documentId, setId) //const slot = this.#isWorn(documentId, setId)
const equipmentSet = this.object.system.heldenausruestung[setId] const updateObject = this.#getEquipmentset(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;
updateObject[`system.heldenausruestung.${setId}.${target}`] = documentId; updateObject[`system.heldenausruestung.${setId}.${target}`] = documentId;
console.log(updateObject); console.log(updateObject);
@ -474,6 +480,7 @@ export class CharacterSheet extends ActorSheet {
} }
evt.stopPropagation(); evt.stopPropagation();
} catch (e) {}
}) })
new ContextMenu(html, '.talent.rollable', [ 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) { #handleDroppedSkill(actor, skill) {

View File

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