mirror of
https://github.com/tobspr/shapez.io.git
synced 2026-03-02 03:39:21 +00:00
Unlock all levels when having a legacy savegame
This commit is contained in:
@@ -89,6 +89,14 @@ export class SavegameManager extends ReadWriteProxy {
|
||||
return new Savegame(this.app, { internalId, metaDataRef: metadata });
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns if this manager has any savegame of a 1.1.19 version, which
|
||||
* enables all levels
|
||||
*/
|
||||
getHasAnyLegacySavegames() {
|
||||
return this.currentData.savegames.some(savegame => savegame.version === 1005 || savegame.level > 14);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a savegame
|
||||
* @param {SavegameMetadata} game
|
||||
@@ -142,7 +150,9 @@ export class SavegameManager extends ReadWriteProxy {
|
||||
});
|
||||
|
||||
this.currentData.savegames.push(metaData);
|
||||
this.sortSavegames();
|
||||
|
||||
// Notice: This is async and happening in the background
|
||||
this.updateAfterSavegamesChanged();
|
||||
|
||||
return new Savegame(this.app, {
|
||||
internalId: id,
|
||||
@@ -150,8 +160,16 @@ export class SavegameManager extends ReadWriteProxy {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to import a savegame
|
||||
* @param {object} data
|
||||
*/
|
||||
importSavegame(data) {
|
||||
const savegame = this.createNewSavegame();
|
||||
|
||||
// Track legacy savegames
|
||||
const isOldSavegame = data.version < 1006;
|
||||
|
||||
const migrationResult = savegame.migrate(data);
|
||||
if (migrationResult.isBad()) {
|
||||
return Promise.reject("Failed to migrate: " + migrationResult.reason);
|
||||
@@ -163,7 +181,19 @@ export class SavegameManager extends ReadWriteProxy {
|
||||
return Promise.reject("Verification failed: " + verification.result);
|
||||
}
|
||||
|
||||
return savegame.writeSavegameAndMetadata().then(() => this.sortSavegames());
|
||||
return savegame
|
||||
.writeSavegameAndMetadata()
|
||||
.then(() => this.updateAfterSavegamesChanged())
|
||||
.then(() => this.app.restrictionMgr.onHasLegacySavegamesChanged(isOldSavegame));
|
||||
}
|
||||
|
||||
/**
|
||||
* Hook after the savegames got changed
|
||||
*/
|
||||
updateAfterSavegamesChanged() {
|
||||
return this.sortSavegames()
|
||||
.then(() => this.writeAsync())
|
||||
.then(() => this.app.restrictionMgr.onHasLegacySavegamesChanged(this.getHasAnyLegacySavegames()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,7 +242,7 @@ export class SavegameManager extends ReadWriteProxy {
|
||||
if (G_IS_DEV && globalConfig.debug.disableSavegameWrite) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
return this.sortSavegames().then(() => this.writeAsync());
|
||||
return this.updateAfterSavegamesChanged();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user