diff --git a/docs/api.md b/docs/api.md index 29382194..d6328bb0 100644 --- a/docs/api.md +++ b/docs/api.md @@ -302,6 +302,11 @@ core.getLocalForage(key, defaultValue, successCallback, errorCallback) 如果成功则通过successCallback回调,失败则通过errorCallback回调。 +core.hasSave(index) +判定当前某个存档位是否存在存档,返回true/false。 +index为存档编号,0代表自动存档,大于0则为正常的存档位。 + + core.clone(data) 深拷贝某个对象。 diff --git a/libs/actions.js b/libs/actions.js index d97120b5..978d7499 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -1854,6 +1854,9 @@ actions.prototype.clickSwitchs = function (x,y) { case 6: core.platform.useLocalForage=!core.platform.useLocalForage; core.setLocalStorage('useLocalForage', core.platform.useLocalForage); + core.control.getSaveIndexes(function (indexes) { + core.saves.ids = indexes; + }); core.ui.drawSwitchs(); break; case 7: @@ -2026,12 +2029,11 @@ 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.setLocalForage("save"+i, data[i-1]); } else { - // core.removeLocalStorage("save"+i); - core.removeLocalForage("save"+i); + if (core.saves.ids[i]) + core.removeLocalForage("save"+i); } } core.drawText("读取成功!\n你的本地所有存档均已被覆盖。"); diff --git a/libs/control.js b/libs/control.js index f8c77a29..9be95f8b 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2254,8 +2254,6 @@ control.prototype.syncLoad = function () { case 0: // 成功 var data=JSON.parse(response.msg); - // console.log(data); - if (data instanceof Array) { core.status.event.selection=1; core.ui.drawConfirmBox("所有本地存档都将被覆盖,确认?", function () { @@ -2265,8 +2263,8 @@ control.prototype.syncLoad = function () { core.setLocalForage("save"+i, data[i-1]); } else { - // core.removeLocalStorage("save"+i); - core.removeLocalForage("save"+i); + if (core.saves.ids[i]) + core.removeLocalForage("save"+i); } } core.drawText("同步成功!\n你的本地所有存档均已被覆盖。"); @@ -2277,7 +2275,6 @@ control.prototype.syncLoad = function () { } else { // 只覆盖单存档 - // core.setLocalStorage("save"+core.saves.saveIndex, data); core.setLocalForage("save"+core.saves.saveIndex, data, function() { core.drawText("同步成功!\n单存档已覆盖至存档"+core.saves.saveIndex); }); @@ -2377,7 +2374,7 @@ control.prototype.getSaves = function (index, callback) { return; } - var ids = Object.keys(core.saves.ids).sort(), number = ids.length; + var ids = Object.keys(core.saves.ids).sort(function(a,b) {return a-b;}), number = ids.length; // 不计0 var saves = []; @@ -2424,6 +2421,11 @@ control.prototype.getSaveIndexes = function (callback) { } } +////// 判断某个存档位是否存在存档 ////// +control.prototype.hasSave = function (index) { + return core.saves.ids[index]||false; +} + ////// 设置勇士属性 ////// control.prototype.setStatus = function (statusName, statusVal) { if (statusName == 'exp') statusName = 'experience'; diff --git a/libs/core.js b/libs/core.js index b2b5f39d..a8cda9fb 100644 --- a/libs/core.js +++ b/libs/core.js @@ -1340,6 +1340,11 @@ core.prototype.http = function (type, url, formData, success, error, mimeType, r core.utils.http(type, url, formData, success, error, mimeType, responseType) } +////// 判断某个存档位是否存在存档 ////// +core.prototype.hasSave = function (index) { + return core.control.hasSave(index); +} + ////// 设置勇士属性 ////// core.prototype.setStatus = function (statusName, statusVal) { core.control.setStatus(statusName, statusVal); diff --git a/libs/maps.js b/libs/maps.js index 4157d2b5..a97cb083 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1253,6 +1253,11 @@ maps.prototype.setBlock = function (number, x, y, floorId) { } if (floorId==core.status.floorId && !block.disable) { core.drawBlock(block); + if (originBlock == null) { + core.addGlobalAnimate(block); + core.syncGlobalAnimate(); + } + core.updateStatusBar(); } } } diff --git a/libs/utils.js b/libs/utils.js index f7539ca4..5893a0a2 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -129,6 +129,10 @@ utils.prototype.setLocalStorage = function(key, value) { localStorage.setItem(core.firstData.name + "_" + key, str); } localStorage.removeItem("__tmp__"); + + if (key == 'autoSave') core.saves.ids[0] = true; + else if (/^save\d+$/.test(key)) core.saves.ids[parseInt(key.substring(4))] = true; + return true; } catch (e) { @@ -162,6 +166,8 @@ utils.prototype.getLocalStorage = function(key, defaultValue) { ////// 移除本地存储 ////// utils.prototype.removeLocalStorage = function (key) { localStorage.removeItem(core.firstData.name+"_"+key); + if (key == 'autoSave') delete core.saves.ids[0]; + else if (/^save\d+$/.test(key)) delete core.saves.ids[parseInt(key.substring(4))]; } utils.prototype.setLocalForage = function (key, value, successCallback, errorCallback) { @@ -187,7 +193,11 @@ utils.prototype.setLocalForage = function (key, value, successCallback, errorCal if (core.isset(err)) { if (core.isset(errorCallback)) errorCallback(err); } - else if (core.isset(successCallback)) successCallback(); + else { + if (key == 'autoSave') core.saves.ids[0] = true; + else if (/^save\d+$/.test(key)) core.saves.ids[parseInt(key.substring(4))] = true; + if (core.isset(successCallback)) successCallback(); + } }); } @@ -238,7 +248,11 @@ utils.prototype.removeLocalForage = function (key, successCallback, errorCallbac if (core.isset(err)) { if (core.isset(errorCallback)) errorCallback(err); } - else if (core.isset(successCallback)) successCallback(); + else { + if (key == 'autoSave') delete core.saves.ids[0]; + else if (/^save\d+$/.test(key)) delete core.saves.ids[parseInt(key.substring(4))]; + if (core.isset(successCallback)) successCallback(); + } }) }