v2.0.0: added save support for renamed Warrior talent

This commit is contained in:
Evan Debenham
2022-12-08 13:48:55 -05:00
parent 5317c6f98e
commit b7a2e823ce
@@ -62,6 +62,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.watabou.noosa.Game;
import com.watabou.noosa.Image; import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.Emitter;
@@ -72,6 +73,7 @@ import com.watabou.utils.Random;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
public enum Talent { public enum Talent {
@@ -743,11 +745,20 @@ public enum Talent {
bundle.put("replacements", replacementsBundle); bundle.put("replacements", replacementsBundle);
} }
private static final HashMap<String, String> renamedTalents = new HashMap<>();
static{
//v2.0.0
renamedTalents.put("ADVENTURERS_INTUITION", "VETERANS_INTUITION");
}
public static void restoreTalentsFromBundle( Bundle bundle, Hero hero ){ public static void restoreTalentsFromBundle( Bundle bundle, Hero hero ){
if (bundle.contains("replacements")){ if (bundle.contains("replacements")){
Bundle replacements = bundle.getBundle("replacements"); Bundle replacements = bundle.getBundle("replacements");
for (String key : replacements.getKeys()){ for (String key : replacements.getKeys()){
hero.metamorphedTalents.put(Talent.valueOf(key), replacements.getEnum(key, Talent.class)); String value = replacements.getString(key);
if (renamedTalents.containsKey(key)) key = renamedTalents.get(key);
if (renamedTalents.containsKey(value)) value = renamedTalents.get(value);
hero.metamorphedTalents.put(Talent.valueOf(key), Talent.valueOf(value));
} }
} }
@@ -760,9 +771,12 @@ public enum Talent {
Bundle tierBundle = bundle.contains(TALENT_TIER+(i+1)) ? bundle.getBundle(TALENT_TIER+(i+1)) : null; Bundle tierBundle = bundle.contains(TALENT_TIER+(i+1)) ? bundle.getBundle(TALENT_TIER+(i+1)) : null;
if (tierBundle != null){ if (tierBundle != null){
for (Talent talent : tier.keySet()){ for (String tName : tierBundle.getKeys()){
if (tierBundle.contains(talent.name())){ int points = tierBundle.getInt(tName);
tier.put(talent, Math.min(tierBundle.getInt(talent.name()), talent.maxPoints())); if (renamedTalents.containsKey(tName)) tName = renamedTalents.get(tName);
Talent talent = Talent.valueOf(tName);
if (tier.containsKey(talent)){
tier.put(talent, Math.min(points, talent.maxPoints()));
} }
} }
} }