phaser4-rex-plugins
Version:
64 lines (57 loc) • 1.98 kB
JavaScript
import GetValue from '../../../utils/object/GetValue.js';
var MoveToTile = function (tileX, tileY, direction) {
var miniBoard = this.parent;
var mainBoard = miniBoard.mainBoard;
// Not on a mainBoard
if (mainBoard == null) {
this.lastMoveResult = false;
return this;
}
if ((tileX != null) && (typeof (tileX) !== 'number')) {
var config = tileX;
tileX = GetValue(config, 'x', undefined);
tileY = GetValue(config, 'y', undefined);
direction = GetValue(config, 'direction', undefined);
}
myTileXY.x = miniBoard.tileX;
myTileXY.y = miniBoard.tileY;
if ((direction !== undefined) &&
(tileX == null) || (tileY == null)) {
// Get neighbor tile position if direction is not undefined
var out = mainBoard.getNeighborTileXY(myTileXY, direction, true);
if (out !== null) {
tileX = out.x;
tileY = out.y;
} else {
tileX = null;
tileY = null;
}
}
// invalid tile position
if ((tileX == null) || (tileY == null)) {
this.lastMoveResult = false;
return this;
}
if (direction === undefined) {
targetTileXY.x = tileX;
targetTileXY.y = tileY;
direction = board.getNeighborTileDirection(myTileXY, targetTileXY);
}
if (!this.canMoveTo(tileX, tileY, direction)) {
this.lastMoveResult = false;
return this;
}
this.destinationTileX = tileX;
this.destinationTileY = tileY;
this.destinationDirection = direction;
// Not support wrap mode
var out = mainBoard.tileXYToWorldXY(tileX, tileY, true);
this.moveToTask.moveTo(out.x, out.y);
miniBoard.putOnMainBoard(mainBoard, tileX, tileY, false);
this.isRunning = true;
this.lastMoveResult = true;
return this;
}
var myTileXY = {};
var targetTileXY = {};
export default MoveToTile;