Fix localSave
This commit is contained in:
parent
49b9f2f79c
commit
12ef8f7b8f
@ -68,10 +68,42 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var _export = function () {
|
||||
var toExport = [];
|
||||
|
||||
localforage.iterate(function (value, key, n) {
|
||||
if (value == null || !key.startsWith(core.firstData.name)) return;
|
||||
value = core.decompress(value);
|
||||
if (value == null) return;
|
||||
var str = JSON.stringify(value).replace(/[\u007F-\uFFFF]/g, function (chr) {
|
||||
return "\\u" + ("0000" + chr.charCodeAt(0).toString(16)).substr(-4)
|
||||
});
|
||||
str = LZString.compressToBase64(str);
|
||||
toExport.push(key);
|
||||
core.saves.cache[key] = str;
|
||||
fs.writeFile('_saves/' + key, str, 'utf-8', function () {});
|
||||
}, function () {
|
||||
if (toExport.length > 0) {
|
||||
alert('提示!本塔已开启存档本地化!原始存档已全部导出至 _saves/ 目录下。');
|
||||
}
|
||||
fs.writeFile('_saves/.exported', '1', 'utf-8', function () {});
|
||||
rewrite();
|
||||
core.control.getSaveIndexes(function (indexes) { core.saves.ids = indexes; });
|
||||
});
|
||||
}
|
||||
|
||||
fs.mkdir('_saves', function (err) {
|
||||
if (err) return;
|
||||
rewrite();
|
||||
core.control.getSaveIndexes(function (indexes) { core.saves.ids = indexes; });
|
||||
|
||||
fs.readFile('_saves/.exported', 'utf-8', function(err, data) {
|
||||
if (!err && data) {
|
||||
rewrite();
|
||||
core.control.getSaveIndexes(function (indexes) { core.saves.ids = indexes; });
|
||||
return;
|
||||
}
|
||||
_export();
|
||||
});
|
||||
});
|
||||
})();
|
||||
|
||||
|
||||
@ -590,7 +590,7 @@ actions.prototype._sys_ondown = function (x, y, px, py) {
|
||||
core.status.preview.dragging = true;
|
||||
core.drawTip('已进入预览模式,可直接拖动大地图');
|
||||
core.status.stepPostfix = [];
|
||||
}, 600);
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2054,18 +2054,14 @@ control.prototype._doSL_replayLoad_afterGet = function (id, data) {
|
||||
core.playSound('操作失败');
|
||||
return core.drawTip("存档版本不匹配");
|
||||
}
|
||||
if (data.hard != core.status.hard) {
|
||||
core.playSound('操作失败');
|
||||
return core.drawTip("游戏难度不匹配!");
|
||||
}
|
||||
if (data.hero.flags.__events__ && data.guid != core.getGuid()) {
|
||||
core.playSound('操作失败');
|
||||
return core.drawTip("此存档可能存在风险,无法读档");
|
||||
}
|
||||
var route = core.subarray(core.status.route, core.decodeRoute(data.route));
|
||||
if (route == null || data.hero.flags.__seed__ != core.getFlag('__seed__')) {
|
||||
if (route == null) {
|
||||
core.playSound('操作失败');
|
||||
return core.drawTip("种子不一致,无法从此存档回放录像");
|
||||
return core.drawTip("无法从此存档回放录像");
|
||||
}
|
||||
core.loadData(data, function () {
|
||||
core.removeFlag('__fromLoad__');
|
||||
|
||||
@ -518,26 +518,28 @@ utils.prototype.formatBigNumber = function (x, digits) {
|
||||
x = Math.trunc(parseFloat(x)); // 尝试识别为小数,然后向0取整
|
||||
if (x == null || !Number.isFinite(x)) return '???'; // 无法识别的数或正负无穷大,显示'???'
|
||||
var units = [ // 单位及其后缀字母,可自定义,如改成千进制下的K、M、G、T、P
|
||||
{ "val": 1e20, "suffix": "g" },
|
||||
{ "val": 1e16, "suffix": "j" },
|
||||
{ "val": 1e12, "suffix": "z" },
|
||||
{ "val": 1e4, "suffix": "w" },
|
||||
{ "val": 1e8, "suffix": "e" },
|
||||
{ "val": 10000, "suffix": "w" },
|
||||
{ "val": 1e12, "suffix": "z" },
|
||||
{ "val": 1e16, "suffix": "j" },
|
||||
{ "val": 1e20, "suffix": "g" },
|
||||
];
|
||||
if (Math.abs(x) > units[0].val * Math.pow(10, digits - 2))
|
||||
if (Math.abs(x) > 1e20 * Math.pow(10, digits - 2))
|
||||
return x.toExponential(0); // 绝对值过大以致于失去精度的数,直接使用科学记数法,系数只保留整数
|
||||
var sign = x < 0 ? '-' : '';
|
||||
if (sign) --digits; // 符号位单独处理,负号要占一位
|
||||
x = Math.abs(x);
|
||||
if (x.toString().length <= digits) return sign + x;
|
||||
for (var i = 0; i < units.length; ++i) { // 从大到小尝试选取合适的单位
|
||||
var each = units[i];
|
||||
if (x >= each.val) {
|
||||
var v = x / each.val;
|
||||
return sign + v.toFixed(Math.max(0, Math.floor(digits - 2 - Math.log10(v + 1)))) + each.suffix;
|
||||
}
|
||||
}
|
||||
return sign + x;
|
||||
|
||||
if (x < Math.pow(10, digits)) return sign + x;
|
||||
|
||||
for (var i = 0; i < units.length; ++i) {
|
||||
var each = units[i];
|
||||
var u = (x / each.val).toFixed(digits).substring(0, digits);
|
||||
if (u.indexOf('.') < 0) continue;
|
||||
u = u.substring(0, u[u.length - 2] == '.' ? u.length - 2 : u.length - 1);
|
||||
return sign + u + each.suffix;
|
||||
}
|
||||
return sign + x.toExponential(0);
|
||||
}
|
||||
|
||||
////// 变速移动 //////
|
||||
|
||||
Loading…
Reference in New Issue
Block a user