v0.3.4c: added callback functionality for scene changes

This commit is contained in:
Evan Debenham 2016-03-02 20:49:17 -05:00
parent e5e90b2696
commit 8ae4cd4fa5
5 changed files with 40 additions and 29 deletions

View File

@ -195,9 +195,13 @@ public class ShatteredPixelDungeon extends Game {
} }
} }
public static void switchNoFade( Class<? extends PixelScene> c ) { public static void switchNoFade(Class<? extends PixelScene> c){
switchNoFade(c, null);
}
public static void switchNoFade(Class<? extends PixelScene> c, SceneChangeCallback callback) {
PixelScene.noFade = true; PixelScene.noFade = true;
switchScene( c ); switchScene( c, callback );
} }
/* /*

View File

@ -336,15 +336,6 @@ public class GameScene extends PixelScene {
Camera.main.target = hero; 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 (InterlevelScene.mode != InterlevelScene.Mode.NONE) {
if (Dungeon.depth < Statistics.deepestFloor) { if (Dungeon.depth < Statistics.deepestFloor) {
GLog.h(Messages.get(this, "welcome_back"), Dungeon.depth); GLog.h(Messages.get(this, "welcome_back"), Dungeon.depth);

View File

@ -159,15 +159,6 @@ public class TitleScene extends PixelScene {
btnExit.setPos( w - btnExit.width(), 0 ); btnExit.setPos( w - btnExit.width(), 0 );
add( btnExit ); add( btnExit );
if (windowOnCreate != null){
try{
add(windowOnCreate.newInstance());
} catch (Exception e){
ShatteredPixelDungeon.reportException(e);
}
windowOnCreate = null;
}
fadeIn(); fadeIn();
} }

View File

@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextMultiline; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextMultiline;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.ColorBlock; import com.watabou.noosa.ColorBlock;
import com.watabou.noosa.Game;
import com.watabou.noosa.RenderedText; import com.watabou.noosa.RenderedText;
import java.util.ArrayList; import java.util.ArrayList;
@ -65,10 +66,17 @@ public class WndLangs extends Window {
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();
Messages.setup(langs.get(langIndex)); Messages.setup(langs.get(langIndex));
ShatteredPixelDungeon.language(langs.get(langIndex)); ShatteredPixelDungeon.switchNoFade(TitleScene.class, new Game.SceneChangeCallback() {
RenderedText.clearCache(); @Override
PixelScene.windowOnCreate = WndLangs.class; public void beforeCreate() {
ShatteredPixelDungeon.switchNoFade(TitleScene.class); ShatteredPixelDungeon.language(langs.get(langIndex));
RenderedText.clearCache();
}
@Override
public void afterCreate() {
Game.scene().add(new WndLangs());
}
});
} }
}; };
if (currLang == langs.get(i)){ if (currLang == langs.get(i)){

View File

@ -113,8 +113,17 @@ public class WndSettings extends WndTabbed {
protected void onChange() { protected void onChange() {
if (getSelectedValue() != ShatteredPixelDungeon.scale()) { if (getSelectedValue() != ShatteredPixelDungeon.scale()) {
ShatteredPixelDungeon.scale(getSelectedValue()); ShatteredPixelDungeon.scale(getSelectedValue());
PixelScene.windowOnCreate = WndSettings.class; ShatteredPixelDungeon.switchNoFade((Class<? extends PixelScene>) ShatteredPixelDungeon.scene().getClass(), new Game.SceneChangeCallback() {
ShatteredPixelDungeon.switchNoFade((Class<? extends PixelScene>) ShatteredPixelDungeon.scene().getClass()); @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 @Override
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();
ShatteredPixelDungeon.classicFont(!checked()); ShatteredPixelDungeon.switchNoFade((Class<? extends PixelScene>) ShatteredPixelDungeon.scene().getClass(), new Game.SceneChangeCallback() {
PixelScene.windowOnCreate = WndSettings.class; @Override
ShatteredPixelDungeon.switchNoFade((Class<? extends PixelScene>) ShatteredPixelDungeon.scene().getClass()); 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); chkFont.setRect(0, slots.bottom() + GAP_SML, WIDTH, BTN_HEIGHT);