Fix app not starting when the savegames were corrupted - there is now a better error message

This commit is contained in:
tobspr 2020-06-13 10:11:18 +02:00
parent 0521252675
commit ecbcd02abc
4 changed files with 18 additions and 18 deletions

View File

@ -14,13 +14,10 @@ import { Vector } from "./core/vector";
import { AdProviderInterface } from "./platform/ad_provider"; import { AdProviderInterface } from "./platform/ad_provider";
import { NoAdProvider } from "./platform/ad_providers/no_ad_provider"; import { NoAdProvider } from "./platform/ad_providers/no_ad_provider";
import { AnalyticsInterface } from "./platform/analytics"; import { AnalyticsInterface } from "./platform/analytics";
import { ShapezGameAnalytics } from "./platform/browser/game_analytics";
import { GoogleAnalyticsImpl } from "./platform/browser/google_analytics"; import { GoogleAnalyticsImpl } from "./platform/browser/google_analytics";
import { NoGameAnalytics } from "./platform/browser/no_game_analytics";
import { SoundImplBrowser } from "./platform/browser/sound"; 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 { PlatformWrapperImplBrowser } from "./platform/browser/wrapper";
import { StorageImplElectron } from "./platform/electron/storage";
import { PlatformWrapperImplElectron } from "./platform/electron/wrapper"; import { PlatformWrapperImplElectron } from "./platform/electron/wrapper";
import { GameAnalyticsInterface } from "./platform/game_analytics"; import { GameAnalyticsInterface } from "./platform/game_analytics";
import { SoundInterface } from "./platform/sound"; import { SoundInterface } from "./platform/sound";
@ -36,7 +33,6 @@ import { MainMenuState } from "./states/main_menu";
import { MobileWarningState } from "./states/mobile_warning"; import { MobileWarningState } from "./states/mobile_warning";
import { PreloadState } from "./states/preload"; import { PreloadState } from "./states/preload";
import { SettingsState } from "./states/settings"; import { SettingsState } from "./states/settings";
import { NoGameAnalytics } from "./platform/browser/no_game_analytics";
const logger = createLogger("application"); const logger = createLogger("application");

View File

@ -9,6 +9,7 @@ export const CHANGELOG = [
"You can now configure the camera movement speed when using WASD (by mini-bomba)", "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)", "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 bug regarding number rounding",
"Fix app not starting when the savegames were corrupted - there is now a better error message",
], ],
}, },
{ {

View File

@ -366,11 +366,19 @@ export class MainMenuState extends GameState {
this.app.adProvider.showVideoAd().then(() => { this.app.adProvider.showVideoAd().then(() => {
this.app.analytics.trackUiClick("resume_game_adcomplete"); this.app.analytics.trackUiClick("resume_game_adcomplete");
const savegame = this.app.savegameMgr.getSavegameById(game.internalId); const savegame = this.app.savegameMgr.getSavegameById(game.internalId);
savegame.readAsync().then(() => { savegame
this.moveToState("InGameState", { .readAsync()
savegame, .then(() => {
this.moveToState("InGameState", {
savegame,
});
})
.catch(err => {
this.dialogs.showWarning(
T.dialogs.gameLoadFailure.title,
T.dialogs.gameLoadFailure.text + "<br><br>" + err
);
}); });
});
}); });
} }

View File

@ -138,15 +138,10 @@ export class PreloadState extends GameState {
.then(() => { .then(() => {
return this.app.savegameMgr.initialize().catch(err => { return this.app.savegameMgr.initialize().catch(err => {
logger.error("Failed to initialize savegames:", err); logger.error("Failed to initialize savegames:", err);
return new Promise(resolve => { alert(
// const { ok } = this.dialogs.showWarning( "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."
// T.preload.savegame_corrupt_dialog.title, );
// T.preload.savegame_corrupt_dialog.content, return this.app.savegameMgr.writeAsync();
// ["ok:good"]
// );
// ok.add(resolve);
alert("Your savegames failed to load. They might not show up. Sorry!");
});
}); });
}) })