v0.6.0: improved logic for old data conversion, dropped support for saves from before 0.4.0
This commit is contained in:
parent
c120a78239
commit
a678549dd3
|
@ -662,10 +662,8 @@ public class Dungeon {
|
||||||
|
|
||||||
public static void preview( GamesInProgress.Info info, Bundle bundle ) {
|
public static void preview( GamesInProgress.Info info, Bundle bundle ) {
|
||||||
info.depth = bundle.getInt( DEPTH );
|
info.depth = bundle.getInt( DEPTH );
|
||||||
|
info.version = bundle.getInt( VERSION );
|
||||||
info.challenges = (bundle.getInt( CHALLENGES ) != 0);
|
info.challenges = (bundle.getInt( CHALLENGES ) != 0);
|
||||||
if (info.depth == -1) {
|
|
||||||
info.depth = bundle.getInt( "maxDepth" ); // FIXME
|
|
||||||
}
|
|
||||||
Hero.preview( info, bundle.getBundle( HERO ) );
|
Hero.preview( info, bundle.getBundle( HERO ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,11 @@ public class GamesInProgress {
|
||||||
Bundle bundle = Dungeon.gameBundle( Dungeon.gameFile( cl ) );
|
Bundle bundle = Dungeon.gameBundle( Dungeon.gameFile( cl ) );
|
||||||
info = new Info();
|
info = new Info();
|
||||||
Dungeon.preview( info, bundle );
|
Dungeon.preview( info, bundle );
|
||||||
|
|
||||||
|
//saves from before 0.4.0 are not supported
|
||||||
|
if (info.version < ShatteredPixelDungeon.v0_4_0){
|
||||||
|
info = null;
|
||||||
|
}
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
info = null;
|
info = null;
|
||||||
|
@ -75,6 +80,7 @@ public class GamesInProgress {
|
||||||
public static class Info {
|
public static class Info {
|
||||||
public int depth;
|
public int depth;
|
||||||
public int level;
|
public int level;
|
||||||
|
public int version;
|
||||||
public boolean challenges;
|
public boolean challenges;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,29 +21,15 @@
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon;
|
package com.shatteredpixel.shatteredpixeldungeon;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Ooze;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM300;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Goo;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.King;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Tengu;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Yog;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Amulet;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Languages;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton;
|
||||||
import com.watabou.noosa.Game;
|
import com.watabou.noosa.Game;
|
||||||
|
@ -56,7 +42,6 @@ import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public enum Rankings {
|
public enum Rankings {
|
||||||
|
@ -211,6 +196,7 @@ public enum Rankings {
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
ShatteredPixelDungeon.reportException(e);
|
ShatteredPixelDungeon.reportException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void load() {
|
public void load() {
|
||||||
|
@ -250,11 +236,7 @@ public enum Rankings {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Record implements Bundlable {
|
public static class Record implements Bundlable {
|
||||||
|
|
||||||
//pre 0.3.4
|
|
||||||
public String info;
|
|
||||||
private static final String REASON = "reason";
|
|
||||||
|
|
||||||
//pre 0.4.1
|
//pre 0.4.1
|
||||||
public String gameFile;
|
public String gameFile;
|
||||||
private static final String FILE = "gameFile";
|
private static final String FILE = "gameFile";
|
||||||
|
@ -283,16 +265,7 @@ public enum Rankings {
|
||||||
|
|
||||||
public String desc(){
|
public String desc(){
|
||||||
if (cause == null) {
|
if (cause == null) {
|
||||||
if (info != null){
|
return Messages.get(this, "something");
|
||||||
//support for pre-0.3.4 saves
|
|
||||||
if (Messages.lang() == Languages.ENGLISH) {
|
|
||||||
return info;
|
|
||||||
} else {
|
|
||||||
return Messages.get(this, "something");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return Messages.get(this, "something");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
String result = Messages.get(cause, "rankings_desc", (Messages.get(cause, "name")));
|
String result = Messages.get(cause, "rankings_desc", (Messages.get(cause, "name")));
|
||||||
if (result.contains("!!!NO TEXT FOUND!!!")){
|
if (result.contains("!!!NO TEXT FOUND!!!")){
|
||||||
|
@ -305,31 +278,13 @@ public enum Rankings {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restoreFromBundle( Bundle bundle ) {
|
public void restoreFromBundle( Bundle bundle ) {
|
||||||
|
|
||||||
//conversion logic for pre-0.3.4 saves
|
if (bundle.contains( CAUSE )) {
|
||||||
if (bundle.contains( REASON )){
|
|
||||||
String info = bundle.getString( REASON ).toLowerCase(Locale.ENGLISH);
|
|
||||||
if (info.equals("obtained the amulet of yendor")) cause = Amulet.class;
|
|
||||||
else if (info.contains("goo")) cause = Goo.class;
|
|
||||||
else if (info.contains("tengu")) cause = Tengu.class;
|
|
||||||
else if (info.contains("dm-300")) cause = DM300.class;
|
|
||||||
else if (info.contains("king")) cause = King.class;
|
|
||||||
else if (info.contains("yog")) cause = Yog.class;
|
|
||||||
else if (info.contains("fist")) cause = Yog.class;
|
|
||||||
else if (info.contains("larva")) cause = Yog.class;
|
|
||||||
else if (info.equals("burned to ash")) cause = Burning.class;
|
|
||||||
else if (info.equals("starved to death")) cause = Hunger.class;
|
|
||||||
else if (info.equals("succumbed to poison")) cause = Poison.class;
|
|
||||||
else if (info.equals("suffocated")) cause = ToxicGas.class;
|
|
||||||
else if (info.equals("bled to death")) cause = Bleeding.class;
|
|
||||||
else if (info.equals("melted away")) cause = Ooze.class;
|
|
||||||
else if (info.equals("died on impact")) cause = Chasm.class;
|
|
||||||
//can't get the all, just keep what remains as-is
|
|
||||||
else this.info = info;
|
|
||||||
} else {
|
|
||||||
cause = bundle.getClass( CAUSE );
|
cause = bundle.getClass( CAUSE );
|
||||||
|
} else {
|
||||||
|
cause = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
win = bundle.getBoolean( WIN );
|
win = bundle.getBoolean( WIN );
|
||||||
score = bundle.getInt( SCORE );
|
score = bundle.getInt( SCORE );
|
||||||
|
|
||||||
|
@ -348,8 +303,7 @@ public enum Rankings {
|
||||||
@Override
|
@Override
|
||||||
public void storeInBundle( Bundle bundle ) {
|
public void storeInBundle( Bundle bundle ) {
|
||||||
|
|
||||||
if (info != null) bundle.put( REASON, info );
|
if (cause != null) bundle.put( CAUSE, cause );
|
||||||
else bundle.put( CAUSE, cause );
|
|
||||||
|
|
||||||
bundle.put( WIN, win );
|
bundle.put( WIN, win );
|
||||||
bundle.put( SCORE, score );
|
bundle.put( SCORE, score );
|
||||||
|
|
|
@ -43,129 +43,18 @@ import javax.microedition.khronos.opengles.GL10;
|
||||||
|
|
||||||
public class ShatteredPixelDungeon extends Game {
|
public class ShatteredPixelDungeon extends Game {
|
||||||
|
|
||||||
|
//variable constants for specific older versions of shattered, used for data conversion
|
||||||
|
//versions older than v0.4.0 are no longer supported, and data from them is ignored
|
||||||
|
public static final int v0_4_0 = 107;
|
||||||
|
public static final int v0_4_1 = 114;
|
||||||
|
public static final int v0_4_2b = 129;
|
||||||
|
|
||||||
|
public static final int v0_5_0b = 157;
|
||||||
|
|
||||||
public ShatteredPixelDungeon() {
|
public ShatteredPixelDungeon() {
|
||||||
super( WelcomeScene.class );
|
super( WelcomeScene.class );
|
||||||
|
|
||||||
// 0.2.4
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shocking.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Piercing" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shocking.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Swing" );
|
|
||||||
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicalInfusion.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfWeaponUpgrade" );
|
|
||||||
|
|
||||||
// 0.2.4d
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.LloydsBeacon" );
|
|
||||||
|
|
||||||
// 0.3.0, lots of wands
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfPoison" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFrost.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfSlowness" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFireblast.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFirebolt" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorruption.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfAmok" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTelekinesis" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFlock" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfAvalanche" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlink" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTeleportation" );
|
|
||||||
|
|
||||||
//0.3.3
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.actors.mobs.FetidRat.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost$FetidRat" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GnollTrickster.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost$GnollTrickster" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GreatCrab.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost$GreatCrab" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Wandmaker$Rotberry" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry.Seed.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Wandmaker$Rotberry$Seed" );
|
|
||||||
|
|
||||||
//0.4.0
|
|
||||||
//equipment
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.ShortSword" );
|
|
||||||
//enchants/glyphs
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Grim.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Death" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Blazing.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Fire" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Eldritch.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Horror" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Unstable.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Instability" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Vampiric.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Leech" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Lucky.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Luck" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Stunning.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Paralysis" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Venomous.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Poison" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shocking.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Shock" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Chilling.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Slow" );
|
|
||||||
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Repulsion.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Bounce" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Repulsion.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Displacement" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Potential.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.AntiEntropy" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Entanglement.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Metabolism" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Entanglement.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Multiplicity" );
|
|
||||||
com.watabou.utils.Bundle.addAlias(
|
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Repulsion.class,
|
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Stench" );
|
|
||||||
|
|
||||||
//0.6.0
|
//v0.6.0
|
||||||
com.watabou.utils.Bundle.addAlias(
|
com.watabou.utils.Bundle.addAlias(
|
||||||
com.shatteredpixel.shatteredpixeldungeon.levels.rooms.MassGraveRoom.Bones.class,
|
com.shatteredpixel.shatteredpixeldungeon.levels.rooms.MassGraveRoom.Bones.class,
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.levels.painters.MassGravePainter.Bones.class" );
|
"com.shatteredpixel.shatteredpixeldungeon.levels.painters.MassGravePainter.Bones.class" );
|
||||||
|
@ -175,6 +64,10 @@ public class ShatteredPixelDungeon extends Game {
|
||||||
com.watabou.utils.Bundle.addAlias(
|
com.watabou.utils.Bundle.addAlias(
|
||||||
com.shatteredpixel.shatteredpixeldungeon.levels.rooms.WeakFloorRoom.HiddenWell.class,
|
com.shatteredpixel.shatteredpixeldungeon.levels.rooms.WeakFloorRoom.HiddenWell.class,
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.levels.painters.WeakFloorPainter.HiddenWell.class" );
|
"com.shatteredpixel.shatteredpixeldungeon.levels.painters.WeakFloorPainter.HiddenWell.class" );
|
||||||
|
|
||||||
|
com.watabou.utils.Bundle.addAlias(
|
||||||
|
com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword.class,
|
||||||
|
"com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.NewShortSword" );
|
||||||
|
|
||||||
com.watabou.utils.Bundle.exceptionReporter =
|
com.watabou.utils.Bundle.exceptionReporter =
|
||||||
new com.watabou.utils.Bundle.BundleExceptionCallback() {
|
new com.watabou.utils.Bundle.BundleExceptionCallback() {
|
||||||
|
|
|
@ -102,20 +102,10 @@ public class Belongings implements Iterable<Item> {
|
||||||
specialKeys[((Key) item).depth] += item.quantity();
|
specialKeys[((Key) item).depth] += item.quantity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bundle.get( WEAPON ) instanceof Wand){
|
weapon = (KindOfWeapon) bundle.get(WEAPON);
|
||||||
//handles the case of an equipped wand from pre-0.3.0
|
if (weapon != null) {
|
||||||
Wand item = (Wand) bundle.get(WEAPON);
|
weapon.activate(owner);
|
||||||
//try to add the wand to inventory
|
|
||||||
if (!item.collect(backpack)){
|
|
||||||
//if it's too full, shove it in anyway
|
|
||||||
backpack.items.add(item);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
weapon = (KindOfWeapon) bundle.get(WEAPON);
|
|
||||||
if (weapon != null) {
|
|
||||||
weapon.activate(owner);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
armor = (Armor)bundle.get( ARMOR );
|
armor = (Armor)bundle.get( ARMOR );
|
||||||
|
|
|
@ -43,7 +43,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.PlateArmor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ScaleArmor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ScaleArmor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.NewShortsword;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.SewerLevel;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.SewerLevel;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
|
@ -302,7 +302,7 @@ public class Ghost extends NPC {
|
||||||
} while (!(weapon instanceof MeleeWeapon));
|
} while (!(weapon instanceof MeleeWeapon));
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
ShatteredPixelDungeon.reportException(e);
|
ShatteredPixelDungeon.reportException(e);
|
||||||
weapon = new NewShortsword();
|
weapon = new Shortsword();
|
||||||
}
|
}
|
||||||
|
|
||||||
//50%:+0, 30%:+1, 15%:+2, 5%:+3
|
//50%:+0, 30%:+1, 15%:+2, 5%:+3
|
||||||
|
|
|
@ -229,12 +229,7 @@ public class Wandmaker extends NPC {
|
||||||
|
|
||||||
if (!node.isNull() && (spawned = node.getBoolean( SPAWNED ))) {
|
if (!node.isNull() && (spawned = node.getBoolean( SPAWNED ))) {
|
||||||
|
|
||||||
//TODO remove when pre-0.3.2 saves are no longer supported
|
type = node.getInt(TYPE);
|
||||||
if (node.contains(TYPE)) {
|
|
||||||
type = node.getInt(TYPE);
|
|
||||||
} else {
|
|
||||||
type = node.getBoolean("alternative")? 1 : 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
given = node.getBoolean( GIVEN );
|
given = node.getBoolean( GIVEN );
|
||||||
|
|
||||||
|
|
|
@ -113,12 +113,12 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Knuckles;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.NewShortsword;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Quarterstaff;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Quarterstaff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RunicBlade;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RunicBlade;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sai;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sai;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Scimitar;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Scimitar;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Spear;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Spear;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
|
||||||
|
@ -273,7 +273,7 @@ public class Generator {
|
||||||
Category.WEP_T1.probs = new float[]{ 1, 1, 1, 0, 0, 1 };
|
Category.WEP_T1.probs = new float[]{ 1, 1, 1, 0, 0, 1 };
|
||||||
|
|
||||||
Category.WEP_T2.classes = new Class<?>[]{
|
Category.WEP_T2.classes = new Class<?>[]{
|
||||||
NewShortsword.class,
|
Shortsword.class,
|
||||||
HandAxe.class,
|
HandAxe.class,
|
||||||
Spear.class,
|
Spear.class,
|
||||||
Quarterstaff.class,
|
Quarterstaff.class,
|
||||||
|
|
|
@ -40,7 +40,6 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
|
@ -430,7 +429,6 @@ public class Item implements Bundlable {
|
||||||
private static final String LEVEL_KNOWN = "levelKnown";
|
private static final String LEVEL_KNOWN = "levelKnown";
|
||||||
private static final String CURSED = "cursed";
|
private static final String CURSED = "cursed";
|
||||||
private static final String CURSED_KNOWN = "cursedKnown";
|
private static final String CURSED_KNOWN = "cursedKnown";
|
||||||
private static final String OLDSLOT = "quickslot";
|
|
||||||
private static final String QUICKSLOT = "quickslotpos";
|
private static final String QUICKSLOT = "quickslotpos";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -462,10 +460,7 @@ public class Item implements Bundlable {
|
||||||
|
|
||||||
//only want to populate slot on first load.
|
//only want to populate slot on first load.
|
||||||
if (Dungeon.hero == null) {
|
if (Dungeon.hero == null) {
|
||||||
//support for pre-0.2.3 saves and rankings
|
if (bundle.contains(QUICKSLOT)) {
|
||||||
if (bundle.contains(OLDSLOT)) {
|
|
||||||
Dungeon.quickslot.setSlot(0, this);
|
|
||||||
} else if (bundle.contains(QUICKSLOT)) {
|
|
||||||
Dungeon.quickslot.setSlot(bundle.getInt(QUICKSLOT), this);
|
Dungeon.quickslot.setSlot(bundle.getInt(QUICKSLOT), this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,20 +89,8 @@ abstract public class ClassArmor extends Armor {
|
||||||
@Override
|
@Override
|
||||||
public void restoreFromBundle( Bundle bundle ) {
|
public void restoreFromBundle( Bundle bundle ) {
|
||||||
super.restoreFromBundle( bundle );
|
super.restoreFromBundle( bundle );
|
||||||
//logic for pre-0.4.0 saves
|
|
||||||
if (bundle.contains( "DR" )){
|
armorTier = bundle.getInt( ARMOR_TIER );
|
||||||
//we just assume tier-4 or tier-5 armor was used.
|
|
||||||
int DR = bundle.getInt( "DR" );
|
|
||||||
if (DR % 5 == 0){
|
|
||||||
level((DR - 10)/5);
|
|
||||||
armorTier = 5;
|
|
||||||
} else {
|
|
||||||
level((DR - 8)/4);
|
|
||||||
armorTier = 4;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
armorTier = bundle.getInt( ARMOR_TIER );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -170,12 +170,6 @@ public class UnstableSpellbook extends Artifact {
|
||||||
super.restoreFromBundle(bundle);
|
super.restoreFromBundle(bundle);
|
||||||
scrolls.clear();
|
scrolls.clear();
|
||||||
Collections.addAll(scrolls, bundle.getClassArray(SCROLLS));
|
Collections.addAll(scrolls, bundle.getClassArray(SCROLLS));
|
||||||
if (scrolls.contains(null)){
|
|
||||||
//compatability with pre-0.3.4, just give them a maxed book.
|
|
||||||
scrolls.clear();
|
|
||||||
level(levelCap);
|
|
||||||
chargeCap = 8;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class bookRecharge extends ArtifactBuff{
|
public class bookRecharge extends ArtifactBuff{
|
||||||
|
|
|
@ -23,8 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
|
||||||
//this class is named as such to avoid conflicts with the ShortSword class, from pre-0.4.0
|
public class Shortsword extends MeleeWeapon {
|
||||||
public class NewShortsword extends MeleeWeapon {
|
|
||||||
|
|
||||||
{
|
{
|
||||||
image = ItemSpriteSheet.SHORTSWORD;
|
image = ItemSpriteSheet.SHORTSWORD;
|
|
@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
|
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
|
@ -305,6 +306,11 @@ public abstract class Level implements Bundlable {
|
||||||
public void restoreFromBundle( Bundle bundle ) {
|
public void restoreFromBundle( Bundle bundle ) {
|
||||||
|
|
||||||
version = bundle.getInt( VERSION );
|
version = bundle.getInt( VERSION );
|
||||||
|
|
||||||
|
//saves from before 0.4.0 are not supported
|
||||||
|
if (version < ShatteredPixelDungeon.v0_4_0){
|
||||||
|
throw new RuntimeException("old save");
|
||||||
|
}
|
||||||
|
|
||||||
if (bundle.contains("width") && bundle.contains("height")){
|
if (bundle.contains("width") && bundle.contains("height")){
|
||||||
width = bundle.getInt("width");
|
width = bundle.getInt("width");
|
||||||
|
@ -334,13 +340,8 @@ public abstract class Level implements Bundlable {
|
||||||
|
|
||||||
weakFloorCreated = false;
|
weakFloorCreated = false;
|
||||||
|
|
||||||
//for pre-0.3.0c saves
|
|
||||||
if (version < 44){
|
|
||||||
map = Terrain.convertTrapsFrom43( map, traps );
|
|
||||||
}
|
|
||||||
|
|
||||||
//for pre-0.4.3 saves
|
//for pre-0.4.3 saves
|
||||||
if (version < 130){
|
if (version <= ShatteredPixelDungeon.v0_4_2b){
|
||||||
map = Terrain.convertTilesFrom129( map );
|
map = Terrain.convertTilesFrom129( map );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,17 +21,6 @@
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.levels;
|
package com.shatteredpixel.shatteredpixeldungeon.levels;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.FireTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.GrippingTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.LightningTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ParalyticTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.PoisonTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ToxicTrap;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
|
||||||
import com.watabou.utils.SparseArray;
|
|
||||||
|
|
||||||
public class Terrain {
|
public class Terrain {
|
||||||
|
|
||||||
public static final int CHASM = 0;
|
public static final int CHASM = 0;
|
||||||
|
@ -146,72 +135,4 @@ public class Terrain {
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
//converts terrain values from pre versioncode 44 (0.3.0c) saves
|
|
||||||
//TODO: remove when no longer supporting saves from 0.3.0b and under
|
|
||||||
public static int[] convertTrapsFrom43( int[] map, SparseArray<Trap> traps){
|
|
||||||
for (int i = 0; i < map.length; i++){
|
|
||||||
|
|
||||||
int c = map[i];
|
|
||||||
|
|
||||||
//non-trap tiles getting their values shifted around
|
|
||||||
if (c >= 24 && c <= 26) {
|
|
||||||
c -= 4; //24-26 becomes 20-22
|
|
||||||
} else if (c == 29) {
|
|
||||||
c = 23; //29 becomes 23
|
|
||||||
} else if ( c >= 34 && c <= 36) {
|
|
||||||
c -= 10; //34-36 becomes 24-26
|
|
||||||
} else if ( c >= 41 && c <= 46) {
|
|
||||||
c -= 14; //41-46 becomes 27-32
|
|
||||||
}
|
|
||||||
|
|
||||||
//trap tiles, must be converted to general trap tiles and specific traps instantiated
|
|
||||||
else if (c >= 17 && c <= 40){
|
|
||||||
//this is going to be messy...
|
|
||||||
Trap trap = null;
|
|
||||||
switch(c){
|
|
||||||
case 17: trap = new ToxicTrap().reveal(); break;
|
|
||||||
case 18: trap = new ToxicTrap().hide(); break;
|
|
||||||
|
|
||||||
case 19: trap = new FireTrap().reveal(); break;
|
|
||||||
case 20: trap = new FireTrap().hide(); break;
|
|
||||||
|
|
||||||
case 21: trap = new ParalyticTrap().reveal(); break;
|
|
||||||
case 22: trap = new ParalyticTrap().hide(); break;
|
|
||||||
|
|
||||||
case 23:
|
|
||||||
c = INACTIVE_TRAP;
|
|
||||||
trap = null;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 27: trap = new PoisonTrap().reveal(); break;
|
|
||||||
case 28: trap = new PoisonTrap().hide(); break;
|
|
||||||
|
|
||||||
case 30: trap = new AlarmTrap().reveal(); break;
|
|
||||||
case 31: trap = new AlarmTrap().hide(); break;
|
|
||||||
|
|
||||||
case 32: trap = new LightningTrap().reveal(); break;
|
|
||||||
case 33: trap = new LightningTrap().hide(); break;
|
|
||||||
|
|
||||||
case 37: trap = new GrippingTrap().reveal(); break;
|
|
||||||
case 38: trap = new GrippingTrap().hide(); break;
|
|
||||||
|
|
||||||
case 39: trap = new SummoningTrap().reveal(); break;
|
|
||||||
case 40: trap = new SummoningTrap().hide(); break;
|
|
||||||
}
|
|
||||||
if (trap != null){
|
|
||||||
trap.set( i );
|
|
||||||
traps.put( trap.pos, trap );
|
|
||||||
if (trap.visible)
|
|
||||||
c = TRAP;
|
|
||||||
else
|
|
||||||
c = SECRET_TRAP;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
map[i] = c;
|
|
||||||
}
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class Room extends Rect implements Graph.Node, Bundlable {
|
||||||
STANDARD ( StandardRoom.class ),
|
STANDARD ( StandardRoom.class ),
|
||||||
ENTRANCE ( EntranceRoom.class ),
|
ENTRANCE ( EntranceRoom.class ),
|
||||||
EXIT ( ExitRoom.class ),
|
EXIT ( ExitRoom.class ),
|
||||||
TUNNEL ( MazeRoom.class ),
|
TUNNEL ( TunnelRoom.class ),
|
||||||
PASSAGE ( PassageRoom.class ),
|
PASSAGE ( PassageRoom.class ),
|
||||||
SHOP ( ShopRoom.class ),
|
SHOP ( ShopRoom.class ),
|
||||||
BLACKSMITH ( BlacksmithRoom.class ),
|
BLACKSMITH ( BlacksmithRoom.class ),
|
||||||
|
|
|
@ -58,7 +58,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatsword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.HandAxe;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.HandAxe;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.NewShortsword;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.CurareDart;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.CurareDart;
|
||||||
|
@ -129,7 +129,7 @@ public class ShopRoom extends Room {
|
||||||
|
|
||||||
switch (Dungeon.depth) {
|
switch (Dungeon.depth) {
|
||||||
case 6:
|
case 6:
|
||||||
itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new NewShortsword().identify() : new HandAxe()).identify() );
|
itemsToSpawn.add( (Random.Int( 2 ) == 0 ? new Shortsword().identify() : new HandAxe()).identify() );
|
||||||
itemsToSpawn.add( Random.Int( 2 ) == 0 ?
|
itemsToSpawn.add( Random.Int( 2 ) == 0 ?
|
||||||
new IncendiaryDart().quantity(Random.NormalIntRange(2, 4)) :
|
new IncendiaryDart().quantity(Random.NormalIntRange(2, 4)) :
|
||||||
new CurareDart().quantity(Random.NormalIntRange(1, 3)));
|
new CurareDart().quantity(Random.NormalIntRange(1, 3)));
|
||||||
|
|
|
@ -173,8 +173,9 @@ public class InterlevelScene extends PixelScene {
|
||||||
case STATIC:
|
case STATIC:
|
||||||
if (error != null) {
|
if (error != null) {
|
||||||
String errorMsg;
|
String errorMsg;
|
||||||
if (error instanceof FileNotFoundException) errorMsg = Messages.get(this, "file_not_found");
|
if (error instanceof FileNotFoundException) errorMsg = Messages.get(this, "file_not_found");
|
||||||
else if (error instanceof IOException) errorMsg = Messages.get(this, "io_error");
|
else if (error instanceof IOException) errorMsg = Messages.get(this, "io_error");
|
||||||
|
else if (error.getMessage().equals("old save")) errorMsg = Messages.get(this, "io_error");
|
||||||
|
|
||||||
else throw new RuntimeException("fatal error occured while moving between floors", error);
|
else throw new RuntimeException("fatal error occured while moving between floors", error);
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.scenes;
|
package com.shatteredpixel.shatteredpixeldungeon.scenes;
|
||||||
|
|
||||||
import android.opengl.GLES20;
|
import android.opengl.GLES20;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Rankings;
|
import com.shatteredpixel.shatteredpixeldungeon.Rankings;
|
||||||
|
@ -36,10 +37,11 @@ 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 javax.microedition.khronos.opengles.GL10;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
|
|
||||||
public class WelcomeScene extends PixelScene {
|
public class WelcomeScene extends PixelScene {
|
||||||
|
|
||||||
private static int LATEST_UPDATE = 157;
|
private static int LATEST_UPDATE = 157;
|
||||||
|
@ -152,28 +154,34 @@ public class WelcomeScene extends PixelScene {
|
||||||
|
|
||||||
private void updateVersion(int previousVersion){
|
private void updateVersion(int previousVersion){
|
||||||
//rankings conversion
|
//rankings conversion
|
||||||
if (previousVersion <= 114){
|
if (previousVersion <= ShatteredPixelDungeon.v0_4_1){
|
||||||
Rankings.INSTANCE.load();
|
try {
|
||||||
for (Rankings.Record rec : Rankings.INSTANCE.records){
|
Rankings.INSTANCE.load();
|
||||||
if (rec.gameFile != null) {
|
for (Rankings.Record rec : Rankings.INSTANCE.records) {
|
||||||
try {
|
if (rec.gameFile != null) {
|
||||||
Dungeon.loadGame(rec.gameFile, false);
|
try {
|
||||||
rec.gameID = rec.gameFile.replaceAll("\\D", "");
|
Dungeon.loadGame(rec.gameFile, false);
|
||||||
|
rec.gameID = rec.gameFile.replaceAll("\\D", "");
|
||||||
Rankings.INSTANCE.saveGameData(rec);
|
|
||||||
} catch (Exception e) {
|
Rankings.INSTANCE.saveGameData(rec);
|
||||||
rec.gameID = rec.gameFile.replaceAll("\\D", "");
|
} catch (Exception e) {
|
||||||
rec.gameData = null;
|
rec.gameID = rec.gameFile.replaceAll("\\D", "");
|
||||||
|
rec.gameData = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
String file = rec.gameFile;
|
||||||
|
rec.gameFile = "";
|
||||||
|
Game.instance.deleteFile(file);
|
||||||
|
} else if (rec.gameID == null) {
|
||||||
|
rec.gameID = UUID.randomUUID().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
String file = rec.gameFile;
|
|
||||||
rec.gameFile = "";
|
|
||||||
Game.instance.deleteFile(file);
|
|
||||||
} else if (rec.gameID == null){
|
|
||||||
rec.gameID = UUID.randomUUID().toString();
|
|
||||||
}
|
}
|
||||||
|
Rankings.INSTANCE.save();
|
||||||
|
} catch (Exception e) {
|
||||||
|
//if we encounter a fatal error, then just clear the rankings
|
||||||
|
Game.instance.deleteFile( Rankings.RANKINGS_FILE );
|
||||||
}
|
}
|
||||||
Rankings.INSTANCE.save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ShatteredPixelDungeon.version(ShatteredPixelDungeon.versionCode);
|
ShatteredPixelDungeon.version(ShatteredPixelDungeon.versionCode);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user