Use localForage to exceed 5M space limit

This commit is contained in:
ckcz123 committed 2018-08-29 16:38:20 +08:00
1 parent 2258fc90d0
commit 740b3bffc9
8 files changed
+276 -114

No files matched your search

+1
View File
@@ -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
View File
@@ -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
View File
@@ -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';
+12
View File
@@ -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);
+7
View File
@@ -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
View File
@@ -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)
+45
View File
@@ -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;
+1
View File
@@ -1,6 +1,7 @@
HTML5魔塔样板V2.4
大地图的支持
突破了5M的存档空间大小限制
同点多事件的颜色块绘制
录像播放时可以按PgUp/PgDn浏览地图
录像播放时对于瞬间移动绘制箭头