From 2461373ae33115e15f05a523b0431fdd0c542f5b Mon Sep 17 00:00:00 2001 From: YouWei Zhao Date: Sat, 23 Dec 2017 12:45:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AF=B9=E7=A7=B0=E9=A3=9E?= =?UTF-8?q?=E8=A1=8C=E5=99=A8=E7=9A=84=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/core.js | 62 ++++++++++++++++++++++++++++++++++-------- libs/events.js | 7 ++++- libs/floors/sample0.js | 4 +-- 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/libs/core.js b/libs/core.js index aed539ee..00c5430f 100644 --- a/libs/core.js +++ b/libs/core.js @@ -76,6 +76,9 @@ function core() { 'mouseOutCheck': 1, 'moveStepBeforeStop': [], + // 勇士状态;中心对称飞行器 + 'usingCenterFly':false, + // event事件 'savePage': null, 'shops': {}, @@ -373,7 +376,8 @@ core.prototype.onkeyUp = function(e) { break; } } - core.stopHero(); + //core.stopHero(); + core.keyUp(e.keyCode); } else { core.keyUp(e.keyCode); } @@ -424,6 +428,31 @@ core.prototype.keyDown = function(keyCode) { case 40: core.moveHero('down'); break; + case 51: // 快捷键3:飞 + // 因为加入了两次的检测机制,从keydown转移到keyup,同时保证位置信息正确,但以下情况会触发作图的bug: + // 在鼠标的路线移动中使用飞,绿块会滞后一格,显示的位置不对,同时也不会倍以下的代码清除 + if (core.status.heroStop && core.hasItem('centerFly')) { + if (core.status.usingCenterFly) { + if (core.canUseItem('centerFly')) { + core.useItem('centerFly'); + core.clearMap('ui', core.getHeroLoc('x')*32,core.getHeroLoc('y')*32,32,32); + + } + else { + core.drawTip('当前不能使用中心对称飞行器'); + core.clearMap('ui', (12-core.getHeroLoc('x'))*32,(12-core.getHeroLoc('y'))*32,32,32); + } + core.status.usingCenterFly = false; + } else { + core.status.usingCenterFly = true; + core.fillRect('ui',(12-core.getHeroLoc('x'))*32,(12-core.getHeroLoc('y'))*32,32,32,'rgba(0,255,0,0.5)'); + } + } + break; + } + if (core.status.usingCenterFly && keyCode!=51) { + core.clearMap('ui', (12-core.getHeroLoc('x'))*32,(12-core.getHeroLoc('y'))*32,32,32); + core.status.usingCenterFly= false; } } @@ -547,17 +576,9 @@ core.prototype.keyUp = function(keyCode) { } } break; - case 51: // 快捷键3:飞 - if (core.status.heroStop && core.hasItem('centerFly')) { - if (core.canUseItem('centerFly')) { - core.useItem('centerFly'); - } - else { - core.drawTip('当前不能使用中心对称飞行器'); - } - } - break; + } + core.stopHero(); } @@ -649,6 +670,25 @@ core.prototype.onclick = function (x, y, stepPostfix) { // 非游戏屏幕内 if (x<0 || y<0 || x>12 || y>12) return; + // 中心对称飞行器 + if (core.status.usingCenterFly) { + if (x!=12-core.getHeroLoc('x') || y!=12-core.getHeroLoc('y')) { + core.clearMap('ui', (12-core.getHeroLoc('x'))*32,(12-core.getHeroLoc('y'))*32,32,32); + } else { + if (core.canUseItem('centerFly')) { + core.useItem('centerFly'); + core.clearMap('ui', core.getHeroLoc('x')*32,core.getHeroLoc('y')*32,32,32); + + return; + } + else { + core.drawTip('当前不能使用中心对称飞行器'); + core.clearMap('ui', (12-core.getHeroLoc('x'))*32,(12-core.getHeroLoc('y'))*32,32,32); + } + } + core.status.usingCenterFly= false; + } + // 寻路 if (!core.status.lockControl) { core.setAutomaticRoute(x, y, stepPostfix); diff --git a/libs/events.js b/libs/events.js index fac9f95e..f8af663c 100644 --- a/libs/events.js +++ b/libs/events.js @@ -457,8 +457,13 @@ events.prototype.useItem = function(itemId) { core.useFly(false); return; } + if (itemId=='centerFly') { + core.status.usingCenterFly= true; + core.fillRect('ui',(12-core.getHeroLoc('x'))*32,(12-core.getHeroLoc('y'))*32,32,32,'rgba(0,255,0,0.5)'); + return; + } - if (core.canUseItem(itemId)) core.useItem(itemId); + if (core.canUseItem(itemId))core.useItem(itemId); else core.drawTip("当前无法使用"+core.material.items[itemId].name); } diff --git a/libs/floors/sample0.js b/libs/floors/sample0.js index 5f296247..0b730b25 100644 --- a/libs/floors/sample0.js +++ b/libs/floors/sample0.js @@ -15,8 +15,8 @@ main.floors.sample0 = { [216, 247, 256, 235, 248, 6, 0, 3, 49, 50, 51, 52, 38], [6, 6, 125, 6, 6, 6, 0, 1, 45, 46, 47, 48, 37], [224, 254, 212, 232, 204, 5, 0, 1, 31, 32, 34, 33, 36], - [201, 205, 217, 215, 207, 5, 0, 1, 27, 28, 29, 30, 35], - [5, 5, 125, 5, 5, 5, 0, 1, 21, 22, 23, 24, 25], + [201, 205, 217, 215, 207, 5, 50, 1, 27, 28, 29, 30, 35], + [5, 5, 125, 5, 5, 5, 50, 1, 21, 22, 23, 24, 25], [0, 0, 0, 0, 0, 0, 45, 1, 1, 1, 121, 1, 1], [4, 4, 126, 4, 4, 4, 0, 0, 0, 0, 0, 85, 124], [87, 11, 12, 13, 14, 4, 4, 2, 2, 2, 122, 2, 2],