diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index 504ecaa6c..8f8ca1dc9 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -52,6 +52,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.plants.Plant; +import com.shatteredpixel.shatteredpixeldungeon.services.Services; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DiscardedItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; @@ -336,6 +337,15 @@ 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/PixelScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/PixelScene.java index 66868945f..fbcbdfe3c 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/PixelScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/PixelScene.java @@ -20,20 +20,27 @@ */ package com.shatteredpixel.shatteredpixeldungeon.scenes; -import javax.microedition.khronos.opengles.GL10; - import android.opengl.GLES20; - -import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; -import com.watabou.glwrap.Texture; -import com.watabou.input.Touchscreen; -import com.watabou.noosa.*; -import com.watabou.noosa.BitmapText.Font; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.effects.BadgeBanner; +import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.watabou.glwrap.Texture; +import com.watabou.input.Touchscreen; +import com.watabou.noosa.BitmapText; +import com.watabou.noosa.BitmapText.Font; +import com.watabou.noosa.BitmapTextMultiline; +import com.watabou.noosa.Camera; +import com.watabou.noosa.ColorBlock; +import com.watabou.noosa.Game; +import com.watabou.noosa.RenderedText; +import com.watabou.noosa.RenderedTextMultiline; +import com.watabou.noosa.Scene; import com.watabou.utils.BitmapCache; +import javax.microedition.khronos.opengles.GL10; + public class PixelScene extends Scene { // Minimum virtual display size for portrait orientation @@ -51,6 +58,8 @@ public class PixelScene extends Scene { public static Camera uiCamera; + public static Class windowOnCreate; + //stylized pixel font public static BitmapText.Font pixelFont; //These represent various mipmaps of the same font diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java index 64b2a7ea5..757f3ae76 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java @@ -158,7 +158,16 @@ public class TitleScene extends PixelScene { ExitButton btnExit = new ExitButton(); 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/ui/LanguageButton.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/LanguageButton.java index 1157cdb1c..a6551d5af 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/ui/LanguageButton.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/LanguageButton.java @@ -21,19 +21,12 @@ package com.shatteredpixel.shatteredpixeldungeon.ui; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; -import com.shatteredpixel.shatteredpixeldungeon.scenes.TitleScene; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndLangs; import com.watabou.noosa.Image; -import com.watabou.noosa.RenderedText; import com.watabou.noosa.audio.Sample; import com.watabou.noosa.ui.Button; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; - public class LanguageButton extends Button { private Image image; @@ -87,58 +80,7 @@ public class LanguageButton extends Button { @Override protected void onClick() { - final ArrayList langs = new ArrayList<>(Arrays.asList(Messages.Languages.values())); - - Messages.Languages nativeLang = Messages.Languages.matchLocale(Locale.getDefault()); - langs.remove(nativeLang); - //move the native language to the top. - langs.add(0, nativeLang); - - parent.add(new WndLangs(langs)); + parent.add(new WndLangs()); } - public static class WndLangs extends Window{ - - private int WIDTH = 60; - private int BTN_HEIGHT = 14; - - WndLangs(final List langs){ - super(); - - int y = 0; - for (int i = 0; i < langs.size(); i++){ - final int langIndex = i; - RedButton btn = new RedButton(Messages.titleCase(langs.get(i).nativeName())){ - @Override - protected void onClick() { - super.onClick(); - Messages.setup(langs.get(langIndex)); - ShatteredPixelDungeon.language(langs.get(langIndex)); - RenderedText.clearCache(); - ShatteredPixelDungeon.switchNoFade(TitleScene.class); - } - }; - if (ShatteredPixelDungeon.language() == langs.get(i)){ - btn.textColor(TITLE_COLOR); - } else { - switch (langs.get(i).status()) { - case INCOMPLETE: - btn.textColor(0x999999); - break; - case UNREVIEWED: - btn.textColor(0xCCCCCC); - break; - } - } - btn.setSize(WIDTH, BTN_HEIGHT); - btn.setPos(0, y); - add(btn); - y += 16; - } - resize(WIDTH, y-2); - - } - - - } } diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndLangs.java b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndLangs.java new file mode 100644 index 000000000..eff45bb3e --- /dev/null +++ b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndLangs.java @@ -0,0 +1,85 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2015 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ +package com.shatteredpixel.shatteredpixeldungeon.windows; + +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; +import com.shatteredpixel.shatteredpixeldungeon.scenes.TitleScene; +import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; +import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.watabou.noosa.RenderedText; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Locale; + +public class WndLangs extends Window { + + private int WIDTH = 60; + private int BTN_HEIGHT = 14; + + public WndLangs(){ + super(); + + final ArrayList langs = new ArrayList<>(Arrays.asList(Messages.Languages.values())); + + Messages.Languages nativeLang = Messages.Languages.matchLocale(Locale.getDefault()); + langs.remove(nativeLang); + //move the native language to the top. + langs.add(0, nativeLang); + + int y = 0; + for (int i = 0; i < langs.size(); i++){ + final int langIndex = i; + RedButton btn = new RedButton(Messages.titleCase(langs.get(i).nativeName())){ + @Override + 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); + } + }; + if (ShatteredPixelDungeon.language() == langs.get(i)){ + btn.textColor(TITLE_COLOR); + } else { + switch (langs.get(i).status()) { + case INCOMPLETE: + btn.textColor(0x999999); + break; + case UNREVIEWED: + btn.textColor(0xCCCCCC); + break; + } + } + btn.setSize(WIDTH, BTN_HEIGHT); + btn.setPos(0, y); + add(btn); + y += 16; + } + resize(WIDTH, y-2); + + } + +} diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java index 3fbdc4780..bbd3fe35a 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/windows/WndSettings.java @@ -106,7 +106,8 @@ public class WndSettings extends WndTabbed { protected void onChange() { if (getSelectedValue() != ShatteredPixelDungeon.scale()) { ShatteredPixelDungeon.scale(getSelectedValue()); - ShatteredPixelDungeon.resetScene(); + PixelScene.windowOnCreate = WndSettings.class; + ShatteredPixelDungeon.switchNoFade((Class) ShatteredPixelDungeon.scene().getClass()); } } };