diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 8d49750..6363aea 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -11,8 +11,8 @@ android {
applicationId = "me.lecaro.breakout"
minSdk = 21
targetSdk = 34
- versionCode = 29060048
- versionName = "29060048"
+ versionCode = 29060103
+ versionName = "29060103"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
diff --git a/app/src/main/assets/index.html b/app/src/main/assets/index.html
index 0883a17..ab73a6c 100644
--- a/app/src/main/assets/index.html
+++ b/app/src/main/assets/index.html
@@ -1 +1 @@
-
Breakout 71
\ No newline at end of file
+Breakout 71
\ No newline at end of file
diff --git a/dist/index.html b/dist/index.html
index f514ede..b8d4beb 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -719,6 +719,7 @@ var _help = require("./help");
var _creative = require("./creative");
var _tooltip = require("./tooltip");
var _startingPerks = require("./startingPerks");
+var _migrations = require("./migrations");
async function play() {
if (await applyFullScreenChoice()) return;
if (gameState.running) return;
@@ -1431,7 +1432,7 @@ tick();
(0, _tooltip.setupTooltips)();
document.getElementById("menu")?.setAttribute("data-tooltip", (0, _i18N.t)("play.menu_tooltip"));
-},{"./loadGameData":"l1B4x","./sounds":"dQKPV","./game_utils":"cEeac","./PWA/sw_loader":"2n0gK","./i18n/i18n":"eNPRm","./settings":"5blfu","./gameStateMutators":"9ZeQl","./render":"9AS2t","./recording":"godmD","./newGameState":"aQN6X","./asyncAlert":"rSqLY","./options":"d5NoS","./getLevelBackground":"7OIPf","./pure_functions":"6pQh7","./help":"bqkdF","./creative":"63kYJ","./tooltip":"3RWxb","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3","./startingPerks":"lv30m"}],"l1B4x":[function(require,module,exports,__globalThis) {
+},{"./loadGameData":"l1B4x","./sounds":"dQKPV","./game_utils":"cEeac","./PWA/sw_loader":"2n0gK","./i18n/i18n":"eNPRm","./settings":"5blfu","./gameStateMutators":"9ZeQl","./render":"9AS2t","./recording":"godmD","./newGameState":"aQN6X","./asyncAlert":"rSqLY","./options":"d5NoS","./getLevelBackground":"7OIPf","./pure_functions":"6pQh7","./help":"bqkdF","./creative":"63kYJ","./tooltip":"3RWxb","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3","./startingPerks":"lv30m","./migrations":"a9qdY"}],"l1B4x":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
parcelHelpers.defineInteropFlag(exports);
parcelHelpers.export(exports, "appVersion", ()=>appVersion);
@@ -1474,7 +1475,7 @@ const upgrades = (0, _upgrades.rawUpgrades).map((u)=>({
}));
},{"./data/palette.json":"ktRBU","./data/levels.json":"8JSUc","./data/version.json":"iyP6E","./upgrades":"1u3Dx","./getLevelBackground":"7OIPf","./levelIcon":"6rQoT","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"iyP6E":[function(require,module,exports,__globalThis) {
-module.exports = JSON.parse("\"29060048\"");
+module.exports = JSON.parse("\"29060103\"");
},{}],"1u3Dx":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
@@ -2804,13 +2805,6 @@ function highScoreForMode(mode) {
} catch (e) {}
return "";
}
-try {
- const old = localStorage.getItem("breakout-3-hs");
- if (old) {
- localStorage.setItem("breakout-3-hs-short", old);
- localStorage.removeItem("breakout-3-hs");
- }
-} catch (e) {}
},{"./loadGameData":"l1B4x","./i18n/i18n":"eNPRm","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"2n0gK":[function(require,module,exports,__globalThis) {
var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
@@ -5055,7 +5049,34 @@ async function openStartingPerksEditor() {
}
}
-},{"./asyncAlert":"rSqLY","./i18n/i18n":"eNPRm","./loadGameData":"l1B4x","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3","./settings":"5blfu"}]},["gVqJ6","67XFf"], "67XFf", "parcelRequire94c2")
+},{"./asyncAlert":"rSqLY","./i18n/i18n":"eNPRm","./loadGameData":"l1B4x","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3","./settings":"5blfu"}],"a9qdY":[function(require,module,exports,__globalThis) {
+var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");
+parcelHelpers.defineInteropFlag(exports);
+function migrate(name, cb) {
+ if (!localStorage.getItem(name)) try {
+ cb();
+ console.debug("Ran migration : " + name);
+ localStorage.setItem(name, "" + Date.now());
+ } catch (e) {
+ console.warn("Migration " + name + " failed : ", e);
+ }
+}
+migrate("migrate_high_scores", ()=>{
+ const old = localStorage.getItem("breakout-3-hs");
+ if (old) {
+ localStorage.setItem("breakout-3-hs-short", old);
+ localStorage.removeItem("breakout-3-hs");
+ }
+});
+migrate("recover_high_scores", ()=>{
+ let runsHistory = JSON.parse(localStorage.getItem("breakout_71_runs_history") || "[]");
+ runsHistory.forEach((r)=>{
+ const currentHS = parseInt(localStorage.getItem("breakout-3-hs-" + (r.mode || "short")) || "0");
+ if (r.score > currentHS) localStorage.setItem("breakout-3-hs-" + (r.mode || "short"), "" + r.score);
+ });
+});
+
+},{"@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}]},["gVqJ6","67XFf"], "67XFf", "parcelRequire94c2")