Save while replaying
This commit is contained in:
parent
75e5c8538e
commit
276144a1df
11
README.md
11
README.md
@ -63,6 +63,17 @@ HTML5 canvas制作的魔塔样板,支持全平台游戏!
|
|||||||
|
|
||||||
## 更新说明
|
## 更新说明
|
||||||
|
|
||||||
|
### 2018.4.25 V2.1.1
|
||||||
|
|
||||||
|
* [x] 新增事件:改变勇士行走图
|
||||||
|
* [x] 楼传器落点设置
|
||||||
|
* [x] 录像回放从任意存档点开始
|
||||||
|
* [x] 录像过程中允许存档
|
||||||
|
* [x] 血网显伤
|
||||||
|
* [x] 重置当前楼层地图core.resetMap()
|
||||||
|
* [x] 支持部分楼层不允许浏览地图
|
||||||
|
* [x] 其他细节优化
|
||||||
|
|
||||||
### 2018.4.19 V2.1
|
### 2018.4.19 V2.1
|
||||||
|
|
||||||
* [x] 编辑器添加新建和删除按钮;地图自动保存
|
* [x] 编辑器添加新建和删除按钮;地图自动保存
|
||||||
|
|||||||
@ -13,7 +13,7 @@ actions.prototype.init = function () {
|
|||||||
|
|
||||||
////// 按下某个键时 //////
|
////// 按下某个键时 //////
|
||||||
actions.prototype.onkeyDown = function (e) {
|
actions.prototype.onkeyDown = function (e) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
if (!core.isset(core.status.holdingKeys))core.status.holdingKeys=[];
|
if (!core.isset(core.status.holdingKeys))core.status.holdingKeys=[];
|
||||||
var isArrow={37:true,38:true,39:true,40:true}[e.keyCode]
|
var isArrow={37:true,38:true,39:true,40:true}[e.keyCode]
|
||||||
if(isArrow && !core.status.lockControl){
|
if(isArrow && !core.status.lockControl){
|
||||||
@ -31,7 +31,7 @@ actions.prototype.onkeyDown = function (e) {
|
|||||||
|
|
||||||
////// 放开某个键时 //////
|
////// 放开某个键时 //////
|
||||||
actions.prototype.onkeyUp = function(e) {
|
actions.prototype.onkeyUp = function(e) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) {
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') {
|
||||||
if (e.keyCode==27) // ESCAPE
|
if (e.keyCode==27) // ESCAPE
|
||||||
core.stopReplay();
|
core.stopReplay();
|
||||||
else if (e.keyCode==90) // Z
|
else if (e.keyCode==90) // Z
|
||||||
@ -42,6 +42,8 @@ actions.prototype.onkeyUp = function(e) {
|
|||||||
core.triggerReplay();
|
core.triggerReplay();
|
||||||
else if (e.keyCode==65) // A
|
else if (e.keyCode==65) // A
|
||||||
core.rewindReplay();
|
core.rewindReplay();
|
||||||
|
else if (e.keyCode==83)
|
||||||
|
core.saveReplay();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +64,7 @@ actions.prototype.onkeyUp = function(e) {
|
|||||||
|
|
||||||
////// 按住某个键时 //////
|
////// 按住某个键时 //////
|
||||||
actions.prototype.pressKey = function (keyCode) {
|
actions.prototype.pressKey = function (keyCode) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
if (keyCode === core.status.holdingKeys.slice(-1)[0]) {
|
if (keyCode === core.status.holdingKeys.slice(-1)[0]) {
|
||||||
this.keyDown(keyCode);
|
this.keyDown(keyCode);
|
||||||
window.setTimeout(function(){core.pressKey(keyCode);},30);
|
window.setTimeout(function(){core.pressKey(keyCode);},30);
|
||||||
@ -71,7 +73,7 @@ actions.prototype.pressKey = function (keyCode) {
|
|||||||
|
|
||||||
////// 根据按下键的code来执行一系列操作 //////
|
////// 根据按下键的code来执行一系列操作 //////
|
||||||
actions.prototype.keyDown = function(keyCode) {
|
actions.prototype.keyDown = function(keyCode) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
if (core.status.lockControl) {
|
if (core.status.lockControl) {
|
||||||
// Ctrl跳过对话
|
// Ctrl跳过对话
|
||||||
if (keyCode==17) {
|
if (keyCode==17) {
|
||||||
@ -191,7 +193,7 @@ actions.prototype.keyDown = function(keyCode) {
|
|||||||
|
|
||||||
////// 根据放开键的code来执行一系列操作 //////
|
////// 根据放开键的code来执行一系列操作 //////
|
||||||
actions.prototype.keyUp = function(keyCode, fromReplay) {
|
actions.prototype.keyUp = function(keyCode, fromReplay) {
|
||||||
if (!fromReplay&&core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (!fromReplay&&core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
|
|
||||||
if (core.status.lockControl) {
|
if (core.status.lockControl) {
|
||||||
core.status.holdingKeys = [];
|
core.status.holdingKeys = [];
|
||||||
@ -397,7 +399,7 @@ actions.prototype.keyUp = function(keyCode, fromReplay) {
|
|||||||
|
|
||||||
////// 点击(触摸)事件按下时 //////
|
////// 点击(触摸)事件按下时 //////
|
||||||
actions.prototype.ondown = function (x ,y) {
|
actions.prototype.ondown = function (x ,y) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
if (!core.status.played || core.status.lockControl) {
|
if (!core.status.played || core.status.lockControl) {
|
||||||
this.onclick(x, y, []);
|
this.onclick(x, y, []);
|
||||||
if (core.timeout.onDownTimeout==null) {
|
if (core.timeout.onDownTimeout==null) {
|
||||||
@ -425,7 +427,7 @@ actions.prototype.ondown = function (x ,y) {
|
|||||||
|
|
||||||
////// 当在触摸屏上滑动时 //////
|
////// 当在触摸屏上滑动时 //////
|
||||||
actions.prototype.onmove = function (x ,y) {
|
actions.prototype.onmove = function (x ,y) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
// if (core.status.holdingPath==0){return;}
|
// if (core.status.holdingPath==0){return;}
|
||||||
//core.status.mouseOutCheck =1;
|
//core.status.mouseOutCheck =1;
|
||||||
var pos={'x':x,'y':y};
|
var pos={'x':x,'y':y};
|
||||||
@ -449,7 +451,7 @@ actions.prototype.onmove = function (x ,y) {
|
|||||||
|
|
||||||
////// 当点击(触摸)事件放开时 //////
|
////// 当点击(触摸)事件放开时 //////
|
||||||
actions.prototype.onup = function () {
|
actions.prototype.onup = function () {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
|
|
||||||
clearTimeout(core.timeout.onDownTimeout);
|
clearTimeout(core.timeout.onDownTimeout);
|
||||||
core.timeout.onDownTimeout = null;
|
core.timeout.onDownTimeout = null;
|
||||||
@ -515,7 +517,7 @@ actions.prototype.getClickLoc = function (x, y) {
|
|||||||
|
|
||||||
////// 具体点击屏幕上(x,y)点时,执行的操作 //////
|
////// 具体点击屏幕上(x,y)点时,执行的操作 //////
|
||||||
actions.prototype.onclick = function (x, y, stepPostfix) {
|
actions.prototype.onclick = function (x, y, stepPostfix) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
// console.log("Click: (" + x + "," + y + ")");
|
// console.log("Click: (" + x + "," + y + ")");
|
||||||
|
|
||||||
stepPostfix=stepPostfix||[];
|
stepPostfix=stepPostfix||[];
|
||||||
@ -669,7 +671,7 @@ actions.prototype.onclick = function (x, y, stepPostfix) {
|
|||||||
|
|
||||||
////// 滑动鼠标滚轮时的操作 //////
|
////// 滑动鼠标滚轮时的操作 //////
|
||||||
actions.prototype.onmousewheel = function (direct) {
|
actions.prototype.onmousewheel = function (direct) {
|
||||||
if (core.isset(core.status.replay)&&core.status.replay.replaying) return;
|
if (core.isset(core.status.replay)&&core.status.replay.replaying&&core.status.event.id!='save') return;
|
||||||
// 向下滚动是 -1 ,向上是 1
|
// 向下滚动是 -1 ,向上是 1
|
||||||
|
|
||||||
// 楼层飞行器
|
// 楼层飞行器
|
||||||
|
|||||||
@ -291,10 +291,6 @@ control.prototype.restart = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////// 寻路算法 & 人物行走控制 ///////////////////////
|
/////////////////////// 寻路算法 & 人物行走控制 ///////////////////////
|
||||||
|
|
||||||
////// 清除自动寻路路线 //////
|
////// 清除自动寻路路线 //////
|
||||||
@ -1404,12 +1400,14 @@ control.prototype.startReplay = function (list) {
|
|||||||
|
|
||||||
////// 更改播放状态 //////
|
////// 更改播放状态 //////
|
||||||
control.prototype.triggerReplay = function () {
|
control.prototype.triggerReplay = function () {
|
||||||
|
if (core.status.event.id=='save') return;
|
||||||
if (core.status.replay.pausing) this.resumeReplay();
|
if (core.status.replay.pausing) this.resumeReplay();
|
||||||
else this.pauseReplay();
|
else this.pauseReplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 暂停播放 //////
|
////// 暂停播放 //////
|
||||||
control.prototype.pauseReplay = function () {
|
control.prototype.pauseReplay = function () {
|
||||||
|
if (core.status.event.id=='save') return;
|
||||||
if (!core.status.replay.replaying) return;
|
if (!core.status.replay.replaying) return;
|
||||||
core.status.replay.pausing = true;
|
core.status.replay.pausing = true;
|
||||||
core.updateStatusBar();
|
core.updateStatusBar();
|
||||||
@ -1418,6 +1416,7 @@ control.prototype.pauseReplay = function () {
|
|||||||
|
|
||||||
////// 恢复播放 //////
|
////// 恢复播放 //////
|
||||||
control.prototype.resumeReplay = function () {
|
control.prototype.resumeReplay = function () {
|
||||||
|
if (core.status.event.id=='save') return;
|
||||||
if (!core.status.replay.replaying) return;
|
if (!core.status.replay.replaying) return;
|
||||||
core.status.replay.pausing = false;
|
core.status.replay.pausing = false;
|
||||||
core.updateStatusBar();
|
core.updateStatusBar();
|
||||||
@ -1427,6 +1426,7 @@ control.prototype.resumeReplay = function () {
|
|||||||
|
|
||||||
////// 加速播放 //////
|
////// 加速播放 //////
|
||||||
control.prototype.speedUpReplay = function () {
|
control.prototype.speedUpReplay = function () {
|
||||||
|
if (core.status.event.id=='save') return;
|
||||||
if (!core.status.replay.replaying) return;
|
if (!core.status.replay.replaying) return;
|
||||||
core.status.replay.speed = parseInt(10*core.status.replay.speed + 1)/10;
|
core.status.replay.speed = parseInt(10*core.status.replay.speed + 1)/10;
|
||||||
if (core.status.replay.speed>3.0) core.status.replay.speed=3.0;
|
if (core.status.replay.speed>3.0) core.status.replay.speed=3.0;
|
||||||
@ -1435,6 +1435,7 @@ control.prototype.speedUpReplay = function () {
|
|||||||
|
|
||||||
////// 减速播放 //////
|
////// 减速播放 //////
|
||||||
control.prototype.speedDownReplay = function () {
|
control.prototype.speedDownReplay = function () {
|
||||||
|
if (core.status.event.id=='save') return;
|
||||||
if (!core.status.replay.replaying) return;
|
if (!core.status.replay.replaying) return;
|
||||||
core.status.replay.speed = parseInt(10*core.status.replay.speed - 1)/10;
|
core.status.replay.speed = parseInt(10*core.status.replay.speed - 1)/10;
|
||||||
if (core.status.replay.speed<0.3) core.status.replay.speed=0.3;
|
if (core.status.replay.speed<0.3) core.status.replay.speed=0.3;
|
||||||
@ -1443,6 +1444,7 @@ control.prototype.speedDownReplay = function () {
|
|||||||
|
|
||||||
////// 停止播放 //////
|
////// 停止播放 //////
|
||||||
control.prototype.stopReplay = function () {
|
control.prototype.stopReplay = function () {
|
||||||
|
if (core.status.event.id=='save') return;
|
||||||
if (!core.status.replay.replaying) return;
|
if (!core.status.replay.replaying) return;
|
||||||
core.status.replay.toReplay = [];
|
core.status.replay.toReplay = [];
|
||||||
core.status.replay.totalList = [];
|
core.status.replay.totalList = [];
|
||||||
@ -1457,6 +1459,7 @@ control.prototype.stopReplay = function () {
|
|||||||
|
|
||||||
////// 回退 //////
|
////// 回退 //////
|
||||||
control.prototype.rewindReplay = function () {
|
control.prototype.rewindReplay = function () {
|
||||||
|
if (core.status.event.id=='save') return;
|
||||||
if (!core.status.replay.replaying) return;
|
if (!core.status.replay.replaying) return;
|
||||||
if (!core.status.replay.pausing) {
|
if (!core.status.replay.pausing) {
|
||||||
core.drawTip("请先暂停录像");
|
core.drawTip("请先暂停录像");
|
||||||
@ -1487,7 +1490,26 @@ control.prototype.rewindReplay = function () {
|
|||||||
core.updateStatusBar();
|
core.updateStatusBar();
|
||||||
core.drawTip("成功回退到上一个节点");
|
core.drawTip("成功回退到上一个节点");
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 回放时存档 //////
|
||||||
|
control.prototype.saveReplay = 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='save';
|
||||||
|
var saveIndex = core.status.saveIndex;
|
||||||
|
var page=parseInt((saveIndex-1)/5), offset=saveIndex-5*page;
|
||||||
|
|
||||||
|
core.ui.drawSLPanel(10*page+offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 回放 //////
|
////// 回放 //////
|
||||||
@ -2241,7 +2263,8 @@ control.prototype.updateStatusBar = function () {
|
|||||||
core.statusBar.image.load.src = core.statusBar.icons.speedUp.src;
|
core.statusBar.image.load.src = core.statusBar.icons.speedUp.src;
|
||||||
core.statusBar.image.load.style.opacity = 1;
|
core.statusBar.image.load.style.opacity = 1;
|
||||||
|
|
||||||
core.statusBar.image.settings.style.opacity = 0;
|
core.statusBar.image.settings.src = core.statusBar.icons.save.src;
|
||||||
|
core.statusBar.image.settings.style.opacity = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@ -923,6 +923,11 @@ core.prototype.stopReplay = function () {
|
|||||||
core.control.stopReplay();
|
core.control.stopReplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////// 回放时存档 //////
|
||||||
|
core.prototype.saveReplay = function () {
|
||||||
|
core.control.saveReplay();
|
||||||
|
}
|
||||||
|
|
||||||
////// 回放 //////
|
////// 回放 //////
|
||||||
core.prototype.replay = function () {
|
core.prototype.replay = function () {
|
||||||
core.control.replay();
|
core.control.replay();
|
||||||
|
|||||||
@ -1616,11 +1616,9 @@ ui.prototype.drawSLPanel = function(index) {
|
|||||||
}
|
}
|
||||||
this.drawPagination(page+1, 30);
|
this.drawPagination(page+1, 30);
|
||||||
|
|
||||||
if (core.status.event.id == 'save' || core.status.event.id=='load') {
|
if (core.status.event.selection)
|
||||||
if (core.status.event.selection)
|
core.setFillStyle('ui', '#FF6A6A');
|
||||||
core.setFillStyle('ui', '#FF6A6A');
|
core.fillText('ui', '删除模式', 48, 403);
|
||||||
core.fillText('ui', '删除模式', 48, 403);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
main.js
6
main.js
@ -433,6 +433,12 @@ main.statusBar.image.load.onclick = function () {
|
|||||||
|
|
||||||
////// 点击状态栏中的系统菜单时 //////
|
////// 点击状态栏中的系统菜单时 //////
|
||||||
main.statusBar.image.settings.onclick = function () {
|
main.statusBar.image.settings.onclick = function () {
|
||||||
|
|
||||||
|
if (core.isset(core.status.replay) && core.status.replay.replaying) {
|
||||||
|
core.saveReplay();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (main.core.isPlaying())
|
if (main.core.isPlaying())
|
||||||
main.core.openSettings(true);
|
main.core.openSettings(true);
|
||||||
}
|
}
|
||||||
|
|||||||
16
更新说明.txt
16
更新说明.txt
@ -1,14 +1,14 @@
|
|||||||
HTML5魔塔样板V2.1.1
|
HTML5魔塔样板V2.1.1
|
||||||
|
|
||||||
改变勇士行走图 √
|
新增事件:改变勇士行走图
|
||||||
楼传器落点设置 √
|
楼传器落点设置
|
||||||
录像回放从任意存档点开始 √
|
录像回放从任意存档点开始
|
||||||
录像过程中允许存档
|
录像过程中允许存档
|
||||||
血网显伤 √
|
血网显伤
|
||||||
重置当前楼层地图core.resetMap() √
|
重置当前楼层地图core.resetMap()
|
||||||
部分楼层不允许浏览地图 √
|
支持部分楼层不允许浏览地图
|
||||||
其他细节优化 √
|
其他细节优化
|
||||||
r
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
HTML5魔塔样板V2.1
|
HTML5魔塔样板V2.1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user