replayRemain

This commit is contained in:
oc 2019-04-23 01:12:43 +08:00
parent e5903b2e6e
commit e52a8378e8
3 changed files with 63 additions and 45 deletions

View File

@ -245,6 +245,7 @@ actions.prototype._sys_keyDown_lockControl = function (keyCode) {
case 'save':
case 'load':
case 'replayLoad':
case 'replayRemain':
this._keyDownSL(keyCode);
break;
case 'shop':
@ -346,6 +347,7 @@ actions.prototype._sys_keyUp_lockControl = function (keyCode, altKey) {
case 'save':
case 'load':
case 'replayLoad':
case 'replayRemain':
this._keyUpSL(keyCode);
break;
case 'keyBoard':
@ -612,6 +614,7 @@ actions.prototype._sys_onclick_lockControl = function (x, y) {
case 'save':
case 'load':
case 'replayLoad':
case 'replayRemain':
this._clickSL(x, y);
break;
case 'confirmBox':
@ -756,7 +759,7 @@ actions.prototype._sys_longClick_lockControl = function (x, y) {
}
}
// 长按SL快速翻页
if (["save","load","replayLoad"].indexOf(core.status.event.id) >= 0) {
if (["save","load","replayLoad","replayRemain"].indexOf(core.status.event.id) >= 0) {
if ([this.HSIZE-2, this.HSIZE-3, this.HSIZE+2, this.HSIZE+3].indexOf(x) >= 0 && y == this.LAST) {
this._clickSL(x, y);
return true;
@ -1657,6 +1660,7 @@ actions.prototype._clickSL = function (x, y) {
if (core.events.recoverEvents(core.status.event.interval))
return;
core.ui.closePanel();
delete core.status.tempRoute;
if (!core.isPlaying())
core.showStartAnimate(true);
return;
@ -2031,12 +2035,10 @@ actions.prototype._clickSyncSave = function (x, y) {
case 4:
return this._clickSyncSave_replay();
case 5:
return this._clickSyncSave_download();
case 6:
core.status.event.selection = 0;
core.ui.drawStorageRemove();
break;
case 7:
case 6:
core.status.event.selection = 4;
core.ui.drawSettings();
break;
@ -2065,19 +2067,6 @@ actions.prototype._clickSyncSave_replay = function () {
}
}
actions.prototype._clickSyncSave_download = function () {
if (core.hasFlag('debug')) {
core.drawText("\t[系统提示]调试模式下无法下载录像");
return;
}
core.download(core.firstData.name + "_" + core.formatDate2() + ".h5route", JSON.stringify({
'name': core.firstData.name,
'hard': core.status.hard,
'seed': core.getFlag('__seed__'),
'route': core.encodeRoute(core.status.route)
}));
}
////// 同步存档界面时,放开某个键的操作 //////
actions.prototype._keyUpSyncSave = function (keycode) {
if (keycode == 27 || keycode == 88) {
@ -2264,9 +2253,10 @@ actions.prototype._clickReplay = function (x, y) {
switch (selection) {
case 0: return this._clickReplay_fromBeginning();
case 1: return this._clickReplay_fromLoad();
case 2: return core.chooseReplayFile();
case 3: return this._clickReplay_download();
case 4: return core.ui.closePanel();
case 2: return this._clickReplay_continueReplay();
case 3: return core.chooseReplayFile();
case 4: return this._clickReplay_download();
case 5: return core.ui.closePanel();
}
}
}
@ -2285,6 +2275,21 @@ actions.prototype._clickReplay_fromLoad = function () {
core.ui.drawSLPanel(10 * page + offset);
}
actions.prototype._clickReplay_continueReplay = function () {
core.closePanel();
core.drawText([
"\t[接续播放录像]该功能允许你播放\r[yellow]两个存档之间的录像\r常常用于\r[yellow]区域优化\r。\n" +
"例如,有若干个区,已经全部通关;之后重打一区并进行了优化,则可以对剩余区域直接播放录像而无需全部重打。",
"\t[步骤1]请选择一个存档。\n\r[yellow]该存档的坐标必须和当前勇士坐标完全相同。\r\n将尝试从此处开始回放。",
], function () {
core.status.event.id = 'replayRemain';
core.lockControl();
var saveIndex = core.saves.saveIndex;
var page = parseInt((saveIndex - 1) / 5), offset = saveIndex - 5 * page;
core.ui.drawSLPanel(10 * page + offset);
});
}
actions.prototype._clickReplay_download = function () {
if (core.hasFlag('debug')) return core.drawText("\t[系统提示]调试模式下无法下载录像");
core.download(core.firstData.name + "_" + core.formatDate2() + ".h5route", JSON.stringify({

View File

@ -1059,7 +1059,7 @@ control.prototype.startReplay = function (list) {
core.status.replay.pausing=false;
core.status.replay.speed=1.0;
core.status.replay.toReplay = core.clone(list);
core.status.replay.totalList = core.clone(list);
core.status.replay.totalList = core.status.route.concat(list);
core.status.replay.steps = 0;
core.status.replay.save = [];
core.updateStatusBar();
@ -1512,8 +1512,9 @@ control.prototype.checkAutosave = function () {
control.prototype.doSL = function (id, type) {
switch (type) {
case 'save': this._doSL_save(id); break;
case 'load': this._doSL_load(id); break;
case 'replayLoad': this._doSL_replayLoad(id); break;
case 'load': this._doSL_load(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;
}
}
@ -1542,14 +1543,14 @@ control.prototype._doSL_save = function (id) {
return;
}
control.prototype._doSL_load = function (id) {
control.prototype._doSL_load = function (id, callback) {
if (id == 'autoSave' && core.saves.autosave.data != null) {
this._doSL_load_afterGet(id, core.clone(core.saves.autosave.data));
callback(id, core.clone(core.saves.autosave.data))
}
else {
core.getLocalForage(id=='autoSave'?id:"save"+id, null, function(data) {
if (id == 'autoSave') core.saves.autosave.data = core.clone(data);
core.control._doSL_load_afterGet(id, data);
callback(id, data);
}, function(err) {
main.log(err);
alert("无效的存档");
@ -1579,22 +1580,6 @@ control.prototype._doSL_load_afterGet = function (id, data) {
core.setLocalStorage('saveIndex', core.saves.saveIndex);
}
});
}
control.prototype._doSL_replayLoad = function (id) {
if (id == 'autoSave' && core.saves.autosave.data != null) {
this._doSL_replayLoad_afterGet(core.clone(core.saves.autosave.data));
}
else{
core.getLocalForage(id=='autoSave'?id:"save"+id, null, function(data) {
if (id == 'autoSave') core.saves.autosave.data = core.clone(data);
core.control._doSL_replayLoad_afterGet(id, data);
}, function(err) {
main.log(err);
alert("无效的存档");
})
}
}
control.prototype._doSL_replayLoad_afterGet = function (id, data) {
@ -1613,6 +1598,34 @@ control.prototype._doSL_replayLoad_afterGet = function (id, data) {
}
control.prototype._doSL_replayRemain_afterGet = function (id, data) {
if (!data) return core.drawTip("无效的存档");
var route = core.decodeRoute(data.route);
if (core.status.tempRoute) {
var remainRoute = core.subarray(route, core.status.tempRoute);
if (remainRoute == null)
return alert("无法接续播放录像!\n该存档必须是前一个选择的存档的后续内容。");
delete core.status.tempRoute;
core.ui.closePanel();
core.startReplay(remainRoute);
core.drawTip("接续播放录像");
return;
}
else if (data.floorId != core.status.floorId || data.hero.loc.x != core.getHeroLoc('x') || data.hero.loc.y != core.getHeroLoc('y'))
return alert("楼层或坐标不一致!");
core.status.tempRoute = route;
core.ui.closePanel();
core.drawText("\t[步骤2]请选择第二个存档。\n\r[yellow]该存档必须是前一个存档的后续。\r\n将尝试播放到此存档。", function () {
core.status.event.id = 'replayRemain';
core.lockControl();
var saveIndex = core.saves.saveIndex;
var page = parseInt((saveIndex - 1) / 5), offset = saveIndex - 5 * page;
core.ui.drawSLPanel(10 * page + offset);
});
}
////// 同步存档到服务器 //////
control.prototype.syncSave = function (type) {
core.ui.drawWaiting("正在同步,请稍后...");

View File

@ -1227,7 +1227,7 @@ ui.prototype.drawQuickShop = function () {
ui.prototype.drawSyncSave = function () {
core.status.event.id = 'syncSave';
this.drawChoices(null, [
"同步存档到服务器", "从服务器加载存档", "存档至本地文件", "从本地文件读档", "回放当前录像", "下载当前录像", "清空本地存档", "返回主菜单"
"同步存档到服务器", "从服务器加载存档", "存档至本地文件", "从本地文件读档", "回放和下载录像", "清空本地存档", "返回主菜单"
]);
}
@ -1259,7 +1259,7 @@ ui.prototype.drawReplay = function () {
core.lockControl();
core.status.event.id = 'replay';
this.drawChoices(null, [
"从头回放录像", "从存档开始回放", "选择录像文件", "下载当前录像", "返回游戏"
"从头回放录像", "从存档开始回放", "接续播放剩余录像", "选择录像文件", "下载当前录像", "返回游戏"
]);
}
@ -2204,7 +2204,7 @@ ui.prototype._drawSLPanel_drawRecords = function (n) {
var page = core.status.event.data.page;
var offset = core.status.event.data.offset;
var u = Math.floor(this.PIXEL/6), size = Math.floor(this.PIXEL/3-20);
var name=core.status.event.id=='save'?"存档":core.status.event.id=='load'?"读档":core.status.event.id=='replayLoad'?"回放":"";
var name=core.status.event.id=='save'?"存档":core.status.event.id=='load'?"读档":"回放";
for (var i = 0; i < (n||6); i++){
var data = core.status.event.ui[i];