diff --git a/src/js/application.js b/src/js/application.js
index a1557263..ee913a3f 100644
--- a/src/js/application.js
+++ b/src/js/application.js
@@ -14,13 +14,10 @@ import { Vector } from "./core/vector";
import { AdProviderInterface } from "./platform/ad_provider";
import { NoAdProvider } from "./platform/ad_providers/no_ad_provider";
import { AnalyticsInterface } from "./platform/analytics";
-import { ShapezGameAnalytics } from "./platform/browser/game_analytics";
import { GoogleAnalyticsImpl } from "./platform/browser/google_analytics";
+import { NoGameAnalytics } from "./platform/browser/no_game_analytics";
import { SoundImplBrowser } from "./platform/browser/sound";
-import { StorageImplBrowser } from "./platform/browser/storage";
-import { StorageImplBrowserIndexedDB } from "./platform/browser/storage_indexed_db";
import { PlatformWrapperImplBrowser } from "./platform/browser/wrapper";
-import { StorageImplElectron } from "./platform/electron/storage";
import { PlatformWrapperImplElectron } from "./platform/electron/wrapper";
import { GameAnalyticsInterface } from "./platform/game_analytics";
import { SoundInterface } from "./platform/sound";
@@ -36,7 +33,6 @@ import { MainMenuState } from "./states/main_menu";
import { MobileWarningState } from "./states/mobile_warning";
import { PreloadState } from "./states/preload";
import { SettingsState } from "./states/settings";
-import { NoGameAnalytics } from "./platform/browser/no_game_analytics";
const logger = createLogger("application");
diff --git a/src/js/changelog.js b/src/js/changelog.js
index f875ff85..ba631df4 100644
--- a/src/js/changelog.js
+++ b/src/js/changelog.js
@@ -9,6 +9,7 @@ export const CHANGELOG = [
"You can now configure the camera movement speed when using WASD (by mini-bomba)",
"Selecting an area now is relative to the world and thus does not move when moving the screen (by Dimava)",
"Fix bug regarding number rounding",
+ "Fix app not starting when the savegames were corrupted - there is now a better error message",
],
},
{
diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js
index a2a75db9..b782155f 100644
--- a/src/js/states/main_menu.js
+++ b/src/js/states/main_menu.js
@@ -366,11 +366,19 @@ export class MainMenuState extends GameState {
this.app.adProvider.showVideoAd().then(() => {
this.app.analytics.trackUiClick("resume_game_adcomplete");
const savegame = this.app.savegameMgr.getSavegameById(game.internalId);
- savegame.readAsync().then(() => {
- this.moveToState("InGameState", {
- savegame,
+ savegame
+ .readAsync()
+ .then(() => {
+ this.moveToState("InGameState", {
+ savegame,
+ });
+ })
+ .catch(err => {
+ this.dialogs.showWarning(
+ T.dialogs.gameLoadFailure.title,
+ T.dialogs.gameLoadFailure.text + "
" + err
+ );
});
- });
});
}
diff --git a/src/js/states/preload.js b/src/js/states/preload.js
index 535d7004..eee57f05 100644
--- a/src/js/states/preload.js
+++ b/src/js/states/preload.js
@@ -138,15 +138,10 @@ export class PreloadState extends GameState {
.then(() => {
return this.app.savegameMgr.initialize().catch(err => {
logger.error("Failed to initialize savegames:", err);
- return new Promise(resolve => {
- // const { ok } = this.dialogs.showWarning(
- // T.preload.savegame_corrupt_dialog.title,
- // T.preload.savegame_corrupt_dialog.content,
- // ["ok:good"]
- // );
- // ok.add(resolve);
- alert("Your savegames failed to load. They might not show up. Sorry!");
- });
+ alert(
+ "Your savegames failed to load, it seems your data files got corrupted. I'm so sorry!\n\n(This can happen if your pc crashed while a game was saved).\n\nYou can try re-importing your savegames."
+ );
+ return this.app.savegameMgr.writeAsync();
});
})