forked from public/foundryvtt-reve-de-dragon
Refactor: extrait méthodes communes
- suppression de casetmr lors de visite/conquete - suppression de toutes les cases TMRs liées - notification lors de suppression d'une casetmr pour enlever la queue # Conflicts: # module/actor.js
This commit is contained in:
@ -7,8 +7,7 @@ const registeredEffects = [
|
||||
/**
|
||||
* Définition des informations d'une "draconique" (queue, ombre, tête, souffle) qui influence les TMR
|
||||
*/
|
||||
export class Draconique
|
||||
{
|
||||
export class Draconique {
|
||||
static isCaseTMR(element) { return element.type == 'casetmr'; }
|
||||
static isQueueDragon(element) { return element.type == 'queue' || element.type == 'ombre'; }
|
||||
static isSouffleDragon(element) { return element.type == 'souffle'; }
|
||||
@ -28,6 +27,7 @@ export class Draconique
|
||||
static all() {
|
||||
return Object.values(registeredEffects);
|
||||
}
|
||||
|
||||
static get(code) {
|
||||
return registeredEffects[code];
|
||||
}
|
||||
@ -56,10 +56,11 @@ export class Draconique
|
||||
}
|
||||
|
||||
async onActorDeleteOwned(actor, item) {
|
||||
let caseTmrs = actor.data.items.filter(it => this.isCase(it) && it.data.sourceid == item._id);
|
||||
for (let casetmr of caseTmrs) {
|
||||
await actor.deleteOwnedItem(casetmr._id);
|
||||
}
|
||||
this.deleteCasesTmr(actor, item);
|
||||
return false;
|
||||
}
|
||||
|
||||
async onActorDeleteCaseTmr(actor, casetmr) {
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
@ -72,7 +73,7 @@ export class Draconique
|
||||
* @returns un tooltip à afficher au dessus du token
|
||||
*/
|
||||
tooltip(linkData) { return undefined }
|
||||
|
||||
|
||||
/**
|
||||
* @param {*} img l'url du fichier image à utiliser pour le token. Si indéfini (et si createSprite n'est pas surchargé),
|
||||
* un disque est utilisé.
|
||||
@ -102,7 +103,7 @@ export class Draconique
|
||||
if (this.img()) {
|
||||
return pixiTMR.sprite(this.code());
|
||||
}
|
||||
else{
|
||||
else {
|
||||
return pixiTMR.circle()
|
||||
}
|
||||
}
|
||||
@ -120,11 +121,26 @@ export class Draconique
|
||||
return list.find(c => this.isCase(c, coord));
|
||||
}
|
||||
|
||||
async createCaseTmr(actor, label, tmr, sourceId=undefined) {
|
||||
async createCaseTmr(actor, label, tmr, sourceId = undefined) {
|
||||
await actor.createOwnedItem({
|
||||
name: label, type: 'casetmr', img: this.img(), _id: randomID(16),
|
||||
data: { coord: tmr.coord, specific: this.code(), sourceid:sourceId }
|
||||
data: { coord: tmr.coord, specific: this.code(), sourceid: sourceId }
|
||||
});
|
||||
}
|
||||
|
||||
async deleteCasesTmr(actor, draconique) {
|
||||
let caseTmrs = actor.data.items.filter(it => this.isCase(it) && it.data.sourceid == draconique._id);
|
||||
for (let casetmr of caseTmrs) {
|
||||
await actor.deleteOwnedItem(casetmr._id);
|
||||
}
|
||||
}
|
||||
|
||||
async onVisiteSupprimer(actor, tmr, onRemoveToken) {
|
||||
let existants = actor.data.items.filter(it => this.isCase(it, tmr.coord));
|
||||
for (let casetmr of existants) {
|
||||
await actor.deleteOwnedItem(casetmr._id);
|
||||
onRemoveToken(tmr, casetmr);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user