From 301a3468f5a9085f045340ed17f0d9a666af5aaa Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 14 Jan 2016 21:23:59 -0500 Subject: [PATCH] v0.3.4: initial (very basic) language button implementation --- .../messages/Messages.java | 6 +- .../scenes/TitleScene.java | 5 + .../ui/LanguageButton.java | 103 ++++++++++++++++++ 3 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 src/com/shatteredpixel/shatteredpixeldungeon/ui/LanguageButton.java diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/messages/Messages.java b/src/com/shatteredpixel/shatteredpixeldungeon/messages/Messages.java index 1346a966c..49741508a 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/messages/Messages.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/messages/Messages.java @@ -55,12 +55,12 @@ public class Messages { private static HashMap strings; static{ - setup(); + setup(Locale.getDefault().getLanguage()); } - public static void setup(){ + public static void setup( String region ){ strings = new HashMap<>(); - Locale locale = Locale.getDefault(); //TODO:load in locale from a preference, use default only if none set. + Locale locale = new Locale(region); //TODO:load in locale from a preference, use default only if none set. for (String file : prop_files) { ResourceBundle bundle = ResourceBundle.getBundle( file, locale); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java index 963418098..3ee33d999 100644 --- a/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java +++ b/src/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.ui.ChangesButton; +import com.shatteredpixel.shatteredpixeldungeon.ui.LanguageButton; import com.shatteredpixel.shatteredpixeldungeon.windows.WndHardNotification; import com.watabou.noosa.BitmapText; import com.watabou.noosa.Camera; @@ -156,6 +157,10 @@ public class TitleScene extends PixelScene { btnPrefs.setPos( 0, 0 ); add( btnPrefs ); + LanguageButton btnLang = new LanguageButton(); + btnLang.setPos(16, 1); + add( btnLang ); + ExitButton btnExit = new ExitButton(); btnExit.setPos( w - btnExit.width(), 0 ); add( btnExit ); diff --git a/src/com/shatteredpixel/shatteredpixeldungeon/ui/LanguageButton.java b/src/com/shatteredpixel/shatteredpixeldungeon/ui/LanguageButton.java new file mode 100644 index 000000000..68ed338a6 --- /dev/null +++ b/src/com/shatteredpixel/shatteredpixeldungeon/ui/LanguageButton.java @@ -0,0 +1,103 @@ +/* + * 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.ui; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.scenes.TitleScene; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndSettings; +import com.watabou.noosa.Image; +import com.watabou.noosa.RenderedText; +import com.watabou.noosa.audio.Sample; +import com.watabou.noosa.ui.Button; + +public class LanguageButton extends Button { + + private Image image; + + public LanguageButton() { + super(); + + width = image.width; + height = image.height; + } + + @Override + protected void createChildren() { + super.createChildren(); + + image = Icons.INFO.get(); + add( image ); + } + + @Override + protected void layout() { + super.layout(); + + image.x = x; + image.y = y; + } + + @Override + protected void onTouchDown() { + image.brightness( 1.5f ); + Sample.INSTANCE.play( Assets.SND_CLICK ); + } + + @Override + protected void onTouchUp() { + image.resetColor(); + } + + @Override + protected void onClick() { + parent.add( new WndOptions("Languages", "Select a language(No, this menu isn't finished)", "English", "Русский язык(95%)", "Português(95%)", "中文(95%)", "Deutsch(70%)", "Polski(50%)" ) { + @Override + protected void onSelect(int index) { + switch(index){ + case 0: + Messages.setup(""); + break; + case 1: + Messages.setup("ru"); + break; + case 2: + Messages.setup("pt"); + break; + case 3: + Messages.setup("zh"); + break; + case 4: + Messages.setup("de"); + break; + case 5: + Messages.setup("pl"); + break; + } + ShatteredPixelDungeon.switchNoFade(TitleScene.class); + RenderedText.clearCache(); + } + }); + } +}