diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/Preferences.java b/src/com/shatteredpixel/shatteredpixeldungeon/Preferences.java index 63e033f76..8df740886 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/Preferences.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/Preferences.java @@ -34,6 +34,7 @@ enum Preferences { public static final String KEY_DONATED = "donated"; public static final String KEY_INTRO = "intro"; public static final String KEY_BRIGHTNESS = "brightness"; + public static final String KEY_VERSION = "version"; private SharedPreferences prefs; diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 1883354b9..f99debfb8 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -32,7 +32,7 @@ public class ShatteredPixelDungeon extends Game { public ShatteredPixelDungeon() { super( TitleScene.class ); - + /* com.watabou.utils.Bundle.addAlias( com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade.class, "com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfEnhancement" ); @@ -82,13 +82,13 @@ public class ShatteredPixelDungeon extends Game { "com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.RangersBoomerang" ); com.watabou.utils.Bundle.addAlias( com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfPower.class, - "com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy" ); + "com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy" );*/ } @SuppressWarnings("deprecation") @Override protected void onCreate( Bundle savedInstanceState ) { - super.onCreate( savedInstanceState ); + super.onCreate(savedInstanceState); /* if (android.os.Build.VERSION.SDK_INT >= 19) { getWindow().getDecorView().setSystemUiVisibility( @@ -195,6 +195,14 @@ public class ShatteredPixelDungeon extends Game { public static boolean intro() { return Preferences.INSTANCE.getBoolean( Preferences.KEY_INTRO, true ); } + + public static void version( int value) { + Preferences.INSTANCE.put( Preferences.KEY_VERSION, value ); + } + + public static int version() { + return Preferences.INSTANCE.getInt( Preferences.KEY_VERSION, 0 ); + } /* * <--- Preferences diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java index 734b57024..1dd4f625a 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java @@ -17,6 +17,7 @@ */ package com.shatteredpixel.shatteredpixeldungeon.scenes; +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.watabou.noosa.BitmapText; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; @@ -41,6 +42,14 @@ public class TitleScene extends PixelScene { public void create() { super.create(); + + //ShatteredPixelDungeon.version(5); + + int gameversion = ShatteredPixelDungeon.version(); + + if (gameversion != Game.versionCode) { + Game.switchScene(WelcomeScene.class); + } Music.INSTANCE.play( Assets.THEME, true ); Music.INSTANCE.volume( 1f ); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java new file mode 100644 index 000000000..538e4d550 --- /dev/null +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java @@ -0,0 +1,142 @@ +//TODO: update this class with relevant info as new versions come out. +package com.shatteredpixel.shatteredpixeldungeon.scenes; + +import android.content.Intent; +import android.net.Uri; + +import com.shatteredpixel.shatteredpixeldungeon.GamesInProgress; +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; +import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; +import com.watabou.input.Touchscreen.Touch; +import com.watabou.noosa.BitmapTextMultiline; +import com.watabou.noosa.Camera; +import com.watabou.noosa.Game; +import com.watabou.noosa.Image; +import com.watabou.noosa.TouchArea; +import com.shatteredpixel.shatteredpixeldungeon.effects.Flare; +import com.shatteredpixel.shatteredpixeldungeon.ui.Archs; +import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; +import com.shatteredpixel.shatteredpixeldungeon.ui.Window; + +public class WelcomeScene extends PixelScene { + + private static final String TTL_Welcome = "Welcome!"; + + private static final String TTL_LastVer = "Updated To v0.2.0"; + + private static final String TTL_Future = "Wait What?"; + + private static final String TXT_Welcome = + "Shattered Pixel Dungeon is a rework/expansion of Watabou's Pixel Dungeon.\n\n"+ + "The goal is to enhance the game by improving existing content and adding tonnes of new stuff!\n\n"+ + "Shattered Pixel Dungeon is being constantly updated, so expect more new content soon!\n\n"+ + "Happy Dungeoneering!"; + + private static final String TXT_LastVer = + "Hello early adopter, thank you so much for giving Shattered PD a try in its early stages!\n\n"+ + "This update completely overhauls rings, and as such any existing saves will have their rings removed.\n\n"+ + "If you have a game in progress with rings that you'd rather not lose, please revert to v0.1.1a.\n\n"+ + "You can simply reinstall the 0.1.1a APK from the button on the right, your saves will not be affected."; + + private static final String TXT_Future = + "It seems that your current saves are from a future version of Shatterd Pixel Dungeon.\n\n"+ + "If haven't been reverting to previous versions, please send a bug report as this shouldn't happen.\n\n"+ + "Regardless, tread with caution! Your saves may contain things which don't exist in this version, "+ + "this could cause some very weird errors to occur."; + + + private static final String LNK = "goo.gl/CwrJd6"; + + @Override + public void create() { + super.create(); + + boolean fromAlpha = false; + + int gameversion = ShatteredPixelDungeon.version(); + + BitmapTextMultiline text; + BitmapTextMultiline title; + + if (gameversion == 0){ + + GamesInProgress.Info warrior = GamesInProgress.check( HeroClass.values()[0] ); + GamesInProgress.Info mage = GamesInProgress.check( HeroClass.values()[1] ); + GamesInProgress.Info rouge = GamesInProgress.check( HeroClass.values()[2] ); + GamesInProgress.Info huntress = GamesInProgress.check( HeroClass.values()[3] ); + + if (warrior != null || mage != null || rouge != null || huntress != null){ + text = createMultiline( TXT_LastVer, 8 ); + title = createMultiline( TTL_LastVer, 12 ); + fromAlpha = true; + } else { + text = createMultiline( TXT_Welcome, 8 ); + title = createMultiline( TTL_Welcome, 16 ); + } + } else if (gameversion <= Game.versionCode) { + text = createMultiline( TXT_LastVer, 8 ); + title = createMultiline( TTL_LastVer, 12 ); + } else { + text = createMultiline( TXT_Future, 8 ); + title = createMultiline( TTL_Future, 16 ); + } + + + text.maxWidth = Math.min( Camera.main.width, 120 ); + text.measure(); + add( text ); + + text.x = align( (Camera.main.width - text.width()) / 2 ); + text.y = align( (Camera.main.height - text.height()) / 2 ); + + + + title.maxWidth = Math.min( Camera.main.width-50, 120 ); + title.measure(); + title.hardlight(Window.TITLE_COLOR); + add( title ); + + title.x = align( (Camera.main.width - title.width()) / 2 ); + title.y = align( text.y - title.height() - 10 ); + + RedButton okay = new RedButton("Okay") { + @Override + protected void onClick() { + ShatteredPixelDungeon.version(Game.versionCode); + Game.switchScene(TitleScene.class); + } + }; + if (fromAlpha) { + okay.setRect(text.x, text.y + text.height() + 5, 55, 18); + add(okay); + + RedButton revert = new RedButton("Revert") { + @Override + protected void onClick() { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + LNK)); + Game.instance.startActivity(intent); + } + }; + revert.setRect(text.x + 65, text.y + text.height() + 5, 55, 18); + add(revert); + } else { + okay.setRect(text.x, text.y + text.height() + 5, 120, 18); + add(okay); + } + + Archs archs = new Archs(); + archs.setSize( Camera.main.width, Camera.main.height ); + addToBack( archs ); + + fadeIn(); + } + + @Override + protected void onBackPressed() { + //ShatteredPixelDungeon.version(Game.versionCode); + //Game.switchScene( TitleScene.class ); + } +} + +