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 'save':
case 'load': case 'load':
case 'replayLoad': case 'replayLoad':
case 'replayRemain':
this._keyDownSL(keyCode); this._keyDownSL(keyCode);
break; break;
case 'shop': case 'shop':
@ -346,6 +347,7 @@ actions.prototype._sys_keyUp_lockControl = function (keyCode, altKey) {
case 'save': case 'save':
case 'load': case 'load':
case 'replayLoad': case 'replayLoad':
case 'replayRemain':
this._keyUpSL(keyCode); this._keyUpSL(keyCode);
break; break;
case 'keyBoard': case 'keyBoard':
@ -612,6 +614,7 @@ actions.prototype._sys_onclick_lockControl = function (x, y) {
case 'save': case 'save':
case 'load': case 'load':
case 'replayLoad': case 'replayLoad':
case 'replayRemain':
this._clickSL(x, y); this._clickSL(x, y);
break; break;
case 'confirmBox': case 'confirmBox':
@ -756,7 +759,7 @@ actions.prototype._sys_longClick_lockControl = function (x, y) {
} }
} }
// 长按SL快速翻页 // 长按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) { if ([this.HSIZE-2, this.HSIZE-3, this.HSIZE+2, this.HSIZE+3].indexOf(x) >= 0 && y == this.LAST) {
this._clickSL(x, y); this._clickSL(x, y);
return true; return true;
@ -1657,6 +1660,7 @@ actions.prototype._clickSL = function (x, y) {
if (core.events.recoverEvents(core.status.event.interval)) if (core.events.recoverEvents(core.status.event.interval))
return; return;
core.ui.closePanel(); core.ui.closePanel();
delete core.status.tempRoute;
if (!core.isPlaying()) if (!core.isPlaying())
core.showStartAnimate(true); core.showStartAnimate(true);
return; return;
@ -2031,12 +2035,10 @@ actions.prototype._clickSyncSave = function (x, y) {
case 4: case 4:
return this._clickSyncSave_replay(); return this._clickSyncSave_replay();
case 5: case 5:
return this._clickSyncSave_download();
case 6:
core.status.event.selection = 0; core.status.event.selection = 0;
core.ui.drawStorageRemove(); core.ui.drawStorageRemove();
break; break;
case 7: case 6:
core.status.event.selection = 4; core.status.event.selection = 4;
core.ui.drawSettings(); core.ui.drawSettings();
break; 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) { actions.prototype._keyUpSyncSave = function (keycode) {
if (keycode == 27 || keycode == 88) { if (keycode == 27 || keycode == 88) {
@ -2264,9 +2253,10 @@ actions.prototype._clickReplay = function (x, y) {
switch (selection) { switch (selection) {
case 0: return this._clickReplay_fromBeginning(); case 0: return this._clickReplay_fromBeginning();
case 1: return this._clickReplay_fromLoad(); case 1: return this._clickReplay_fromLoad();
case 2: return core.chooseReplayFile(); case 2: return this._clickReplay_continueReplay();
case 3: return this._clickReplay_download(); case 3: return core.chooseReplayFile();
case 4: return core.ui.closePanel(); 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); 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 () { actions.prototype._clickReplay_download = function () {
if (core.hasFlag('debug')) return core.drawText("\t[系统提示]调试模式下无法下载录像"); if (core.hasFlag('debug')) return core.drawText("\t[系统提示]调试模式下无法下载录像");
core.download(core.firstData.name + "_" + core.formatDate2() + ".h5route", JSON.stringify({ 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.pausing=false;
core.status.replay.speed=1.0; core.status.replay.speed=1.0;
core.status.replay.toReplay = core.clone(list); 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.steps = 0;
core.status.replay.save = []; core.status.replay.save = [];
core.updateStatusBar(); core.updateStatusBar();
@ -1512,8 +1512,9 @@ control.prototype.checkAutosave = function () {
control.prototype.doSL = function (id, type) { control.prototype.doSL = function (id, type) {
switch (type) { switch (type) {
case 'save': this._doSL_save(id); break; case 'save': this._doSL_save(id); break;
case 'load': this._doSL_load(id); break; case 'load': this._doSL_load(id, this._doSL_load_afterGet); break;
case 'replayLoad': this._doSL_replayLoad(id); 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; return;
} }
control.prototype._doSL_load = function (id) { control.prototype._doSL_load = function (id, callback) {
if (id == 'autoSave' && core.saves.autosave.data != null) { 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 { else {
core.getLocalForage(id=='autoSave'?id:"save"+id, null, function(data) { core.getLocalForage(id=='autoSave'?id:"save"+id, null, function(data) {
if (id == 'autoSave') core.saves.autosave.data = core.clone(data); if (id == 'autoSave') core.saves.autosave.data = core.clone(data);
core.control._doSL_load_afterGet(id, data); callback(id, data);
}, function(err) { }, function(err) {
main.log(err); main.log(err);
alert("无效的存档"); alert("无效的存档");
@ -1579,22 +1580,6 @@ control.prototype._doSL_load_afterGet = function (id, data) {
core.setLocalStorage('saveIndex', core.saves.saveIndex); 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) { 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) { control.prototype.syncSave = function (type) {
core.ui.drawWaiting("正在同步,请稍后..."); core.ui.drawWaiting("正在同步,请稍后...");

View File

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