v2.1.0: updating the game now also re-saved badges and journal entries

This commit is contained in:
Evan Debenham
2023-04-25 14:21:32 -04:00
parent d6dba23dd4
commit 8c7bb67b8f
3 changed files with 25 additions and 13 deletions
@@ -289,8 +289,12 @@ public class Badges {
} }
} }
public static void saveGlobal() { public static void saveGlobal(){
if (saveNeeded) { saveGlobal(false);
}
public static void saveGlobal(boolean force) {
if (saveNeeded || force) {
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
store( bundle, global ); store( bundle, global );
@@ -54,9 +54,13 @@ public class Journal {
//package-private //package-private
static boolean saveNeeded = false; static boolean saveNeeded = false;
public static void saveGlobal(){ public static void saveGlobal(){
if (!saveNeeded){ saveGlobal(false);
}
public static void saveGlobal(boolean force){
if (!force && !saveNeeded){
return; return;
} }
@@ -239,6 +239,17 @@ public class WelcomeScene extends PixelScene {
//update rankings, to update any data which may be outdated //update rankings, to update any data which may be outdated
if (previousVersion < LATEST_UPDATE){ if (previousVersion < LATEST_UPDATE){
Badges.loadGlobal();
Journal.loadGlobal();
//pre-unlock Duelist for those who already have a win
if (previousVersion <= ShatteredPixelDungeon.v2_0_0){
if (Badges.isUnlocked(Badges.Badge.VICTORY) && !Badges.isUnlocked(Badges.Badge.UNLOCK_DUELIST)){
Badges.unlock(Badges.Badge.UNLOCK_DUELIST);
}
}
try { try {
Rankings.INSTANCE.load(); Rankings.INSTANCE.load();
for (Rankings.Record rec : Rankings.INSTANCE.records.toArray(new Rankings.Record[0])){ for (Rankings.Record rec : Rankings.INSTANCE.records.toArray(new Rankings.Record[0])){
@@ -270,16 +281,9 @@ public class WelcomeScene extends PixelScene {
} }
Dungeon.daily = Dungeon.dailyReplay = false; Dungeon.daily = Dungeon.dailyReplay = false;
} Badges.saveGlobal(true);
Journal.saveGlobal(true);
//pre-unlock Duelist for those who already have a win
if (previousVersion <= ShatteredPixelDungeon.v2_0_0){
Badges.loadGlobal();
if (Badges.isUnlocked(Badges.Badge.VICTORY) && !Badges.isUnlocked(Badges.Badge.UNLOCK_DUELIST)){
Dungeon.customSeedText = ""; //clear in case rankings updating left this set
Badges.unlock(Badges.Badge.UNLOCK_DUELIST);
Badges.saveGlobal();
}
} }
SPDSettings.version(ShatteredPixelDungeon.versionCode); SPDSettings.version(ShatteredPixelDungeon.versionCode);