diff --git a/docs/api.md b/docs/api.md index fb1b8546..c0814730 100644 --- a/docs/api.md +++ b/docs/api.md @@ -141,9 +141,11 @@ core.js实际上是所有API的入口(路由),核心API的实现在其他 core.nextX() 获得勇士面向的下一个位置的x坐标 + core.nextY() 获得勇士面向的下一个位置的y坐标 + core.openDoor(id, x, y, needKey, callback) [异步] 尝试开门操作。id为目标点的ID,x和y为坐标,needKey表示是否需要使用钥匙,callback为开门完毕后的回调函数。 例如:core.openDoor('yellowDoor', 10, 3, false, function() {console.log("1")}) @@ -274,10 +276,6 @@ core.restart() [异步] 返回标题界面。 -core.updateFg() -更新全地图显伤。包括怪物显伤、临界显示和领域显伤等。 - - ========== core.actions.XXX 和游戏控制相关的函数 ========== actions.js主要用来进行用户交互行为的处理。 所有用户行为,比如按键、点击、滑动等等,都会被此文件接收并进行操作。 @@ -393,6 +391,7 @@ floorId为楼层ID,可忽略为当前楼层。 core.maps.canMoveDirectly(destX, destY) 判断当前能否瞬间移动到某个点。 +该函数如果返回0则不可瞬间移动,大于0则可以瞬间移动,且返回值是跨度(即少走的步数)。 core.maps.removeBlockById(index, floorId) diff --git a/libs/maps.js b/libs/maps.js index 0d03cef5..a0a00e78 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -255,16 +255,18 @@ maps.prototype.canMoveHero = function(x,y,direction,floorId) { ////// 能否瞬间移动 ////// maps.prototype.canMoveDirectly = function (destX,destY) { - if (!core.flags.enableMoveDirectly) return -1; + + // 不可瞬间移动请返回0 + if (!core.flags.enableMoveDirectly) return 0; // 中毒状态:不能 - if (core.hasFlag('poison')) return -1; + if (core.hasFlag('poison')) return 0; var fromX = core.getHeroLoc('x'), fromY = core.getHeroLoc('y'); - if (fromX==destX&&fromY==destY) return -1; + if (fromX==destX&&fromY==destY) return 0; if (core.getBlock(fromX,fromY)!=null||core.status.checkBlock.damage[13*fromX+fromY]>0) - return -1; + return 0; // BFS var visited=[], queue=[]; @@ -283,7 +285,7 @@ maps.prototype.canMoveDirectly = function (destX,destY) { queue.push(13*nx+ny); } } - return -1; + return 0; } maps.prototype.drawBlock = function (block, animate, dx, dy) {