#124 : Les creatures peuvent avoir de l'equipement
This commit is contained in:
@ -6,9 +6,10 @@
|
||||
|
||||
import { HtmlUtility } from "./html-utility.js";
|
||||
import { RdDUtility } from "./rdd-utility.js";
|
||||
import { RdDActorSheet } from "./actor-sheet.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class RdDActorCreatureSheet extends ActorSheet {
|
||||
export class RdDActorCreatureSheet extends RdDActorSheet {
|
||||
|
||||
/** @override */
|
||||
static get defaultOptions() {
|
||||
@ -26,7 +27,8 @@ export class RdDActorCreatureSheet extends ActorSheet {
|
||||
/* -------------------------------------------- */
|
||||
getData() {
|
||||
let data = super.getData();
|
||||
|
||||
console.log("Creature : ", data);
|
||||
|
||||
data.itemsByType = {};
|
||||
for (const item of data.items) {
|
||||
let list = data.itemsByType[item.type];
|
||||
@ -48,19 +50,23 @@ export class RdDActorCreatureSheet extends ActorSheet {
|
||||
data.data.isGM = game.user.isGM;
|
||||
|
||||
data.data.competencecreature = data.itemsByType["competencecreature"];
|
||||
|
||||
|
||||
this.actor.computeEncombrementTotalEtMalusArmure();
|
||||
RdDUtility.filterItemsPerTypeForSheet(data );
|
||||
RdDUtility.buildArbreDeConteneur( this, data );
|
||||
data.data.encTotal = this.actor.encTotal;
|
||||
data.data.isGM = game.user.isGM;
|
||||
|
||||
console.log("Creature : ", this.objetVersConteneur , data);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDrop(event) {
|
||||
RdDUtility.processItemDropEvent(this, event);
|
||||
super._onDrop(event);
|
||||
prepareCreatureData( ) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
activateListeners(html) {
|
||||
@ -160,9 +166,8 @@ export class RdDActorCreatureSheet extends ActorSheet {
|
||||
this.actor.remiseANeuf();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
@ -174,9 +179,7 @@ export class RdDActorCreatureSheet extends ActorSheet {
|
||||
return position;
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
_updateObject(event, formData) {
|
||||
// Update the Actor
|
||||
|
@ -56,7 +56,7 @@ export class RdDActorHumanoideSheet extends ActorSheet {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDrop(event) {
|
||||
RdDUtility.processItemDropEvent(this, event);
|
||||
await RdDUtility.processItemDropEvent(this.actor, event);
|
||||
super._onDrop(event);
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
/* -------------------------------------------- */
|
||||
getData() {
|
||||
let data = super.getData();
|
||||
if ( data.actor.type == 'creature' || data.actor.type == 'humanoide') return data; // Shortcut
|
||||
|
||||
data.data.editCaracComp = this.options.editCaracComp;
|
||||
data.data.montrerCompetencesNiveauBase = this.options.montrerCompetencesNiveauBase;
|
||||
@ -137,25 +138,10 @@ export class RdDActorSheet extends ActorSheet {
|
||||
return data;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async processItemDropEvent( 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;
|
||||
if ( this.objetVersConteneur[objetId] != dropID && objetId != dropID) {
|
||||
if ( this.actor.validateConteneur(objetId, dropID) && this.actor.testConteneurCapacite(objetId, dropID) ) {
|
||||
await this.actor.enleverDeConteneur(objetId, this.objetVersConteneur[objetId]);
|
||||
await this.actor.ajouterAConteneur(objetId, dropID);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.actor.computeEncombrementTotalEtMalusArmure();
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onDrop(event) {
|
||||
await this.processItemDropEvent(event);
|
||||
await RdDUtility.processItemDropEvent(this, event);
|
||||
super._onDrop(event);
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,13 @@ export class RdDActor extends Actor {
|
||||
// Make separate methods for each Actor type (character, npc, etc.) to keep
|
||||
// things organized.
|
||||
if (actorData.type === 'personnage') this._prepareCharacterData(actorData);
|
||||
if (actorData.type === 'creature') this.computeEtatGeneral(actorData);
|
||||
if (actorData.type === 'creature') this.prepareCreatureData(actorData);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareCreatureData(actorData) {
|
||||
this.computeEncombrementTotalEtMalusArmure();
|
||||
this.computeEtatGeneral();
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -755,7 +761,7 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async computeEncombrementTotalEtMalusArmure( ) {
|
||||
let encTotal = 0;
|
||||
let malusArmureData = duplicate(this.data.data.attributs.malusarmure);
|
||||
let malusArmureData = (this.data.data.attributs.malusarmure) ? duplicate(this.data.data.attributs.malusarmure) : {};
|
||||
let newMalusArmure = 0;
|
||||
for (const item of this.data.items) {
|
||||
if ( item.type == 'armure' && item.data.equipe ) { // Armure équipée, intégration du malus armure total
|
||||
@ -775,9 +781,10 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
// Mise à jour valeur totale et états
|
||||
this.encTotal = encTotal;
|
||||
console.log("Enco total : ", this.encTotal);
|
||||
this.detectSurEncombrement();
|
||||
// Mise à jour éventuelle du malus armure
|
||||
if (newMalusArmure != malusArmureData.value) {
|
||||
if (this.data.data.attributs.malusarmure && newMalusArmure != malusArmureData.value) {
|
||||
malusArmureData.value = newMalusArmure;
|
||||
await this.update( {"data.attributs.malusarmure": malusArmureData } );
|
||||
}
|
||||
|
@ -276,6 +276,22 @@ export class RdDUtility {
|
||||
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);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async processItemDropEvent( actorSheet, 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;
|
||||
if ( actorSheet.objetVersConteneur[objetId] != dropID && objetId != dropID) {
|
||||
if ( actorSheet.actor.validateConteneur(objetId, dropID) && actorSheet.actor.testConteneurCapacite(objetId, dropID) ) {
|
||||
await actorSheet.actor.enleverDeConteneur(objetId, actorSheet.objetVersConteneur[objetId]);
|
||||
await actorSheet.actor.ajouterAConteneur(objetId, dropID);
|
||||
}
|
||||
}
|
||||
}
|
||||
actorSheet.actor.computeEncombrementTotalEtMalusArmure();
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static buildArbreDeConteneur( actorSheet, data ) {
|
||||
actorSheet.objetVersConteneur = {}; // Table de hash locale pour recupération rapide du conteneur parent (si existant)
|
||||
|
Reference in New Issue
Block a user