From 67c9c6cd21926b425db3f466ac6db7d9fa598054 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 22 Jul 2018 14:20:58 +0800 Subject: [PATCH] fix move directly bug --- libs/control.js | 8 +++++--- libs/maps.js | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/libs/control.js b/libs/control.js index e1ca95d2..9830011a 100644 --- a/libs/control.js +++ b/libs/control.js @@ -377,7 +377,7 @@ control.prototype.clearContinueAutomaticRoute = function () { ////// 瞬间移动 ////// control.prototype.moveDirectly = function (destX, destY) { var ignoreSteps = core.canMoveDirectly(destX, destY); - if (ignoreSteps>0) { + if (ignoreSteps>=0) { core.clearMap('hero', 0, 0, 416, 416); var lastDirection = core.status.route[core.status.route.length-1]; if (['left', 'right', 'up', 'down'].indexOf(lastDirection)>=0) @@ -395,6 +395,8 @@ control.prototype.moveDirectly = function (destX, destY) { ////// 尝试瞬间移动 ////// control.prototype.tryMoveDirectly = function (destX, destY) { + if (Math.abs(core.getHeroLoc('x')-destX)+Math.abs(core.getHeroLoc('y')-destY)<=1) + return false; var testMove = function (dx, dy, dir) { if (dx<0 || dx>12 || dy<0 || dy>12) return false; if (core.control.moveDirectly(dx, dy)) { @@ -403,8 +405,8 @@ control.prototype.tryMoveDirectly = function (destX, destY) { } return false; } - return !(!testMove(destX,destY) && !testMove(destX-1, destY, "right") && !testMove(destX,destY-1,"down") - && !testMove(destX,destY+1,"up") && !testMove(destX+1,destY,"left")); + return testMove(destX,destY) || testMove(destX-1, destY, "right") || testMove(destX,destY-1,"down") + || testMove(destX,destY+1,"up") || testMove(destX+1,destY,"left"); } ////// 设置自动寻路路线 ////// diff --git a/libs/maps.js b/libs/maps.js index fb29d1e6..624d68d2 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -257,17 +257,17 @@ maps.prototype.canMoveHero = function(x,y,direction,floorId) { maps.prototype.canMoveDirectly = function (destX,destY) { // 不可瞬间移动请返回0 - if (!core.flags.enableMoveDirectly) return 0; + if (!core.flags.enableMoveDirectly) return -1; // 中毒状态:不能 - if (core.hasFlag('poison')) return 0; + if (core.hasFlag('poison')) return -1; var fromX = core.getHeroLoc('x'), fromY = core.getHeroLoc('y'); if (fromX==destX&&fromY==destY) return 0; // 可以无视起点事件 // if (core.getBlock(fromX,fromY)!=null||core.status.checkBlock.damage[13*fromX+fromY]>0) - // return 0; + // return -1; // BFS var visited=[], queue=[]; @@ -286,7 +286,7 @@ maps.prototype.canMoveDirectly = function (destX,destY) { queue.push(13*nx+ny); } } - return 0; + return -1; } maps.prototype.drawBlock = function (block, animate, dx, dy) {