From a34e7774794314b3ab2a3de54514989c3fb3f3c7 Mon Sep 17 00:00:00 2001 From: shiyuqi129 Date: Mon, 20 Jul 2026 21:16:57 +0800 Subject: [PATCH] Make parselevel compatible with the currect version of export Try to use the level string directly when decompressing didn't work --- assets/scripts/core/level.js | 37 ++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/assets/scripts/core/level.js b/assets/scripts/core/level.js index aa239c3d..94624f35 100644 --- a/assets/scripts/core/level.js +++ b/assets/scripts/core/level.js @@ -134,22 +134,27 @@ function parseObject(objectString) { } } function parseLevel(levelString) { - let decompressedString = function (compressedString) { - let getBase64 = function (compressedString) { - let lessCluttered = compressedString.replace(/-/g, "+").replace(/_/g, "/"); - while (lessCluttered.length % 4 != 0) { - lessCluttered += "="; - } - return lessCluttered; - }(compressedString.trim()); - let decryptedString = atob(getBase64); - let rawBytes = new Uint8Array(decryptedString.length); - for (let byteStr = 0; byteStr < decryptedString.length; byteStr++) { - rawBytes[byteStr] = decryptedString.charCodeAt(byteStr); - } - let inflatedBytes = pako.inflate(rawBytes); - return new TextDecoder().decode(inflatedBytes); - }(levelString); + let decompressedString = null; + try{ + decompressedString = function (compressedString) { + let getBase64 = function (compressedString) { + let lessCluttered = compressedString.replace(/-/g, "+").replace(/_/g, "/"); + while (lessCluttered.length % 4 != 0) { + lessCluttered += "="; + } + return lessCluttered; + }(compressedString.trim()); + let decryptedString = atob(getBase64); + let rawBytes = new Uint8Array(decryptedString.length); + for (let byteStr = 0; byteStr < decryptedString.length; byteStr++) { + rawBytes[byteStr] = decryptedString.charCodeAt(byteStr); + } + let inflatedBytes = pako.inflate(rawBytes); + return new TextDecoder().decode(inflatedBytes); + }(levelString); + } catch(InvalidCharacterError) { + decompressedString = levelString; + } let stringParts = decompressedString.split(";"); let settings = stringParts.length > 0 ? stringParts[0] : ""; let objects = [];