Fix déplacement après réinsertion

On pouvait clicker sur les cases, jusqu'à tomber sur une case
adjacente pour trouver son demi-rêve...
This commit is contained in:
Vincent Vandemeulebrouck 2022-03-30 01:18:34 +02:00
parent f41369a751
commit 31d97439d4

View File

@ -62,7 +62,6 @@ export class RdDTMRDialog extends Dialog {
this.pixiApp = new PIXI.Application({ width: 720, height: 860 }); this.pixiApp = new PIXI.Application({ width: 720, height: 860 });
this.pixiTMR = new PixiTMR(this, this.pixiApp); this.pixiTMR = new PixiTMR(this, this.pixiApp);
this.cacheTMR = (game.user.isGM) ? false : actor.isTMRCache();
this.callbacksOnAnimate = []; this.callbacksOnAnimate = [];
if (!this.viewOnly) { if (!this.viewOnly) {
@ -73,6 +72,10 @@ export class RdDTMRDialog extends Dialog {
this.pixiTMR.load((loader, resources) => this.createPixiSprites()); this.pixiTMR.load((loader, resources) => this.createPixiSprites());
} }
isDemiReveCache() {
return !game.user.isGM && this.actor.isTMRCache();
}
/* -------------------------------------------- */ /* -------------------------------------------- */
loadCasesSpeciales() { loadCasesSpeciales() {
this.casesSpeciales = this.actor.data.items.filter(item => Draconique.isCaseTMR(item)); this.casesSpeciales = this.actor.data.items.filter(item => Draconique.isCaseTMR(item));
@ -153,10 +156,7 @@ export class RdDTMRDialog extends Dialog {
_updateDemiReve() { _updateDemiReve() {
this.notifierResonanceSigneDraconique(this._getActorCoord()); this.notifierResonanceSigneDraconique(this._getActorCoord());
this._setTokenPosition(this.demiReve);
if (!this.cacheTMR) {
this._setTokenPosition(this.demiReve);
}
} }
_getActorCoord() { _getActorCoord() {
@ -252,7 +252,7 @@ export class RdDTMRDialog extends Dialog {
ptsreve.innerHTML = actorData.data.reve.reve.value; ptsreve.innerHTML = actorData.data.reve.reve.value;
let tmrpos = document.getElementById("tmr-pos"); let tmrpos = document.getElementById("tmr-pos");
if (this.cacheTMR) { if (this.isDemiReveCache()) {
tmrpos.innerHTML = '?? (' + TMRUtility.getTMRType(coord) + ')'; tmrpos.innerHTML = '?? (' + TMRUtility.getTMRType(coord) + ')';
} else { } else {
tmrpos.innerHTML = coord + " (" + TMRUtility.getTMRLabel(coord) + ")"; tmrpos.innerHTML = coord + " (" + TMRUtility.getTMRLabel(coord) + ")";
@ -542,7 +542,9 @@ export class RdDTMRDialog extends Dialog {
if (rencontre) { if (rencontre) {
return rencontre; return rencontre;
} }
let locTMR = (this.cacheTMR) ? Misc.upperFirst(tmr.type) + " ??" : tmr.label + " (" + tmr.coord + ")"; let locTMR = (this.isDemiReveCache()
? Misc.upperFirst(tmr.type) + " ??"
: tmr.label + " (" + tmr.coord + ")");
let myRoll = await RdDDice.rollTotal("1dt"); let myRoll = await RdDDice.rollTotal("1dt");
if (TMRUtility.isForceRencontre() || myRoll == 7) { if (TMRUtility.isForceRencontre() || myRoll == 7) {
@ -872,6 +874,14 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
async _onClickTMRPos(clickOddq) { async _onClickTMRPos(clickOddq) {
if (this.isDemiReveCache()) {
ui.notifications.error(`Vous ne connaissez plus votre position dans les TMR.
Vous devez utiliser les boutons de direction pour vous déplacer.
Une fois que vous aurez retrouvé votre demi-rêve, demandez au gardien de vérifier et rendre les TMR visibles.
`);
return;
}
let currentOddq = TMRUtility.coordTMRToOddq(this._getActorCoord()); let currentOddq = TMRUtility.coordTMRToOddq(this._getActorCoord());
console.log("deplacerDemiReve >>>>", currentOddq, clickOddq); console.log("deplacerDemiReve >>>>", currentOddq, clickOddq);
@ -888,7 +898,7 @@ export class RdDTMRDialog extends Dialog {
} else if (deplacementType == 'messager') { // Dans ce cas, ouverture du lancement de sort sur la case visée } else if (deplacementType == 'messager') { // Dans ce cas, ouverture du lancement de sort sur la case visée
await this._messagerDemiReve(targetCoord); await this._messagerDemiReve(targetCoord);
} else { } else {
ui.notifications.error("Vous ne pouvez vous déplacer que sur des cases adjacentes à votre position ou valides dans le cas d'une rencontre"); ui.notifications.error("Vous ne pouvez pas vous déplacer que sur des cases adjacentes à votre position ou valides dans le cas d'une rencontre");
console.log("STATUS :", this.rencontreState, this.currentRencontre); console.log("STATUS :", this.rencontreState, this.currentRencontre);
} }
this.checkQuitterTMR(); this.checkQuitterTMR();
@ -923,7 +933,6 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
externalRefresh(tmrData) { externalRefresh(tmrData) {
this.cacheTMR = (game.user.isGM) ? false : this.actor.isTMRCache();
this.createPixiSprites(); this.createPixiSprites();
this.forceDemiRevePositionView(); this.forceDemiRevePositionView();
this.updateValuesDisplay(); this.updateValuesDisplay();
@ -1018,9 +1027,10 @@ export class RdDTMRDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
_setTokenPosition(token) { _setTokenPosition(token) {
if (!this.cacheTMR) { if (this.isDemiReveCache() && this.demiReve === token ) {
this.pixiTMR.setPosition(token.sprite, TMRUtility.coordTMRToOddq(token.coordTMR())); return;
} }
this.pixiTMR.setPosition(token.sprite, TMRUtility.coordTMRToOddq(token.coordTMR()));
} }
/* -------------------------------------------- */ /* -------------------------------------------- */