Use localForage to exceed 5M space limit
This commit is contained in:
1 parent
2258fc90d0
commit
740b3bffc9
8 files changed
+276
-114
No files matched your search
@@ -127,6 +127,7 @@
|
||||
<script src='libs/thirdparty/mid.min.js'></script>
|
||||
<script src='libs/thirdparty/lz-string.min.js'></script>
|
||||
<script src='libs/thirdparty/priority-queue.min.js'></script>
|
||||
<script src='libs/thirdparty/localforage.min.js'></script>
|
||||
<script id='mainScript' src='main.js'></script>
|
||||
<script>main.init();main.listen();</script>
|
||||
</body>
|
||||
|
||||
+43
-20
@@ -1427,8 +1427,12 @@ actions.prototype.clickSL = function(x,y) {
|
||||
core.drawTip("无法删除自动存档!");
|
||||
}
|
||||
else {
|
||||
core.removeLocalStorage("save"+id);
|
||||
core.ui.drawSLPanel(index);
|
||||
// core.removeLocalStorage("save"+id);
|
||||
core.removeLocalForage("save"+id, function() {
|
||||
core.ui.drawSLPanel(index, true);
|
||||
}, function() {
|
||||
core.drawTip("无法删除存档!");
|
||||
})
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1523,8 +1527,13 @@ actions.prototype.keyUpSL = function (keycode) {
|
||||
core.drawTip("无法删除自动存档!");
|
||||
}
|
||||
else {
|
||||
core.removeLocalStorage("save"+(5*page+offset));
|
||||
core.ui.drawSLPanel(index);
|
||||
// core.removeLocalStorage("save"+(5*page+offset));
|
||||
// core.ui.drawSLPanel(index);
|
||||
core.removeLocalForage("save"+(5*page+offset), function() {
|
||||
core.ui.drawSLPanel(index, true);
|
||||
}, function() {
|
||||
core.drawTip("无法删除存档!");
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1799,10 +1808,12 @@ actions.prototype.clickSyncSave = function (x,y) {
|
||||
core.ui.drawConfirmBox("所有本地存档都将被覆盖,确认?", function () {
|
||||
for (var i=1;i<=5*(main.savePages||30);i++) {
|
||||
if (i<=data.length) {
|
||||
core.setLocalStorage("save"+i, data[i-1]);
|
||||
// core.setLocalStorage("save"+i, data[i-1]);
|
||||
core.setLocalForage("save"+i, data[i-1]);
|
||||
}
|
||||
else {
|
||||
core.removeLocalStorage("save"+i);
|
||||
// core.removeLocalStorage("save"+i);
|
||||
core.removeLocalForage("save"+i);
|
||||
}
|
||||
}
|
||||
core.drawText("读取成功!\n你的本地所有存档均已被覆盖。");
|
||||
@@ -1812,8 +1823,10 @@ actions.prototype.clickSyncSave = function (x,y) {
|
||||
})
|
||||
}
|
||||
else {
|
||||
core.setLocalStorage("save"+core.status.saveIndex, data);
|
||||
core.drawText("同步成功!\n单存档已覆盖至存档"+core.status.saveIndex);
|
||||
// core.setLocalStorage("save"+core.status.saveIndex, data);
|
||||
core.setLocalForage("save"+core.status.saveIndex, data, function() {
|
||||
core.drawText("同步成功!\n单存档已覆盖至存档"+core.status.saveIndex);
|
||||
})
|
||||
}
|
||||
}, function () {
|
||||
|
||||
@@ -1931,6 +1944,7 @@ actions.prototype.clickLocalSaveSelect = function (x,y) {
|
||||
|
||||
if (y>=topIndex && y<topIndex+choices.length) {
|
||||
var selection = y - topIndex;
|
||||
/*
|
||||
switch (selection) {
|
||||
case 0:
|
||||
saves=[];
|
||||
@@ -1947,15 +1961,21 @@ actions.prototype.clickLocalSaveSelect = function (x,y) {
|
||||
case 2:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (core.isset(saves)) {
|
||||
var content = {
|
||||
"name": core.firstData.name,
|
||||
"version": core.firstData.version,
|
||||
"data": saves
|
||||
*/
|
||||
if (selection<2) {
|
||||
core.control.getSaves(selection==0?null:core.status.saveIndex, function(saves) {
|
||||
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.download(core.firstData.name+"_"+core.formatDate2(new Date())+".h5save", JSON.stringify(content));
|
||||
}
|
||||
|
||||
core.status.event.selection=2;
|
||||
core.ui.drawSyncSave();
|
||||
}
|
||||
@@ -1997,15 +2017,18 @@ actions.prototype.clickStorageRemove = function (x, y) {
|
||||
var selection = y - topIndex;
|
||||
switch (selection) {
|
||||
case 0:
|
||||
localStorage.clear();
|
||||
core.drawText("\t[操作成功]你的所有存档已被清空。");
|
||||
localforage.clear(function () {
|
||||
core.drawText("\t[操作成功]你的所有存档已被清空。");
|
||||
});
|
||||
break;
|
||||
case 1:
|
||||
for (var i=1;i<=5*(main.savePages||30);i++) {
|
||||
core.removeLocalStorage("save"+i);
|
||||
// core.removeLocalStorage("save"+i);
|
||||
core.removeLocalForage("save"+i);
|
||||
}
|
||||
core.drawText("\t[操作成功]当前塔的存档已被清空。");
|
||||
core.removeLocalStorage("autoSave");
|
||||
core.removeLocalForage("autoSave", function() {
|
||||
core.drawText("\t[操作成功]当前塔的存档已被清空。");
|
||||
});
|
||||
break;
|
||||
case 2:
|
||||
core.status.event.selection=5;
|
||||
|
||||
+133
-89
@@ -2180,7 +2180,7 @@ control.prototype.autosave = function (removeLast) {
|
||||
var x=null;
|
||||
if (removeLast)
|
||||
x=core.status.route.pop();
|
||||
core.setLocalStorage("autoSave", core.saveData())
|
||||
core.setLocalForage("autoSave", core.saveData())
|
||||
if (removeLast && core.isset(x))
|
||||
core.status.route.push(x);
|
||||
}
|
||||
@@ -2192,6 +2192,18 @@ control.prototype.doSL = function (id, type) {
|
||||
core.drawTip('不能覆盖自动存档!');
|
||||
return;
|
||||
}
|
||||
core.setLocalForage("save"+id, core.saveData(), function() {
|
||||
core.ui.closePanel();
|
||||
core.drawTip('存档成功!');
|
||||
if (id!="autoSave") {
|
||||
core.status.saveIndex=id;
|
||||
core.setLocalStorage('saveIndex2', core.status.saveIndex);
|
||||
}
|
||||
}, function(err) {
|
||||
console.info(err);
|
||||
core.drawTip("存档失败,请将控制台的报错信息反馈给管理员。");
|
||||
})
|
||||
/*
|
||||
if (core.setLocalStorage("save"+id, core.saveData())) {
|
||||
core.ui.closePanel();
|
||||
core.drawTip('存档成功!');
|
||||
@@ -2203,105 +2215,105 @@ control.prototype.doSL = function (id, type) {
|
||||
else {
|
||||
core.drawTip('存储空间不足,请覆盖已有的存档或在菜单栏中进行清理');
|
||||
}
|
||||
*/
|
||||
return;
|
||||
}
|
||||
else if (type=='load') {
|
||||
var data = core.getLocalStorage(id=='autoSave'?id:"save"+id, null);
|
||||
if (!core.isset(data)) {
|
||||
// var data = core.getLocalStorage(id=='autoSave'?id:"save"+id, null);
|
||||
|
||||
core.getLocalForage(id=='autoSave'?id:"save"+id, function(data) {
|
||||
if (!core.isset(data)) {
|
||||
core.drawTip("无效的存档");
|
||||
return;
|
||||
}
|
||||
if (data.version != core.firstData.version) {
|
||||
// core.drawTip("存档版本不匹配");
|
||||
if (confirm("存档版本不匹配!\n你想回放此存档的录像吗?\n可以随时停止录像播放以继续游戏。")) {
|
||||
core.dom.startPanel.style.display = 'none';
|
||||
var seed = data.hero.flags.seed;
|
||||
core.resetStatus(core.firstData.hero, data.hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||
core.events.setInitData(data.hard);
|
||||
core.setFlag('seed', seed);
|
||||
core.setFlag('rand', seed);
|
||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
||||
core.startReplay(core.decodeRoute(data.route));
|
||||
}, true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
core.ui.closePanel();
|
||||
core.loadData(data, function() {
|
||||
core.drawTip("读档成功");
|
||||
if (id!="autoSave") {
|
||||
core.status.saveIndex=id;
|
||||
core.setLocalStorage('saveIndex2', core.status.saveIndex);
|
||||
}
|
||||
});
|
||||
}, function(err) {
|
||||
core.drawTip("无效的存档");
|
||||
return;
|
||||
}
|
||||
if (data.version != core.firstData.version) {
|
||||
// core.drawTip("存档版本不匹配");
|
||||
if (confirm("存档版本不匹配!\n你想回放此存档的录像吗?\n可以随时停止录像播放以继续游戏。")) {
|
||||
core.dom.startPanel.style.display = 'none';
|
||||
var seed = data.hero.flags.seed;
|
||||
core.resetStatus(core.firstData.hero, data.hard, core.firstData.floorId, null, core.initStatus.maps);
|
||||
core.events.setInitData(data.hard);
|
||||
core.setFlag('seed', seed);
|
||||
core.setFlag('rand', seed);
|
||||
core.changeFloor(core.status.floorId, null, core.firstData.hero.loc, null, function() {
|
||||
core.startReplay(core.decodeRoute(data.route));
|
||||
}, true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
core.ui.closePanel();
|
||||
core.loadData(data, function() {
|
||||
core.drawTip("读档成功");
|
||||
if (id!="autoSave") {
|
||||
core.status.saveIndex=id;
|
||||
core.setLocalStorage('saveIndex2', core.status.saveIndex);
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
return;
|
||||
}
|
||||
else if (type == 'replayLoad') {
|
||||
var data = core.getLocalStorage(id=='autoSave'?id:"save"+id, null);
|
||||
if (!core.isset(data)) {
|
||||
// var data = core.getLocalStorage(id=='autoSave'?id:"save"+id, null);
|
||||
core.getLocalForage(id=='autoSave'?id:"save"+id, function(data) {
|
||||
if (!core.isset(data)) {
|
||||
core.drawTip("无效的存档");
|
||||
return;
|
||||
}
|
||||
if (data.version != core.firstData.version) {
|
||||
core.drawTip("存档版本不匹配");
|
||||
return;
|
||||
}
|
||||
if (data.hard != core.status.hard) {
|
||||
core.drawTip("游戏难度不匹配!");
|
||||
return;
|
||||
}
|
||||
var route = core.subarray(core.status.route, core.decodeRoute(data.route));
|
||||
if (!core.isset(route) || data.hero.flags.seed!=core.getFlag('seed')) {
|
||||
core.drawTip("无法从此存档回放录像");
|
||||
return;
|
||||
}
|
||||
core.loadData(data, function () {
|
||||
core.startReplay(route);
|
||||
core.drawTip("回退到存档节点");
|
||||
});
|
||||
}, function(err) {
|
||||
console.info(err);
|
||||
core.drawTip("无效的存档");
|
||||
return;
|
||||
}
|
||||
if (data.version != core.firstData.version) {
|
||||
core.drawTip("存档版本不匹配");
|
||||
return;
|
||||
}
|
||||
if (data.hard != core.status.hard) {
|
||||
core.drawTip("游戏难度不匹配!");
|
||||
return;
|
||||
}
|
||||
var route = core.subarray(core.status.route, core.decodeRoute(data.route));
|
||||
if (!core.isset(route) || data.hero.flags.seed!=core.getFlag('seed')) {
|
||||
core.drawTip("无法从此存档回放录像");
|
||||
return;
|
||||
}
|
||||
core.loadData(data, function () {
|
||||
core.startReplay(route);
|
||||
core.drawTip("回退到存档节点");
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
////// 同步存档到服务器 //////
|
||||
control.prototype.syncSave = function (type) {
|
||||
var saves=null;
|
||||
// data
|
||||
if (type=='all') {
|
||||
saves=[];
|
||||
for (var i=1;i<=5*(main.savePages||30);i++) {
|
||||
var data = core.getLocalStorage("save"+i, null);
|
||||
if (core.isset(data)) {
|
||||
saves.push(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
saves=core.getLocalStorage("save"+core.status.saveIndex, null);
|
||||
}
|
||||
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);
|
||||
|
||||
core.http("POST", "/games/sync.php", formData, function (data) {
|
||||
var response = JSON.parse(data);
|
||||
if (response.code<0) {
|
||||
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:"+response.msg);
|
||||
core.control.getSaves(type=='all'?null:core.status.saveIndex, function (saves) {
|
||||
if (!core.isset(saves)) {
|
||||
core.drawText("没有要同步的存档");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
core.drawText((type=='all'?"所有存档":"存档"+core.status.saveIndex)+"同步成功!\n\n您的存档编号: "
|
||||
+response.code+"\n您的存档密码: "+response.msg
|
||||
+"\n\n请牢记以上两个信息(如截图等),在从服务器\n同步存档时使用。")
|
||||
}
|
||||
}, function (e) {
|
||||
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:"+e);
|
||||
|
||||
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);
|
||||
|
||||
core.http("POST", "/games/sync.php", formData, function (data) {
|
||||
var response = JSON.parse(data);
|
||||
if (response.code<0) {
|
||||
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:"+response.msg);
|
||||
}
|
||||
else {
|
||||
core.drawText((type=='all'?"所有存档":"存档"+core.status.saveIndex)+"同步成功!\n\n您的存档编号: "
|
||||
+response.code+"\n您的存档密码: "+response.msg
|
||||
+"\n\n请牢记以上两个信息(如截图等),在从服务器\n同步存档时使用。")
|
||||
}
|
||||
}, function (e) {
|
||||
core.drawText("出错啦!\n无法同步存档到服务器。\n错误原因:"+e);
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -2338,10 +2350,12 @@ control.prototype.syncLoad = function () {
|
||||
core.ui.drawConfirmBox("所有本地存档都将被覆盖,确认?", function () {
|
||||
for (var i=1;i<=5*(main.savePages||30);i++) {
|
||||
if (i<=data.length) {
|
||||
core.setLocalStorage("save"+i, data[i-1]);
|
||||
// core.setLocalStorage("save"+i, data[i-1]);
|
||||
core.setLocalForage("save"+i, data[i-1]);
|
||||
}
|
||||
else {
|
||||
core.removeLocalStorage("save"+i);
|
||||
// core.removeLocalStorage("save"+i);
|
||||
core.removeLocalForage("save"+i);
|
||||
}
|
||||
}
|
||||
core.drawText("同步成功!\n你的本地所有存档均已被覆盖。");
|
||||
@@ -2352,8 +2366,10 @@ control.prototype.syncLoad = function () {
|
||||
}
|
||||
else {
|
||||
// 只覆盖单存档
|
||||
core.setLocalStorage("save"+core.status.saveIndex, data);
|
||||
core.drawText("同步成功!\n单存档已覆盖至存档"+core.status.saveIndex);
|
||||
// core.setLocalStorage("save"+core.status.saveIndex, data);
|
||||
core.setLocalForage("save"+core.status.saveIndex, data, function() {
|
||||
core.drawText("同步成功!\n单存档已覆盖至存档"+core.status.saveIndex);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case -1:
|
||||
@@ -2424,6 +2440,34 @@ control.prototype.loadData = function (data, callback) {
|
||||
}, true);
|
||||
}
|
||||
|
||||
control.prototype.getSaves = function (index, callback) {
|
||||
if (core.isset(index)) {
|
||||
core.getLocalForage("save"+index, function(data) {
|
||||
if (core.isset(callback)) callback(data);
|
||||
}, function(err) {
|
||||
if (core.isset(callback))
|
||||
callback(null);
|
||||
})
|
||||
return;
|
||||
}
|
||||
var number = 5*(main.savePages||30);
|
||||
var saves = [];
|
||||
var load = function (index, callback) {
|
||||
if (index > number) {
|
||||
if (core.isset(callback)) callback(saves);
|
||||
return;
|
||||
}
|
||||
core.getLocalForage("save"+index, function (data) {
|
||||
saves.push(data);
|
||||
load(index+1, callback);
|
||||
}, function(err) {
|
||||
// saves.push(null);
|
||||
load(index+1, callback);
|
||||
})
|
||||
}
|
||||
load(1, callback);
|
||||
}
|
||||
|
||||
////// 设置勇士属性 //////
|
||||
control.prototype.setStatus = function (statusName, statusVal) {
|
||||
if (statusName == 'exp') statusName = 'experience';
|
||||
|
||||
@@ -897,6 +897,18 @@ core.prototype.removeLocalStorage = function (key) {
|
||||
core.utils.removeLocalStorage(key);
|
||||
}
|
||||
|
||||
core.prototype.setLocalForage = function (key, value, successCallback, errorCallback) {
|
||||
core.utils.setLocalForage(key, value, successCallback, errorCallback);
|
||||
}
|
||||
|
||||
core.prototype.getLocalForage = function (key, successCallback, errorCallback) {
|
||||
core.utils.getLocalForage(key, successCallback, errorCallback);
|
||||
}
|
||||
|
||||
core.prototype.removeLocalForage = function (key, successCallback, errorCallback) {
|
||||
core.utils.removeLocalForage(key, successCallback, errorCallback);
|
||||
}
|
||||
|
||||
////// 深拷贝一个对象 //////
|
||||
core.prototype.clone = function (data) {
|
||||
return core.utils.clone(data);
|
||||
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
/*!
|
||||
localForage -- Offline Storage, Improved
|
||||
Version 1.7.2
|
||||
https://localforage.github.io/localForage
|
||||
(c) 2013-2017 Mozilla, Apache License 2.0
|
||||
*/
|
||||
!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.localforage=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c||a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){(function(a){"use strict";function c(){k=!0;for(var a,b,c=l.length;c;){for(b=l,l=[],a=-1;++a<c;)b[a]();c=l.length}k=!1}function d(a){1!==l.push(a)||k||e()}var e,f=a.MutationObserver||a.WebKitMutationObserver;if(f){var g=0,h=new f(c),i=a.document.createTextNode("");h.observe(i,{characterData:!0}),e=function(){i.data=g=++g%2}}else if(a.setImmediate||void 0===a.MessageChannel)e="document"in a&&"onreadystatechange"in a.document.createElement("script")?function(){var b=a.document.createElement("script");b.onreadystatechange=function(){c(),b.onreadystatechange=null,b.parentNode.removeChild(b),b=null},a.document.documentElement.appendChild(b)}:function(){setTimeout(c,0)};else{var j=new a.MessageChannel;j.port1.onmessage=c,e=function(){j.port2.postMessage(0)}}var k,l=[];b.exports=d}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(a,b,c){"use strict";function d(){}function e(a){if("function"!=typeof a)throw new TypeError("resolver must be a function");this.state=s,this.queue=[],this.outcome=void 0,a!==d&&i(this,a)}function f(a,b,c){this.promise=a,"function"==typeof b&&(this.onFulfilled=b,this.callFulfilled=this.otherCallFulfilled),"function"==typeof c&&(this.onRejected=c,this.callRejected=this.otherCallRejected)}function g(a,b,c){o(function(){var d;try{d=b(c)}catch(b){return p.reject(a,b)}d===a?p.reject(a,new TypeError("Cannot resolve promise with itself")):p.resolve(a,d)})}function h(a){var b=a&&a.then;if(a&&("object"==typeof a||"function"==typeof a)&&"function"==typeof b)return function(){b.apply(a,arguments)}}function i(a,b){function c(b){f||(f=!0,p.reject(a,b))}function d(b){f||(f=!0,p.resolve(a,b))}function e(){b(d,c)}var f=!1,g=j(e);"error"===g.status&&c(g.value)}function j(a,b){var c={};try{c.value=a(b),c.status="success"}catch(a){c.status="error",c.value=a}return c}function k(a){return a instanceof this?a:p.resolve(new this(d),a)}function l(a){var b=new this(d);return p.reject(b,a)}function m(a){function b(a,b){function d(a){g[b]=a,++h!==e||f||(f=!0,p.resolve(j,g))}c.resolve(a).then(d,function(a){f||(f=!0,p.reject(j,a))})}var c=this;if("[object Array]"!==Object.prototype.toString.call(a))return this.reject(new TypeError("must be an array"));var e=a.length,f=!1;if(!e)return this.resolve([]);for(var g=new Array(e),h=0,i=-1,j=new this(d);++i<e;)b(a[i],i);return j}function n(a){function b(a){c.resolve(a).then(function(a){f||(f=!0,p.resolve(h,a))},function(a){f||(f=!0,p.reject(h,a))})}var c=this;if("[object Array]"!==Object.prototype.toString.call(a))return this.reject(new TypeError("must be an array"));var e=a.length,f=!1;if(!e)return this.resolve([]);for(var g=-1,h=new this(d);++g<e;)b(a[g]);return h}var o=a(1),p={},q=["REJECTED"],r=["FULFILLED"],s=["PENDING"];b.exports=e,e.prototype.catch=function(a){return this.then(null,a)},e.prototype.then=function(a,b){if("function"!=typeof a&&this.state===r||"function"!=typeof b&&this.state===q)return this;var c=new this.constructor(d);if(this.state!==s){g(c,this.state===r?a:b,this.outcome)}else this.queue.push(new f(c,a,b));return c},f.prototype.callFulfilled=function(a){p.resolve(this.promise,a)},f.prototype.otherCallFulfilled=function(a){g(this.promise,this.onFulfilled,a)},f.prototype.callRejected=function(a){p.reject(this.promise,a)},f.prototype.otherCallRejected=function(a){g(this.promise,this.onRejected,a)},p.resolve=function(a,b){var c=j(h,b);if("error"===c.status)return p.reject(a,c.value);var d=c.value;if(d)i(a,d);else{a.state=r,a.outcome=b;for(var e=-1,f=a.queue.length;++e<f;)a.queue[e].callFulfilled(b)}return a},p.reject=function(a,b){a.state=q,a.outcome=b;for(var c=-1,d=a.queue.length;++c<d;)a.queue[c].callRejected(b);return a},e.resolve=k,e.reject=l,e.all=m,e.race=n},{1:1}],3:[function(a,b,c){(function(b){"use strict";"function"!=typeof b.Promise&&(b.Promise=a(2))}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function e(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;iLine truncated
|
||||
+34
-5
@@ -1721,7 +1721,7 @@ ui.prototype.drawToolbox = function(index) {
|
||||
}
|
||||
|
||||
////// 绘制存档/读档界面 //////
|
||||
ui.prototype.drawSLPanel = function(index) {
|
||||
ui.prototype.drawSLPanel = function(index, refresh) {
|
||||
if (!core.isset(index)) index=1;
|
||||
if (index<0) index=0;
|
||||
|
||||
@@ -1731,7 +1731,14 @@ ui.prototype.drawSLPanel = function(index) {
|
||||
if (offset>5) offset=5;
|
||||
index=10*page+offset;
|
||||
|
||||
var last_page = -1;
|
||||
if (core.isset(core.status.event.data)) {
|
||||
last_page = parseInt(core.status.event.data/10);
|
||||
}
|
||||
|
||||
core.status.event.data=index;
|
||||
if (!core.isset(core.status.event.ui))
|
||||
core.status.event.ui = [];
|
||||
|
||||
core.clearMap('ui');
|
||||
core.setAlpha('ui', 0.85);
|
||||
@@ -1745,14 +1752,15 @@ ui.prototype.drawSLPanel = function(index) {
|
||||
if (core.status.event.selection) strokeColor = '#FF6A6A';
|
||||
|
||||
var name=core.status.event.id=='save'?"存档":core.status.event.id=='load'?"读档":core.status.event.id=='replayLoad'?"回放":"";
|
||||
for (var i=0;i<6;i++) {
|
||||
|
||||
var draw = function (data, i) {
|
||||
core.status.event.ui[i] = data;
|
||||
var id=5*page+i;
|
||||
var data=core.getLocalStorage(i==0?"autoSave":"save"+id, null);
|
||||
if (i<3) {
|
||||
core.fillText('ui', i==0?"自动存档":name+id, (2*i+1)*u, 35, '#FFFFFF', "bold 17px Verdana");
|
||||
core.strokeRect('ui', (2*i+1)*u-size/2, 50, size, size, i==offset?strokeColor:'#FFFFFF', i==offset?6:2);
|
||||
if (core.isset(data) && core.isset(data.floorId)) {
|
||||
this.drawThumbnail(data.floorId, 'ui', core.maps.load(data.maps, data.floorId).blocks, (2*i+1)*u-size/2, 50, size, data.hero.loc.x, data.hero.loc.y, data.hero.loc, data.hero.flags.heroIcon||"hero.png");
|
||||
core.ui.drawThumbnail(data.floorId, 'ui', core.maps.load(data.maps, data.floorId).blocks, (2*i+1)*u-size/2, 50, size, data.hero.loc.x, data.hero.loc.y, data.hero.loc, data.hero.flags.heroIcon||"hero.png");
|
||||
core.fillText('ui', core.formatDate(new Date(data.time)), (2*i+1)*u, 65+size, '#FFFFFF', '10px Verdana');
|
||||
}
|
||||
else {
|
||||
@@ -1764,7 +1772,7 @@ ui.prototype.drawSLPanel = function(index) {
|
||||
core.fillText('ui', name+id, (2*i-5)*u, 230, '#FFFFFF', "bold 17px Verdana");
|
||||
core.strokeRect('ui', (2*i-5)*u-size/2, 245, size, size, i==offset?strokeColor:'#FFFFFF', i==offset?6:2);
|
||||
if (core.isset(data) && core.isset(data.floorId)) {
|
||||
this.drawThumbnail(data.floorId, 'ui', core.maps.load(data.maps, data.floorId).blocks, (2*i-5)*u-size/2, 245, size, data.hero.loc.x, data.hero.loc.y, data.hero.loc, data.hero.flags.heroIcon||"hero.png");
|
||||
core.ui.drawThumbnail(data.floorId, 'ui', core.maps.load(data.maps, data.floorId).blocks, (2*i-5)*u-size/2, 245, size, data.hero.loc.x, data.hero.loc.y, data.hero.loc, data.hero.flags.heroIcon||"hero.png");
|
||||
core.fillText('ui', core.formatDate(new Date(data.time)), (2*i-5)*u, 260+size, '#FFFFFF', '10px Verdana');
|
||||
}
|
||||
else {
|
||||
@@ -1772,7 +1780,28 @@ ui.prototype.drawSLPanel = function(index) {
|
||||
core.fillText('ui', '空', (2*i-5)*u, 245+70, '#FFFFFF', 'bold 30px Verdana');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var drawSave = function (i) {
|
||||
|
||||
core.getLocalForage(i==0?"autoSave":"save"+(5*page+i), function(data) {
|
||||
draw(data, i);
|
||||
}, function(err) {
|
||||
draw(null, i);
|
||||
})
|
||||
}
|
||||
|
||||
if (page == last_page && !refresh) {
|
||||
for (var i=0;i<6;i++) {
|
||||
draw(core.status.event.ui[i]||null, i);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (var i=0;i<6;i++) {
|
||||
drawSave(i);
|
||||
}
|
||||
}
|
||||
|
||||
this.drawPagination(page+1, max_page);
|
||||
|
||||
if (core.status.event.selection)
|
||||
|
||||
@@ -124,6 +124,51 @@ utils.prototype.removeLocalStorage = function (key) {
|
||||
localStorage.removeItem(core.firstData.name+"_"+key);
|
||||
}
|
||||
|
||||
utils.prototype.setLocalForage = function (key, value, successCallback, errorCallback) {
|
||||
// Save to localforage
|
||||
var compressed = LZString.compress(JSON.stringify(value));
|
||||
localforage.setItem(core.firstData.name+"_"+key, compressed, function (err) {
|
||||
if (core.isset(err)) {
|
||||
if (core.isset(errorCallback)) errorCallback(err);
|
||||
}
|
||||
else if (core.isset(successCallback)) successCallback();
|
||||
});
|
||||
}
|
||||
|
||||
utils.prototype.getLocalForage = function (key, successCallback, errorCallback) {
|
||||
localforage.getItem(core.firstData.name+"_"+key, function (err, value) {
|
||||
if (core.isset(err)) {
|
||||
if (core.isset(errorCallback)) errorCallback(err);
|
||||
}
|
||||
else {
|
||||
if (core.isset(value)) {
|
||||
var output = LZString.decompress(value);
|
||||
if (core.isset(output) && output.length>0) {
|
||||
try {
|
||||
if (core.isset(successCallback))
|
||||
successCallback(JSON.parse(output));
|
||||
return;
|
||||
}
|
||||
catch (ee) {console.log(ee);}
|
||||
}
|
||||
if (core.isset(successCallback))
|
||||
successCallback(JSON.parse(value));
|
||||
return;
|
||||
}
|
||||
if (core.isset(errorCallback)) errorCallback("Value is null");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
utils.prototype.removeLocalForage = function (key, successCallback, errorCallback) {
|
||||
localforage.removeItem(core.firstData.name+"_"+key, function (err) {
|
||||
if (core.isset(err)) {
|
||||
if (core.isset(errorCallback)) errorCallback(err);
|
||||
}
|
||||
else if (core.isset(successCallback)) successCallback();
|
||||
})
|
||||
}
|
||||
|
||||
////// 深拷贝一个对象 //////
|
||||
utils.prototype.clone = function (data) {
|
||||
if (!core.isset(data)) return data;
|
||||
|
||||
Reference in new issue
Block a user