diff --git a/libs/actions.js b/libs/actions.js index 3e967d99..323aab20 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -2759,7 +2759,8 @@ actions.prototype._clickLocalSaveSelect = function (x, y) { "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", + LZString.compressToBase64(JSON.stringify(content))); } }; if (selection == 0) core.getAllSaves(callback); @@ -2913,12 +2914,13 @@ actions.prototype._clickReplay_replayRemain = function () { actions.prototype._clickReplay_download = function () { // if (core.hasFlag('debug')) return core.drawText("\t[系统提示]调试模式下无法下载录像"); - core.download(core.firstData.name + "_" + core.formatDate2() + ".h5route", JSON.stringify({ - 'name': core.firstData.name, - 'hard': core.status.hard, - 'seed': core.getFlag('__seed__'), - 'route': core.encodeRoute(core.status.route) - })); + core.download(core.firstData.name + "_" + core.formatDate2() + ".h5route", + LZString.compressToBase64(JSON.stringify({ + 'name': core.firstData.name, + 'hard': core.status.hard, + 'seed': core.getFlag('__seed__'), + 'route': core.encodeRoute(core.status.route) + }))); } diff --git a/libs/control.js b/libs/control.js index 4a5aa417..43212ef9 100644 --- a/libs/control.js +++ b/libs/control.js @@ -2136,7 +2136,7 @@ control.prototype._syncSave_http = function (type, saves) { var formData = new FormData(); formData.append('type', 'save'); formData.append('name', core.firstData.name); - formData.append('data', JSON.stringify(saves)); + formData.append('data', LZString.compressToBase64(JSON.stringify(saves))); formData.append('shorten', '1'); core.http("POST", "/games/sync.php", formData, function (data) { @@ -2181,7 +2181,19 @@ control.prototype._syncLoad_http = function (id, password) { core.http("POST", "/games/sync.php", formData, function (data) { var response = JSON.parse(data); if (response.code == 0) { - core.control._syncLoad_write(JSON.parse(response.msg)); + var msg = null; + try { + msg = JSON.parse(LZString.decompressFromBase64(response.msg)); + } catch (e) { + try { + msg = JSON.parse(response.msg); + } catch (e) {} + } + if (msg) { + core.control._syncLoad_write(msg); + } else { + core.drawText("出错啦!\n存档解析失败!"); + } } else { core.drawText("出错啦!\n无法从服务器同步存档。\n错误原因:"+response.msg); diff --git a/libs/events.js b/libs/events.js index b4672f9d..3585720e 100644 --- a/libs/events.js +++ b/libs/events.js @@ -217,7 +217,8 @@ events.prototype._gameOver_confirmDownload = function (ending) { 'seed': core.getFlag('__seed__'), 'route': core.encodeRoute(core.status.route) } - core.download(core.firstData.name + "_" + core.formatDate2(new Date()) + ".h5route", JSON.stringify(obj)); + core.download(core.firstData.name + "_" + core.formatDate2(new Date()) + ".h5route", + LZString.compressToBase64(JSON.stringify(obj))); core.events._gameOver_askRate(ending); }, function () { core.events._gameOver_askRate(ending); diff --git a/libs/utils.js b/libs/utils.js index 4f3d243c..b85395b9 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -1019,19 +1019,22 @@ utils.prototype.readFileContent = function (content) { core.platform.successCallback(content); return; } + // 检查base64 try { - obj = JSON.parse(content); - if (obj) { - if (core.platform.successCallback) - core.platform.successCallback(obj); - return; + obj = JSON.parse(LZString.decompressFromBase64(content)); + } catch (e) { + try { + obj = JSON.parse(content); + } catch (e) { + main.log(e) } } - catch (e) { - main.log(e); - alert(e); + + if (obj) { + if (core.platform.successCallback) + core.platform.successCallback(obj); + return; } - // alert("不是有效的JSON文件!"); if (core.platform.errorCallback) core.platform.errorCallback();