Single save
This commit is contained in:
parent
777e296179
commit
deb465ed5c
178
libs/core.js
178
libs/core.js
@ -220,7 +220,9 @@ core.prototype.init = function (dom, statusBar, canvas, images, pngs, bgms, soun
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {}
|
catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
alert("不是有效的JSON文件!");
|
alert("不是有效的JSON文件!");
|
||||||
|
|
||||||
if (core.isset(core.platform.errorCallback))
|
if (core.isset(core.platform.errorCallback))
|
||||||
@ -701,6 +703,14 @@ core.prototype.keyDown = function(keyCode) {
|
|||||||
core.events.keyDownSyncSave(keyCode);
|
core.events.keyDownSyncSave(keyCode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (core.status.event.id=='syncSelect') {
|
||||||
|
core.events.keyDownSyncSelect(keyCode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (core.status.event.id=='localSaveSelect') {
|
||||||
|
core.events.keyDownLocalSaveSelect(keyCode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(!core.status.played) {
|
if(!core.status.played) {
|
||||||
@ -816,6 +826,14 @@ core.prototype.keyUp = function(keyCode) {
|
|||||||
core.events.keyUpSyncSave(keyCode);
|
core.events.keyUpSyncSave(keyCode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (core.status.event.id=='syncSelect') {
|
||||||
|
core.events.keyUpSyncSelect(keyCode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (core.status.event.id=='localSaveSelect') {
|
||||||
|
core.events.keyUpLocalSaveSelect(keyCode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1152,6 +1170,16 @@ core.prototype.onclick = function (x, y, stepPostfix) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (core.status.event.id == 'syncSelect') {
|
||||||
|
core.events.clickSyncSelect(x,y);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (core.status.event.id == 'localSaveSelect') {
|
||||||
|
core.events.clickLocalSaveSelect(x,y);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 滑动鼠标滚轮时的操作 //////
|
////// 滑动鼠标滚轮时的操作 //////
|
||||||
@ -1283,8 +1311,6 @@ core.prototype.setAutomaticRoute = function (destX, destY, stepPostfix) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
moveStep=moveStep.concat(stepPostfix);
|
moveStep=moveStep.concat(stepPostfix);
|
||||||
//core.status.automaticRoutingTemp.destX = destX;
|
|
||||||
//core.status.automaticRoutingTemp.destY = destY;
|
|
||||||
core.status.automaticRoute.destX=destX;
|
core.status.automaticRoute.destX=destX;
|
||||||
core.status.automaticRoute.destY=destY;
|
core.status.automaticRoute.destY=destY;
|
||||||
core.canvas.ui.save();
|
core.canvas.ui.save();
|
||||||
@ -3918,6 +3944,151 @@ core.prototype.doSL = function (id, type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////// 同步存档到服务器 //////
|
||||||
|
core.prototype.syncSave = function (type) {
|
||||||
|
var saves=null;
|
||||||
|
// data
|
||||||
|
if (type=='all') {
|
||||||
|
saves=[];
|
||||||
|
for (var i=1;i<=150;i++) {
|
||||||
|
var data = core.getLocalStorage("save"+i, null);
|
||||||
|
if (core.isset(data)) {
|
||||||
|
saves.push(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (var i=150;i>=1;i--) {
|
||||||
|
saves=core.getLocalStorage("save"+i, null);
|
||||||
|
if (core.isset(saves)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!core.isset(saves)) {
|
||||||
|
core.drawText("没有要同步的存档");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
core.ui.drawWaiting("正在同步,请稍后...");
|
||||||
|
|
||||||
|
var formData = new FormData();
|
||||||
|
formData.append('type', 'save');
|
||||||
|
formData.append('name', core.firstData.name);
|
||||||
|
var save_text = JSON.stringify(saves);
|
||||||
|
formData.append('data', save_text);
|
||||||
|
|
||||||
|
// send
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("POST", "/games/sync.php");
|
||||||
|
xhr.onload = function(e) {
|
||||||
|
if (xhr.status==200) {
|
||||||
|
// console.log("同步成功。");
|
||||||
|
var response = JSON.parse(xhr.response);
|
||||||
|
if (response.code<0) {
|
||||||
|
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:"+response.msg);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.drawText("同步成功!\n\n您的存档编号: "+response.code+"\n您的存档密码: "+response.msg+"\n\n请牢记以上两个信息(如截图等),在从服务器\n同步存档时使用。")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:HTTP "+xhr.status);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xhr.ontimeout = function() {
|
||||||
|
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:Timeout");
|
||||||
|
}
|
||||||
|
xhr.onerror = function() {
|
||||||
|
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:XHR Error");
|
||||||
|
}
|
||||||
|
xhr.send(formData);
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 从服务器加载存档 //////
|
||||||
|
core.prototype.syncLoad = function () {
|
||||||
|
var id = prompt("请输入存档编号:");
|
||||||
|
if (id==null || id=="") {
|
||||||
|
core.ui.drawSyncSave(); return;
|
||||||
|
}
|
||||||
|
var password = prompt("请输入存档密码:");
|
||||||
|
if (password==null || password=="") {
|
||||||
|
core.ui.drawSyncSave(); return;
|
||||||
|
}
|
||||||
|
core.ui.drawWaiting("正在同步,请稍后...");
|
||||||
|
|
||||||
|
var formData = new FormData();
|
||||||
|
formData.append('type', 'load');
|
||||||
|
formData.append('name', core.firstData.name);
|
||||||
|
formData.append('id', id);
|
||||||
|
formData.append('password', password);
|
||||||
|
|
||||||
|
// send
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("POST", "/games/sync.php");
|
||||||
|
xhr.onload = function(e) {
|
||||||
|
if (xhr.status==200) {
|
||||||
|
// console.log("同步成功。");
|
||||||
|
var response = JSON.parse(xhr.response);
|
||||||
|
switch (response.code) {
|
||||||
|
case 0:
|
||||||
|
// 成功
|
||||||
|
var data=JSON.parse(response.msg);
|
||||||
|
// console.log(data);
|
||||||
|
|
||||||
|
if (data instanceof Array) {
|
||||||
|
core.status.event.selection=1;
|
||||||
|
core.ui.drawConfirmBox("所有本地存档都将被覆盖,确认?", function () {
|
||||||
|
for (var i=1;i<=150;i++) {
|
||||||
|
if (i<=data.length) {
|
||||||
|
core.setLocalStorage("save"+i, data[i-1]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.removeLocalStorage("save"+i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
core.drawText("同步成功!\n你的本地所有存档均已被覆盖。");
|
||||||
|
}, function () {
|
||||||
|
core.status.event.selection=0;
|
||||||
|
core.ui.drawSyncSave();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 只覆盖单存档
|
||||||
|
var index=150;
|
||||||
|
for (var i=150;i>=1;i--) {
|
||||||
|
if (core.getLocalStorage("save"+i, null)==null)
|
||||||
|
index=i;
|
||||||
|
else break;
|
||||||
|
}
|
||||||
|
core.setLocalStorage("save"+index, data);
|
||||||
|
core.drawText("同步成功!\n单存档已覆盖至存档"+index);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case -1:
|
||||||
|
core.drawText("出错啦!\n存档编号"+id+"不存在!");
|
||||||
|
break;
|
||||||
|
case -2:
|
||||||
|
core.drawText("出错啦!\n存档密码错误!");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
core.drawText("出错啦!\n无法从服务器同步存档。\n错误原因:"+response.msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
core.drawText("出错啦!\n无法从服务器同步存档。\n错误原因:HTTP "+xhr.status);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
xhr.ontimeout = function() {
|
||||||
|
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:Timeout");
|
||||||
|
}
|
||||||
|
xhr.onerror = function() {
|
||||||
|
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:XHR Error");
|
||||||
|
}
|
||||||
|
xhr.send(formData);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
|
||||||
////// 存档同步操作 //////
|
////// 存档同步操作 //////
|
||||||
core.prototype.syncSave = function(type) {
|
core.prototype.syncSave = function(type) {
|
||||||
if (type=='save') {
|
if (type=='save') {
|
||||||
@ -4039,6 +4210,7 @@ core.prototype.syncSave = function(type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
////// 存档到本地 //////
|
////// 存档到本地 //////
|
||||||
core.prototype.saveData = function(dataId) {
|
core.prototype.saveData = function(dataId) {
|
||||||
|
|||||||
153
libs/events.js
153
libs/events.js
@ -1686,12 +1686,14 @@ events.prototype.clickSyncSave = function (x,y) {
|
|||||||
switch (selection) {
|
switch (selection) {
|
||||||
case 0:
|
case 0:
|
||||||
// core.syncSave("save");
|
// core.syncSave("save");
|
||||||
|
core.status.event.selection=0;
|
||||||
core.ui.drawSyncSelect();
|
core.ui.drawSyncSelect();
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
core.syncSave("load");
|
core.syncLoad();
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
/*
|
||||||
var saves = [];
|
var saves = [];
|
||||||
for (var i=1;i<=150;i++) {
|
for (var i=1;i<=150;i++) {
|
||||||
var data = core.getLocalStorage("save"+i, null);
|
var data = core.getLocalStorage("save"+i, null);
|
||||||
@ -1705,6 +1707,9 @@ events.prototype.clickSyncSave = function (x,y) {
|
|||||||
"data": saves
|
"data": saves
|
||||||
}
|
}
|
||||||
core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5save", JSON.stringify(content));
|
core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5save", JSON.stringify(content));
|
||||||
|
*/
|
||||||
|
core.status.event.selection=0;
|
||||||
|
core.ui.drawLocalSaveSelect();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
core.readFile(function (obj) {
|
core.readFile(function (obj) {
|
||||||
@ -1721,15 +1726,33 @@ events.prototype.clickSyncSave = function (x,y) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var data=obj.data;
|
var data=obj.data;
|
||||||
for (var i=1;i<=150;i++) {
|
|
||||||
if (i<=data.length) {
|
if (data instanceof Array) {
|
||||||
core.setLocalStorage("save"+i, data[i-1]);
|
core.ui.drawConfirmBox("所有本地存档都将被覆盖,确认?", function () {
|
||||||
}
|
for (var i=1;i<=150;i++) {
|
||||||
else {
|
if (i<=data.length) {
|
||||||
core.removeLocalStorage("save"+i);
|
core.setLocalStorage("save"+i, data[i-1]);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
core.removeLocalStorage("save"+i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
core.drawText("读取成功!\n你的本地所有存档均已被覆盖。");
|
||||||
|
}, function () {
|
||||||
|
core.status.event.selection=0;
|
||||||
|
core.ui.drawSyncSave();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var index=150;
|
||||||
|
for (var i=150;i>=1;i--) {
|
||||||
|
if (core.getLocalStorage("save"+i, null)==null)
|
||||||
|
index=i;
|
||||||
|
else break;
|
||||||
|
}
|
||||||
|
core.setLocalStorage("save"+index, data);
|
||||||
|
core.drawText("同步成功!\n单存档已覆盖至存档"+index);
|
||||||
}
|
}
|
||||||
core.drawText("读取成功!\n你的本地所有存档均已被覆盖。");
|
|
||||||
}, function () {
|
}, function () {
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -1747,8 +1770,8 @@ events.prototype.clickSyncSave = function (x,y) {
|
|||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
core.drawText("\t[操作成功]你的所有存档已被清空。");
|
core.drawText("\t[操作成功]你的所有存档已被清空。");
|
||||||
}, function() {
|
}, function() {
|
||||||
core.status.event.selection=2;
|
core.status.event.selection=5;
|
||||||
core.ui.drawSyncSave(false);
|
core.ui.drawSyncSave();
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
@ -1787,7 +1810,7 @@ events.prototype.keyUpSyncSave = function (keycode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 同步存档选择界面时的点击操作
|
////// 同步存档选择界面时的点击操作 //////
|
||||||
events.prototype.clickSyncSelect = function (x, y) {
|
events.prototype.clickSyncSelect = function (x, y) {
|
||||||
if (x<5 || x>7) return;
|
if (x<5 || x>7) return;
|
||||||
var choices = core.status.event.ui.choices;
|
var choices = core.status.event.ui.choices;
|
||||||
@ -1797,12 +1820,114 @@ events.prototype.clickSyncSelect = function (x, y) {
|
|||||||
var selection = y - topIndex;
|
var selection = y - topIndex;
|
||||||
switch (selection) {
|
switch (selection) {
|
||||||
case 0:
|
case 0:
|
||||||
|
core.syncSave('all');
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
core.syncSave();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
core.status.event.selection=0;
|
||||||
|
core.ui.drawSyncSave();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 同步存档选择界面时,按下某个键的操作 //////
|
||||||
|
events.prototype.keyDownSyncSelect = function (keycode) {
|
||||||
|
if (keycode==38) {
|
||||||
|
core.status.event.selection--;
|
||||||
|
core.ui.drawChoices(core.status.event.ui.text, core.status.event.ui.choices);
|
||||||
|
}
|
||||||
|
if (keycode==40) {
|
||||||
|
core.status.event.selection++;
|
||||||
|
core.ui.drawChoices(core.status.event.ui.text, core.status.event.ui.choices);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 同步存档选择界面时,放开某个键的操作 //////
|
||||||
|
events.prototype.keyUpSyncSelect = function (keycode) {
|
||||||
|
if (keycode==27 || keycode==88) {
|
||||||
|
core.status.event.selection=0;
|
||||||
|
core.ui.drawSettings();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var choices = core.status.event.ui.choices;
|
||||||
|
if (keycode==13 || keycode==32 || keycode==67) {
|
||||||
|
var topIndex = 6 - parseInt((choices.length - 1) / 2);
|
||||||
|
this.clickSyncSelect(6, topIndex+core.status.event.selection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 存档下载界面时的点击操作 //////
|
||||||
|
events.prototype.clickLocalSaveSelect = function (x,y) {
|
||||||
|
if (x<5 || x>7) return;
|
||||||
|
var choices = core.status.event.ui.choices;
|
||||||
|
|
||||||
|
var topIndex = 6 - parseInt((choices.length - 1) / 2);
|
||||||
|
|
||||||
|
var saves=null;
|
||||||
|
|
||||||
|
if (y>=topIndex && y<topIndex+choices.length) {
|
||||||
|
var selection = y - topIndex;
|
||||||
|
switch (selection) {
|
||||||
|
case 0:
|
||||||
|
saves=[];
|
||||||
|
for (var i=1;i<=150;i++) {
|
||||||
|
var data = core.getLocalStorage("save"+i, null);
|
||||||
|
if (core.isset(data)) {
|
||||||
|
saves.push(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
for (var i=150;i>=1;i--) {
|
||||||
|
saves=core.getLocalStorage("save"+i, null);
|
||||||
|
if (core.isset(saves)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (core.isset(saves)) {
|
||||||
|
var content = {
|
||||||
|
"name": core.firstData.name,
|
||||||
|
"version": core.firstData.version,
|
||||||
|
"data": saves
|
||||||
|
}
|
||||||
|
core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5save", JSON.stringify(content));
|
||||||
|
}
|
||||||
|
core.status.event.selection=2;
|
||||||
|
core.ui.drawSyncSave();
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 存档下载界面时,按下某个键的操作 //////
|
||||||
|
events.prototype.keyDownLocalSaveSelect = function (keycode) {
|
||||||
|
if (keycode==38) {
|
||||||
|
core.status.event.selection--;
|
||||||
|
core.ui.drawChoices(core.status.event.ui.text, core.status.event.ui.choices);
|
||||||
|
}
|
||||||
|
if (keycode==40) {
|
||||||
|
core.status.event.selection++;
|
||||||
|
core.ui.drawChoices(core.status.event.ui.text, core.status.event.ui.choices);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////// 存档下载界面时,放开某个键的操作 //////
|
||||||
|
events.prototype.keyUpLocalSaveSelect = function (keycode) {
|
||||||
|
if (keycode==27 || keycode==88) {
|
||||||
|
core.status.event.selection=0;
|
||||||
|
core.ui.drawSettings();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var choices = core.status.event.ui.choices;
|
||||||
|
if (keycode==13 || keycode==32 || keycode==67) {
|
||||||
|
var topIndex = 6 - parseInt((choices.length - 1) / 2);
|
||||||
|
this.clickLocalSaveSelect(6, topIndex+core.status.event.selection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////// “虚拟键盘”界面时的点击操作 //////
|
////// “虚拟键盘”界面时的点击操作 //////
|
||||||
|
|||||||
@ -696,6 +696,13 @@ ui.prototype.drawSyncSelect = function () {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////// 绘制单存档界面 //////
|
||||||
|
ui.prototype.drawLocalSaveSelect = function () {
|
||||||
|
core.status.event.id = 'localSaveSelect';
|
||||||
|
this.drawChoices(null, [
|
||||||
|
"下载所有存档", "只下载最新单存档", "返回上级菜单"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
////// 绘制分页 //////
|
////// 绘制分页 //////
|
||||||
ui.prototype.drawPagination = function (page, totalPage) {
|
ui.prototype.drawPagination = function (page, totalPage) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user