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;
|
||||
}
|
||||
}
|
||||
catch (e) {}
|
||||
catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
alert("不是有效的JSON文件!");
|
||||
|
||||
if (core.isset(core.platform.errorCallback))
|
||||
@ -701,6 +703,14 @@ core.prototype.keyDown = function(keyCode) {
|
||||
core.events.keyDownSyncSave(keyCode);
|
||||
return;
|
||||
}
|
||||
if (core.status.event.id=='syncSelect') {
|
||||
core.events.keyDownSyncSelect(keyCode);
|
||||
return;
|
||||
}
|
||||
if (core.status.event.id=='localSaveSelect') {
|
||||
core.events.keyDownLocalSaveSelect(keyCode);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if(!core.status.played) {
|
||||
@ -816,6 +826,14 @@ core.prototype.keyUp = function(keyCode) {
|
||||
core.events.keyUpSyncSave(keyCode);
|
||||
return;
|
||||
}
|
||||
if (core.status.event.id=='syncSelect') {
|
||||
core.events.keyUpSyncSelect(keyCode);
|
||||
return;
|
||||
}
|
||||
if (core.status.event.id=='localSaveSelect') {
|
||||
core.events.keyUpLocalSaveSelect(keyCode);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1152,6 +1170,16 @@ core.prototype.onclick = function (x, y, stepPostfix) {
|
||||
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);
|
||||
//core.status.automaticRoutingTemp.destX = destX;
|
||||
//core.status.automaticRoutingTemp.destY = destY;
|
||||
core.status.automaticRoute.destX=destX;
|
||||
core.status.automaticRoute.destY=destY;
|
||||
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) {
|
||||
if (type=='save') {
|
||||
@ -4039,6 +4210,7 @@ core.prototype.syncSave = function(type) {
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
////// 存档到本地 //////
|
||||
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) {
|
||||
case 0:
|
||||
// core.syncSave("save");
|
||||
core.status.event.selection=0;
|
||||
core.ui.drawSyncSelect();
|
||||
break;
|
||||
case 1:
|
||||
core.syncSave("load");
|
||||
core.syncLoad();
|
||||
break;
|
||||
case 2:
|
||||
/*
|
||||
var saves = [];
|
||||
for (var i=1;i<=150;i++) {
|
||||
var data = core.getLocalStorage("save"+i, null);
|
||||
@ -1705,6 +1707,9 @@ events.prototype.clickSyncSave = function (x,y) {
|
||||
"data": saves
|
||||
}
|
||||
core.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5save", JSON.stringify(content));
|
||||
*/
|
||||
core.status.event.selection=0;
|
||||
core.ui.drawLocalSaveSelect();
|
||||
break;
|
||||
case 3:
|
||||
core.readFile(function (obj) {
|
||||
@ -1721,15 +1726,33 @@ events.prototype.clickSyncSave = function (x,y) {
|
||||
return;
|
||||
}
|
||||
var data=obj.data;
|
||||
for (var i=1;i<=150;i++) {
|
||||
if (i<=data.length) {
|
||||
core.setLocalStorage("save"+i, data[i-1]);
|
||||
}
|
||||
else {
|
||||
core.removeLocalStorage("save"+i);
|
||||
}
|
||||
|
||||
if (data instanceof Array) {
|
||||
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);
|
||||
}
|
||||
core.drawText("读取成功!\n你的本地所有存档均已被覆盖。");
|
||||
}, function () {
|
||||
|
||||
});
|
||||
@ -1747,8 +1770,8 @@ events.prototype.clickSyncSave = function (x,y) {
|
||||
localStorage.clear();
|
||||
core.drawText("\t[操作成功]你的所有存档已被清空。");
|
||||
}, function() {
|
||||
core.status.event.selection=2;
|
||||
core.ui.drawSyncSave(false);
|
||||
core.status.event.selection=5;
|
||||
core.ui.drawSyncSave();
|
||||
})
|
||||
break;
|
||||
case 6:
|
||||
@ -1787,7 +1810,7 @@ events.prototype.keyUpSyncSave = function (keycode) {
|
||||
}
|
||||
}
|
||||
|
||||
////// 同步存档选择界面时的点击操作
|
||||
////// 同步存档选择界面时的点击操作 //////
|
||||
events.prototype.clickSyncSelect = function (x, y) {
|
||||
if (x<5 || x>7) return;
|
||||
var choices = core.status.event.ui.choices;
|
||||
@ -1797,12 +1820,114 @@ events.prototype.clickSyncSelect = function (x, y) {
|
||||
var selection = y - topIndex;
|
||||
switch (selection) {
|
||||
case 0:
|
||||
core.syncSave('all');
|
||||
break;
|
||||
case 1:
|
||||
core.syncSave();
|
||||
break;
|
||||
case 2:
|
||||
core.status.event.selection=0;
|
||||
core.ui.drawSyncSave();
|
||||
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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user