diff --git a/libs/control.js b/libs/control.js index b0f58cdf..8ef614ae 100644 --- a/libs/control.js +++ b/libs/control.js @@ -1604,9 +1604,15 @@ control.prototype.autosave = function (removeLast) { if (core.saves.autosave.data == null) { core.saves.autosave.data = []; } - core.saves.autosave.data.push(core.saveData()); + core.saves.autosave.data.splice(core.saves.autosave.now,0,core.saveData()); + core.saves.autosave.now=core.saves.autosave.now+1; if (core.saves.autosave.data.length > core.saves.autosave.max) { - core.saves.autosave.data.shift(); + if(core.saves.autosave.now= 1) { - core.setLocalForage("autoSave", autosave.data[autosave.data.length - 1]); + core.setLocalForage("autoSave", autosave.data[autosave.now-1]); } } @@ -1634,6 +1640,7 @@ control.prototype.doSL = function (id, type) { switch (type) { case 'save': this._doSL_save(id); break; case 'load': this._doSL_load(id, this._doSL_load_afterGet); break; + case 'reload': this._doSL_reload(id, this._doSL_load_afterGet); break; case 'replayLoad': this._doSL_load(id, this._doSL_replayLoad_afterGet); break; case 'replayRemain': this._doSL_load(id, this._doSL_replayRemain_afterGet); break; } @@ -1666,9 +1673,17 @@ control.prototype._doSL_save = function (id) { control.prototype._doSL_load = function (id, callback) { if (id == 'autoSave' && core.saves.autosave.data != null) { - var data = core.saves.autosave.data.pop(); - if (core.saves.autosave.data.length == 0) { - core.saves.autosave.data.push(core.clone(data)); + core.saves.autosave.now=core.saves.autosave.now-1; + var data = core.saves.autosave.data.splice(core.saves.autosave.now,1)[0]; + if(core.status.played && !core.status.gameOver) + { + core.control.autosave(0); + core.saves.autosave.now=core.saves.autosave.now-1; + } + if(core.saves.autosave.now==0) + { + core.saves.autosave.data.unshift(core.clone(data)); + core.saves.autosave.now=core.saves.autosave.now+1; } callback(id, data); } @@ -1679,6 +1694,7 @@ control.prototype._doSL_load = function (id, callback) { if (!(core.saves.autosave.data instanceof Array)) { core.saves.autosave.data = [core.saves.autosave.data]; } + core.saves.autosave.now=core.saves.autosave.data.length; return core.control._doSL_load(id, callback); } callback(id, data); @@ -1690,6 +1706,15 @@ control.prototype._doSL_load = function (id, callback) { return; } +control.prototype._doSL_reload = function (id, callback) { + if (core.saves.autosave.data!=null&&core.saves.autosave.now < core.saves.autosave.data.length) { + var data = core.saves.autosave.data.splice(core.saves.autosave.now,1)[0]; + core.control.autosave(0); + callback(id, data); + } + return; +} + control.prototype._doSL_load_afterGet = function (id, data) { if (!data) return alert("无效的存档"); var _replay = function () { @@ -1868,6 +1893,7 @@ control.prototype.getSave = function (index, callback) { if (!(core.saves.autosave.data instanceof Array)) { core.saves.autosave.data = [core.saves.autosave.data]; } + core.saves.autosave.now=core.saves.autosave.data.length; } callback(core.saves.autosave.data); }, function(err) { diff --git a/libs/core.js b/libs/core.js index f02616ac..f3097a12 100644 --- a/libs/core.js +++ b/libs/core.js @@ -107,7 +107,8 @@ function core() { "time": 0, "updated": false, "storage": true, // 是否把自动存档写入文件a - "max": 10, // 自动存档最大回退数 + "max": 20, // 自动存档最大回退数 + "now": 0, }, "favorite": [], "favoriteName": {} diff --git a/libs/ui.js b/libs/ui.js index 3a51a6a4..8c11dd0b 100644 --- a/libs/ui.js +++ b/libs/ui.js @@ -2504,7 +2504,7 @@ ui.prototype._drawSLPanel_loadSave = function(page, callback) { core.getSaves(ids, function (data) { for (var i = 1; i < ids.length; ++i) core.status.event.ui[i] = data[i]; - core.status.event.ui[0] = data[0] == null ? null : data[0][data[0].length-1]; + core.status.event.ui[0] = data[0] == null ? null : data[0][core.saves.autosave.now-1]; callback(); }); } diff --git a/project/functions.js b/project/functions.js index c93f4dd3..372c3e2a 100644 --- a/project/functions.js +++ b/project/functions.js @@ -120,8 +120,10 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = // ---------- 此时还没有进行切换,当前floorId还是原来的 ---------- // var currentId = core.status.floorId || null; // 获得当前的floorId,可能为null - if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {}); - if (currentId != null) core.getFlag("__leaveLoc__")[currentId] = core.status.hero.loc; + if (!fromLoad) { + if (!core.hasFlag("__leaveLoc__")) core.setFlag("__leaveLoc__", {}); + if (currentId != null) core.getFlag("__leaveLoc__")[currentId] = core.status.hero.loc; + } // 可以对currentId进行判定,比如删除某些自定义图层等 // if (currentId == 'MT0') { @@ -809,6 +811,9 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = case 65: // A:读取自动存档(回退) core.doSL("autoSave", "load"); break; + case 87: // W:撤销回退 + core.doSL("autoSave", "reload"); + break; case 83: // S:存档 core.save(true); break; @@ -905,19 +910,25 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = } } break; + case 53: // 5:读取自动存档(回退),方便手机版操作 + core.doSL("autoSave", "load"); + break; + case 54: // 6:撤销回退,方便手机版操作 + core.doSL("autoSave", "reload"); + break; case 55: // 快捷键7:绑定为轻按,方便手机版操作 core.getNextItem(); break; case 118: // F7:开启debug模式 core.debug(); break; - case 87: // W:开启技能“二倍斩” + /*case 87: // W:开启技能“二倍斩” // 检测是否拥有“二倍斩”这个技能道具 if (core.hasItem('skill1')) { core.status.route.push("key:87"); core.useItem('skill1', true); } - break; + break;*/ // 在这里可以任意新增或编辑已有的快捷键内容 /* case 0: // 使用该按键的keyCode diff --git a/回退优化说明.txt b/回退优化说明.txt new file mode 100644 index 00000000..ab7b147b --- /dev/null +++ b/回退优化说明.txt @@ -0,0 +1,3 @@ +原先的版本中A键可以回到之前的自动存档状态 +现在A和W可以在最近的若干状态来回滚动 +为了方便手机 默认56两个数字键是同样功能 可在按键设置中自己修改 \ No newline at end of file