forked from public/foundryvtt-reve-de-dragon
#11 Gestion des conteneurs
This commit is contained in:
@ -106,28 +106,51 @@ export class RdDActorSheet extends ActorSheet {
|
||||
// Mise à jour de l'encombrement total
|
||||
this.actor.computeEncombrementTotal();
|
||||
|
||||
// low is normal, this the base used to compute the grid.
|
||||
data.data.fatigueHTML = "<table class='table-fatigue'>" + RdDUtility.makeHTMLfatigueMatrix( data.data.sante.fatigue.value, data.data.sante.endurance.max ).html() + "</table>";
|
||||
data.data.materiel = this._checkNull(data.itemsByType['objet']);
|
||||
data.data.conteneur = this._checkNull(data.itemsByType['conteneur']);
|
||||
data.data.armes = this._checkNull(data.itemsByType['arme']);
|
||||
data.data.armures = this._checkNull(data.itemsByType['armure']);
|
||||
data.data.livres = this._checkNull(data.itemsByType['livre']);
|
||||
data.data.potions = this._checkNull(data.itemsByType['potions']);
|
||||
data.data.ingredients = this._checkNull(data.itemsByType['ingredient']);
|
||||
data.data.munitions = this._checkNull(data.itemsByType['munition']);
|
||||
data.data.herbes = this._checkNull(data.itemsByType['herbes']);
|
||||
data.data.sorts = this._checkNull(data.itemsByType['sort']);
|
||||
data.data.queues = this._checkNull(data.itemsByType['queue']);
|
||||
data.data.souffles = this._checkNull(data.itemsByType['souffle']);
|
||||
data.data.ombres = this._checkNull(data.itemsByType['ombre']);
|
||||
data.data.tetes = this._checkNull(data.itemsByType['tete']);
|
||||
data.data.objets = data.data.materiel.concat(data.data.armes).concat(data.data.armures).concat(data.data.munitions).concat(data.data.livres).concat(data.data.potions).concat(data.data.herbes).concat(data.data.ingredients);
|
||||
// Common data
|
||||
data.data.competenceByCategory = data.competenceByCategory;
|
||||
data.data.encombrementTotal = this.actor.encombrementTotal;
|
||||
data.data.isGM = game.user.isGM;
|
||||
data.bonusmalusTable = CONFIG.RDD.bonusmalus;
|
||||
|
||||
// low is normal, this the base used to compute the grid.
|
||||
data.data.fatigueHTML = "<table class='table-fatigue'>" + RdDUtility.makeHTMLfatigueMatrix( data.data.sante.fatigue.value, data.data.sante.endurance.max ).html() + "</table>";
|
||||
data.data.materiel = this._checkNull(data.itemsByType['objet']);
|
||||
data.data.conteneurs = this._checkNull(data.itemsByType['conteneur']);
|
||||
data.data.armes = this._checkNull(data.itemsByType['arme']);
|
||||
data.data.armures = this._checkNull(data.itemsByType['armure']);
|
||||
data.data.livres = this._checkNull(data.itemsByType['livre']);
|
||||
data.data.potions = this._checkNull(data.itemsByType['potions']);
|
||||
data.data.ingredients = this._checkNull(data.itemsByType['ingredient']);
|
||||
data.data.munitions = this._checkNull(data.itemsByType['munition']);
|
||||
data.data.herbes = this._checkNull(data.itemsByType['herbes']);
|
||||
data.data.sorts = this._checkNull(data.itemsByType['sort']);
|
||||
data.data.queues = this._checkNull(data.itemsByType['queue']);
|
||||
data.data.souffles = this._checkNull(data.itemsByType['souffle']);
|
||||
data.data.ombres = this._checkNull(data.itemsByType['ombre']);
|
||||
data.data.tetes = this._checkNull(data.itemsByType['tete']);
|
||||
data.data.objets = data.data.conteneurs.concat(data.data.materiel).concat(data.data.armes).concat(data.data.armures).concat(data.data.munitions).concat(data.data.livres).concat(data.data.potions).concat(data.data.herbes).concat(data.data.ingredients);
|
||||
|
||||
this.objetVersConteneur = {}; // Table de hash locale pour recupération rapide du conteneur parent (si existant)
|
||||
// Attribution des objets aux conteneurs
|
||||
for (let conteneur of data.data.conteneurs) {
|
||||
conteneur.subItems = [];
|
||||
conteneur.encTotal = 0;
|
||||
if (conteneur.data.contenu) {
|
||||
for (let id of conteneur.data.contenu) {
|
||||
let objet = data.data.objets.find( objet => (id == objet._id) );
|
||||
if (objet) {
|
||||
objet.estContenu = true; // Permet de filtrer ce qui est porté dans le template
|
||||
this.objetVersConteneur[id] = conteneur._id;
|
||||
conteneur.encTotal += objet.data.encombrement;
|
||||
conteneur.subItems.push( objet );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Construit la liste des conteneurs de niveau 1 (c'est à dire non contenu eux-même dans un conteneur)
|
||||
let newConteneurs = data.data.conteneurs.filter(function(conteneur, index, arr) { return !conteneur.estContenu } );
|
||||
data.data.conteneurs = newConteneurs;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@ -140,10 +163,18 @@ export class RdDActorSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDrop(event) {
|
||||
let dragData = JSON.parse(event.dataTransfer.getData("text/plain"));
|
||||
let dropID = $(event.target).parents(".item").attr("data-item-id"); // Only relevant if container drop
|
||||
if ( dropID ) { // Dropped over an item !!!
|
||||
let objetId = dragData.id || dragData.data._id;
|
||||
this.actor.enleverDeConteneur(objetId, this.objetVersConteneur[objetId]);
|
||||
this.actor.ajouterAConteneur(objetId, dropID);
|
||||
}
|
||||
console.log("DATA !!!!", dragData, dropID );
|
||||
super._onDrop(event)
|
||||
this.actor.computeEncombrementTotal();
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
activateListeners(html) {
|
||||
|
Reference in New Issue
Block a user