foundryvtt-reve-de-dragon/module/actor/entite-sheet.js

83 lines
3.1 KiB
JavaScript
Raw Normal View History

2023-11-04 03:42:39 +01:00
import { RdDBaseActorReveSheet } from "./base-actor-reve-sheet.js";
import { RdDSheetUtility } from "../rdd-sheet-utility.js";
import { RdDUtility } from "../rdd-utility.js";
2024-12-09 22:07:03 +01:00
import { DialogSelect } from "../dialog-select.js";
2020-11-14 23:24:01 +01:00
2023-11-04 03:42:39 +01:00
export class RdDActorEntiteSheet extends RdDBaseActorReveSheet {
2020-11-14 23:24:01 +01:00
/** @override */
static get defaultOptions() {
2024-05-01 09:13:21 +02:00
return foundry.utils.mergeObject(RdDBaseActorReveSheet.defaultOptions, {
template: "systems/foundryvtt-reve-de-dragon/templates/actor-entite-sheet.html",
2023-11-06 23:02:22 +01:00
width: 640, height: 720,
}, { inplace: false })
2020-11-14 23:24:01 +01:00
}
2023-11-06 23:02:22 +01:00
async getData() {
let formData = await super.getData();
formData.resonances = this.actor.system.sante.resonnance.actors.map(actorId => game.actors.get(actorId))
.map(actor => { return { id: actor.id, name: actor.name, img: actor.img } })
return formData
}
2020-11-14 23:24:01 +01:00
/* -------------------------------------------- */
/** @override */
activateListeners(html) {
2020-11-14 23:24:01 +01:00
super.activateListeners(html);
2020-11-14 23:24:01 +01:00
// Everything below here is only needed if the sheet is editable
if (!this.options.editable) return;
// On competence change
this.html.find('.creature-carac').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "carac_value", parseInt(event.target.value));
});
this.html.find('.creature-niveau').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "niveau", parseInt(event.target.value));
2024-12-09 22:07:03 +01:00
})
this.html.find('.creature-dommages').change(async event => {
let compName = event.currentTarget.attributes.compname.value;
this.actor.updateCreatureCompetence(compName, "dommages", parseInt(event.target.value));
2024-12-09 22:07:03 +01:00
})
this.html.find('.resonance-add').click(async event =>
DialogSelect.select({
label: "Choisir un acteur à accorder",
list: game.actors.filter(it => it.isPersonnage() && it.prototypeToken.actorLink)
},
it => this.resonanceAdd(it.id))
)
this.html.find('.resonance-delete').click(async event => {
const li = RdDSheetUtility.getEventElement(event);
const actorId = li.data("actor-id");
if (actorId) {
const actorResonance = game.actors.get(actorId);
RdDUtility.confirmSubActeurDelete(this, actorResonance, li, () => {
2024-12-09 22:07:03 +01:00
this.resonanceDelete(actorId);
RdDUtility.slideOnDelete(this, li);
2024-12-09 22:07:03 +01:00
})
}
2024-12-09 22:07:03 +01:00
})
}
async _onDropActor(event, dragData) {
const dropActor = fromUuidSync(dragData.uuid)
await this.actor.setEntiteReveAccordee(dropActor)
super._onDropActor(event, dragData)
}
2024-12-09 22:07:03 +01:00
async resonanceAdd(actorId) {
let newResonances = [...this.actor.system.sante.resonnance.actors, actorId]
await this.actor.update({ 'system.sante.resonnance.actors': newResonances });
}
async resonanceDelete(actorId) {
console.log('Delete : ', actorId);
let newResonances = this.actor.system.sante.resonnance.actors.filter(id => id != actorId);
await this.actor.update({ 'system.sante.resonnance.actors': newResonances }, { renderSheet: false });
2020-11-14 23:24:01 +01:00
}
}