From bf9a9675ed964eca5e21168a97ff37bf7c27705c Mon Sep 17 00:00:00 2001 From: oc Date: Sat, 5 May 2018 17:50:21 +0800 Subject: [PATCH] View book while replaying --- libs/actions.js | 23 +++++++++++++---------- libs/control.js | 33 +++++++++++++++++++++------------ libs/core.js | 4 ++++ main.js | 6 ++++++ 更新说明.txt | 2 +- 5 files changed, 45 insertions(+), 23 deletions(-) diff --git a/libs/actions.js b/libs/actions.js index 85324e71..0f8598c8 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -13,7 +13,7 @@ actions.prototype.init = function () { ////// 按下某个键时 ////// actions.prototype.onkeyDown = function (e) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; if (!core.isset(core.status.holdingKeys))core.status.holdingKeys=[]; var isArrow={37:true,38:true,39:true,40:true}[e.keyCode] if(isArrow && !core.status.lockControl){ @@ -31,7 +31,7 @@ actions.prototype.onkeyDown = function (e) { ////// 放开某个键时 ////// actions.prototype.onkeyUp = function(e) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') { + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) { if (e.keyCode==27) // ESCAPE core.stopReplay(); else if (e.keyCode==90) // Z @@ -44,6 +44,8 @@ actions.prototype.onkeyUp = function(e) { core.rewindReplay(); else if (e.keyCode==83) core.saveReplay(); + else if (e.keyCode==67) + core.bookReplay(); return; } @@ -64,7 +66,7 @@ actions.prototype.onkeyUp = function(e) { ////// 按住某个键时 ////// actions.prototype.pressKey = function (keyCode) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; if (keyCode === core.status.holdingKeys.slice(-1)[0]) { this.keyDown(keyCode); window.setTimeout(function(){core.pressKey(keyCode);},30); @@ -73,7 +75,7 @@ actions.prototype.pressKey = function (keyCode) { ////// 根据按下键的code来执行一系列操作 ////// actions.prototype.keyDown = function(keyCode) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; if (core.status.lockControl) { // Ctrl跳过对话 if (keyCode==17) { @@ -193,7 +195,8 @@ actions.prototype.keyDown = function(keyCode) { ////// 根据放开键的code来执行一系列操作 ////// actions.prototype.keyUp = function(keyCode, fromReplay) { - if (!fromReplay&&core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (!fromReplay&&core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) + return; if (core.status.lockControl) { core.status.holdingKeys = []; @@ -399,7 +402,7 @@ actions.prototype.keyUp = function(keyCode, fromReplay) { ////// 点击(触摸)事件按下时 ////// actions.prototype.ondown = function (x ,y) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; if (!core.status.played || core.status.lockControl) { this.onclick(x, y, []); if (core.timeout.onDownTimeout==null) { @@ -427,7 +430,7 @@ actions.prototype.ondown = function (x ,y) { ////// 当在触摸屏上滑动时 ////// actions.prototype.onmove = function (x ,y) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; // if (core.status.holdingPath==0){return;} //core.status.mouseOutCheck =1; var pos={'x':x,'y':y}; @@ -451,7 +454,7 @@ actions.prototype.onmove = function (x ,y) { ////// 当点击(触摸)事件放开时 ////// actions.prototype.onup = function () { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; clearTimeout(core.timeout.onDownTimeout); core.timeout.onDownTimeout = null; @@ -517,7 +520,7 @@ actions.prototype.getClickLoc = function (x, y) { ////// 具体点击屏幕上(x,y)点时,执行的操作 ////// actions.prototype.onclick = function (x, y, stepPostfix) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; // console.log("Click: (" + x + "," + y + ")"); stepPostfix=stepPostfix||[]; @@ -671,7 +674,7 @@ actions.prototype.onclick = function (x, y, stepPostfix) { ////// 滑动鼠标滚轮时的操作 ////// actions.prototype.onmousewheel = function (direct) { - if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return; + if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save'&&(core.status.event.id||"").indexOf('book')!=0) return; // 向下滚动是 -1 ,向上是 1 // 楼层飞行器 diff --git a/libs/control.js b/libs/control.js index 0073f330..a0707716 100644 --- a/libs/control.js +++ b/libs/control.js @@ -1433,7 +1433,7 @@ control.prototype.resumeReplay = function () { control.prototype.speedUpReplay = function () { if (core.status.event.id=='save') return; if (!core.status.replay.replaying) return; - var toAdd = core.status.replay.speed>2?2:1; + var toAdd = core.status.replay.speed>=3?3:core.status.replay.speed>=2?2:1; core.status.replay.speed = parseInt(10*core.status.replay.speed + toAdd)/10; if (core.status.replay.speed>6.0) core.status.replay.speed=6.0; core.drawTip("x"+core.status.replay.speed+"倍"); @@ -1443,7 +1443,7 @@ control.prototype.speedUpReplay = function () { control.prototype.speedDownReplay = function () { if (core.status.event.id=='save') return; if (!core.status.replay.replaying) return; - var toAdd = core.status.replay.speed>2?2:1; + var toAdd = core.status.replay.speed>3?3:core.status.replay.speed>2?2:1; core.status.replay.speed = parseInt(10*core.status.replay.speed - toAdd)/10; if (core.status.replay.speed<0.3) core.status.replay.speed=0.3; core.drawTip("x"+core.status.replay.speed+"倍"); @@ -1519,6 +1519,23 @@ control.prototype.saveReplay = function () { core.ui.drawSLPanel(10*page+offset); } +////// 回放时查看怪物手册 ////// +control.prototype.bookReplay = function () { + if (!core.status.replay.replaying) return; + if (!core.status.replay.pausing) { + core.drawTip("请先暂停录像"); + return; + } + if (core.status.replay.animate || core.isset(core.status.event.id)) { + core.drawTip("请等待当前事件的处理结束"); + return; + } + + core.lockControl(); + core.status.event.id='book'; + core.useItem('book'); +} + ////// 回放 ////// control.prototype.replay = function () { @@ -2264,18 +2281,14 @@ control.prototype.updateStatusBar = function () { core.statusBar.image.fly.style.opacity = 1; core.statusBar.image.toolbox.src = core.statusBar.icons.rewind.src; - core.statusBar.image.toolbox.style.opacity = 1; - core.statusBar.image.shop.style.opacity = 0; + core.statusBar.image.shop.src = core.statusBar.icons.book.src; core.statusBar.image.save.src = core.statusBar.icons.speedDown.src; - core.statusBar.image.save.style.opacity = 1; core.statusBar.image.load.src = core.statusBar.icons.speedUp.src; - core.statusBar.image.load.style.opacity = 1; core.statusBar.image.settings.src = core.statusBar.icons.save.src; - core.statusBar.image.settings.style.opacity = 1; } else { @@ -2286,18 +2299,14 @@ control.prototype.updateStatusBar = function () { core.statusBar.image.fly.style.opacity = core.hasItem('fly')?1:0.3; core.statusBar.image.toolbox.src = core.statusBar.icons.toolbox.src; - core.statusBar.image.toolbox.style.opacity = 1; - core.statusBar.image.shop.style.opacity = 1; + core.statusBar.image.shop.src = core.statusBar.icons.shop.src; core.statusBar.image.save.src = core.statusBar.icons.save.src; - core.statusBar.image.save.style.opacity = 1; core.statusBar.image.load.src = core.statusBar.icons.load.src; - core.statusBar.image.load.style.opacity = 1; core.statusBar.image.settings.src = core.statusBar.icons.settings.src; - core.statusBar.image.settings.style.opacity = 1; } core.updateFg(); diff --git a/libs/core.js b/libs/core.js index 2370e57b..01c18446 100644 --- a/libs/core.js +++ b/libs/core.js @@ -932,6 +932,10 @@ core.prototype.saveReplay = function () { core.control.saveReplay(); } +core.prototype.bookReplay = function () { + core.control.bookReplay(); +} + ////// 回放 ////// core.prototype.replay = function () { core.control.replay(); diff --git a/main.js b/main.js index 6cd095c0..8ea26334 100644 --- a/main.js +++ b/main.js @@ -403,6 +403,12 @@ main.statusBar.image.toolbox.onclick = function () { ////// 点击状态栏中的快捷商店时 ////// main.statusBar.image.shop.onclick = function () { + + if (core.isset(core.status.replay) && core.status.replay.replaying) { + core.bookReplay(); + return; + } + if (main.core.isPlaying()) main.core.openQuickShop(true); } diff --git a/更新说明.txt b/更新说明.txt index 13d3611f..d7a7caa9 100644 --- a/更新说明.txt +++ b/更新说明.txt @@ -11,7 +11,7 @@ 作弊处理 状态栏绘制 六倍速播放 √ -播放视频时可以C键查看怪物手册 +播放视频时可以C键查看怪物手册 √ 修复标题文字太长导致无法开始游戏的问题 √ 新增纯新手简易造塔流程 √ 部分效果和性能的优化 √