/* * 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.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.TitleScene; 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; public LanguageButton() { super(); width = image.width; height = image.height; } @Override protected void createChildren() { super.createChildren(); image = Icons.get(Icons.LANGS); add( image ); updateIcon(); } private void updateIcon(){ switch(Messages.lang().status()){ case INCOMPLETE: image.tint(1, 0, 0, .5f); break; case UNREVIEWED: image.tint(1, .5f, 0, .5f); break; } } @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(); updateIcon(); } @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)); } 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); } } }