From 8ae4cd4fa510e5d8700c3e5baf1ec17da8abb317 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 2 Mar 2016 20:49:17 -0500 Subject: [PATCH] v0.3.4c: added callback functionality for scene changes --- .../ShatteredPixelDungeon.java | 8 ++++-- .../scenes/GameScene.java | 9 ------- .../scenes/TitleScene.java | 9 ------- .../windows/WndLangs.java | 16 ++++++++--- .../windows/WndSettings.java | 27 +++++++++++++++---- 5 files changed, 40 insertions(+), 29 deletions(-) diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 03e8496b2..2866889f0 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -195,9 +195,13 @@ public class ShatteredPixelDungeon extends Game { } } - public static void switchNoFade( Class c ) { + public static void switchNoFade(Class c){ + switchNoFade(c, null); + } + + public static void switchNoFade(Class c, SceneChangeCallback callback) { PixelScene.noFade = true; - switchScene( c ); + switchScene( c, callback ); } /* diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index e38a8fb46..8e14a294a 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -336,15 +336,6 @@ public class GameScene extends PixelScene { Camera.main.target = hero; - if (windowOnCreate != null){ - try{ - add(windowOnCreate.newInstance()); - } catch (Exception e){ - ShatteredPixelDungeon.reportException(e); - } - windowOnCreate = null; - } - if (InterlevelScene.mode != InterlevelScene.Mode.NONE) { if (Dungeon.depth < Statistics.deepestFloor) { GLog.h(Messages.get(this, "welcome_back"), Dungeon.depth); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java index aec82f88a..3cba3e53c 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java @@ -159,15 +159,6 @@ public class TitleScene extends PixelScene { btnExit.setPos( w - btnExit.width(), 0 ); add( btnExit ); - if (windowOnCreate != null){ - try{ - add(windowOnCreate.newInstance()); - } catch (Exception e){ - ShatteredPixelDungeon.reportException(e); - } - windowOnCreate = null; - } - fadeIn(); } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndLangs.java b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndLangs.java index 5825fffbe..e6633f050 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndLangs.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndLangs.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextMultiline; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.watabou.noosa.ColorBlock; +import com.watabou.noosa.Game; import com.watabou.noosa.RenderedText; import java.util.ArrayList; @@ -65,10 +66,17 @@ public class WndLangs extends Window { protected void onClick() { super.onClick(); Messages.setup(langs.get(langIndex)); - ShatteredPixelDungeon.language(langs.get(langIndex)); - RenderedText.clearCache(); - PixelScene.windowOnCreate = WndLangs.class; - ShatteredPixelDungeon.switchNoFade(TitleScene.class); + ShatteredPixelDungeon.switchNoFade(TitleScene.class, new Game.SceneChangeCallback() { + @Override + public void beforeCreate() { + ShatteredPixelDungeon.language(langs.get(langIndex)); + RenderedText.clearCache(); + } + @Override + public void afterCreate() { + Game.scene().add(new WndLangs()); + } + }); } }; if (currLang == langs.get(i)){ diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java index 273ee64f1..9c1819d3a 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java @@ -113,8 +113,17 @@ public class WndSettings extends WndTabbed { protected void onChange() { if (getSelectedValue() != ShatteredPixelDungeon.scale()) { ShatteredPixelDungeon.scale(getSelectedValue()); - PixelScene.windowOnCreate = WndSettings.class; - ShatteredPixelDungeon.switchNoFade((Class) ShatteredPixelDungeon.scene().getClass()); + ShatteredPixelDungeon.switchNoFade((Class) ShatteredPixelDungeon.scene().getClass(), new Game.SceneChangeCallback() { + @Override + public void beforeCreate() { + //do nothing + } + + @Override + public void afterCreate() { + Game.scene().add(new WndSettings()); + } + }); } } }; @@ -242,9 +251,17 @@ public class WndSettings extends WndTabbed { @Override protected void onClick() { super.onClick(); - ShatteredPixelDungeon.classicFont(!checked()); - PixelScene.windowOnCreate = WndSettings.class; - ShatteredPixelDungeon.switchNoFade((Class) ShatteredPixelDungeon.scene().getClass()); + ShatteredPixelDungeon.switchNoFade((Class) ShatteredPixelDungeon.scene().getClass(), new Game.SceneChangeCallback() { + @Override + public void beforeCreate() { + ShatteredPixelDungeon.classicFont(!checked()); + } + + @Override + public void afterCreate() { + Game.scene().add(new WndSettings()); + } + }); } }; chkFont.setRect(0, slots.bottom() + GAP_SML, WIDTH, BTN_HEIGHT);