v0.3.4: externalized window strings

This commit is contained in:
Evan Debenham 2015-12-31 14:52:11 -05:00 committed by Evan Debenham
parent 46aa324eff
commit 0ca46e72cc
22 changed files with 374 additions and 409 deletions

View File

@ -680,12 +680,131 @@ scenes.titlescene.about=About
###UI ###ui
ui.quickslotbutton.select_item=Select an item to quickslot ui.quickslotbutton.select_item=Select an item to quickslot
ui.toolbar.examine_prompt=Press again to search\nPress a cell for info ui.toolbar.examine_prompt=Press again to search\nPress a cell for info
###windows
windows.wndblacksmith.prompt=Ok, a deal is a deal, dat's what I can do for you: I can reforge 2 items and turn them into one of a better quality.
windows.wndblacksmith.select=Select an item to reforge
windows.wndblacksmith.reforge=Reforge them
windows.wndcatalogus.potions=Potions
windows.wndcatalogus.scrolls=Scrolls
windows.wndcatalogus.title=Catalogs
windows.wndchallenges.title=Challenges
windows.wndchooseway.message=Which way will you follow?
windows.wndchooseway.cancel=I'll decide later
windows.wndclass.mastery=Mastery
windows.wnderror.title=ERROR
windows.wndgame.settings=Settings
windows.wndgame.challenges=Challenges
windows.wndgame.rankings=Rankings
windows.wndgame.start=Start New Game
windows.wndgame.menu=Main Menu
windows.wndgame.exit=Exit Game
windows.wndgame.return=Return to Game
windows.wndhero.stats=Stats
windows.wndhero.buffs=Buffs
windows.wndhero$statstab.title=Level %d %s
windows.wndhero$statstab.catalogs=Catalogs
windows.wndhero$statstab.journal=Journal
windows.wndhero$statstab.exp=Experience
windows.wndhero$statstab.str=Strength
windows.wndhero$statstab.health=Health
windows.wndhero$statstab.gold=Gold Collected
windows.wndhero$statstab.depth=Maximum Depth
windows.wndimp.message=Oh yes! You are my hero!\nRegarding your reward, I don't have cash with me right now, but I have something better for you. This is my family heirloom ring: my granddad took it off a dead paladin's finger.
windows.wndimp.reward=Take the ring
windows.wndinfoitem.chest=Chest
windows.wndinfoitem.locked_chest=Locked chest
windows.wndinfoitem.crystal_chest=Crystal chest
windows.wndinfoitem.tomb=Tomb
windows.wndinfoitem.skeleton=Skeletal remains
windows.wndinfoitem.remains=Heroes remains
windows.wndinfoitem.wont_know=You won't know what's inside until you open it!
windows.wndinfoitem.need_key=You won't know what's inside until you open it! But to open it you need a golden key.
windows.wndinfoitem.inside=You can see %s inside, but to open the chest you need a golden key.
windows.wndinfoitem.owner=This ancient tomb may contain something useful, but its owner will most certainly object to checking.
windows.wndinfoitem.skeleton_desc=This is all that's left of some unfortunate adventurer. Maybe it's worth checking for any valuables.
windows.wndinfoitem.remains_desc=This is all that's left from one of your predecessors. Maybe it's worth checking for any valuables.
windows.wndinfoitem.artifact=an artifact
windows.wndinfoitem.wand=a wand
windows.wndinfoitem.ring=a ring
windows.wndinfotrap.inactive=This trap is inactive, and can no longer be triggered.\n\n
windows.wndjournal.title=Journal
windows.wndranking.error=Unable to load additional information
windows.wndranking.stats=Stats
windows.wndranking.items=Items
windows.wndranking.badges=Badges
windows.wndranking$statstab.title=Level %d %s
windows.wndranking$statstab.challenges=Challenges
windows.wndranking$statstab.health=Health
windows.wndranking$statstab.str=Strength
windows.wndranking$statstab.duration=Game Duration
windows.wndranking$statstab.depth=Maximum Depth
windows.wndranking$statstab.enemies=Mobs Killed
windows.wndranking$statstab.gold=Gold Collected
windows.wndranking$statstab.food=Food Eaten
windows.wndranking$statstab.alchemy=Potions Cooked
windows.wndranking$statstab.ankhs=Ankhs Used
windows.wndresurrect.message=You died, but you were given another chance to win this dungeon. Will you take it?
windows.wndresurrect.yes=Yes, I will fight!
windows.wndresurrect.no=No, I give up
windows.wndsadghost.rat_title=DEFEATED FETID RAT
windows.wndsadghost.gnoll_title=DEFEATED GNOLL TRICKSTER
windows.wndsadghost.crab_title=DEFEATED GREAT CRAB
windows.wndsadghost.rat=Thank you, that horrid rat is slain and I can finally rest... I wonder what twisted magic created such a foul creature...
windows.wndsadghost.gnoll=Thank you, that scheming gnoll is slain and I can finally rest... I wonder what twisted magic made it so smart...
windows.wndsadghost.crab=Thank you, that giant crab is slain and I can finally rest... I wonder what twisted magic allowed it to live so long...
windows.wndsadghost.give_item=\n\nPlease take one of these items, they are useless to me now... Maybe they will help you in your journey...\n\nAlso... There is an item lost in this dungeon that is very dear to me... If you ever... find my... rose......
windows.wndsadghost.weapon=Ghost's weapon
windows.wndsadghost.armor=Ghost's armor
windows.wndsadghost.farewell=Farewell, adventurer!
windows.wndsettings.screen=Screen
windows.wndsettings.ui=UI
windows.wndsettings.audio=Audio
windows.wndsettings$screentab.scale=Display Scale
windows.wndsettings$screentab.brightness=Brightness
windows.wndsettings$screentab.dark=Dark
windows.wndsettings$screentab.bright=Bright
windows.wndsettings$screentab.soft_keys=Hide Software Keys
windows.wndsettings$screentab.portrait=Switch to portrait
windows.wndsettings$screentab.landscape=Switch to landscape
windows.wndsettings$uitab.mode=Toolbar Mode:
windows.wndsettings$uitab.split=Split
windows.wndsettings$uitab.group=Group
windows.wndsettings$uitab.center=Center
windows.wndsettings$uitab.flip_toolbar=Flip Toolbar
windows.wndsettings$uitab.flip_indicators=Flip Indicators
windows.wndsettings$uitab.quickslots=Quickslots
windows.wndsettings$audiotab.music_vol=Music Volume
windows.wndsettings$audiotab.music_mute=Mute Music
windows.wndsettings$audiotab.sfx_vol=SFX Volume
windows.wndsettings$audiotab.sfx_mute=Mute SFX
windows.wndstory.sewers=The Dungeon lies right beneath the City, its upper levels actually constitute the City's sewer system.\n\nAs dark energy has crept up from below the usually harmless sewer creatures have become more and more dangerous. The city sends guard patrols down here to try and maintain safety for those above, but they are slowly failing.\n\nThis place is dangerous, but at least the evil magic at work here is weak.
windows.wndstory.prison=Many years ago a prison was built here to house dangerous criminals. Tightly regulated and secure, convicts from all over the land were brought here to serve time.\n\nBut soon dark miasma started to creep from below, twisting the minds of guard and prisoner alike.\n\nIn response to the mounting chaos, the city sealed off the entire prison. Nobody knows what became of those who were left for dead within these walls...
windows.wndstory.caves=The caves, which stretch down under the abandoned prison, are sparcely populated. They lie too deep to be exploited by the City and they are too poor in minerals to interest the dwarves. In the past there was a trade outpost somewhere here on the route between these two states, but it has perished since the decline of Dwarven Metropolis. Only omnipresent gnolls and subterranean animals dwell here now.
windows.wndstory.city=Dwarven Metropolis was once the greatest of dwarven city-states. In its heyday the mechanized army of dwarves has successfully repelled the invasion of the old god and his demon army. But it is said, that the returning warriors have brought seeds of corruption with them, and that victory was the beginning of the end for the underground kingdom.
windows.wndstory.halls=In the past these levels were the outskirts of Metropolis. After the costly victory in the war with the old god dwarves were too weakened to clear them of remaining demons. Gradually demons have tightened their grip on this place and now it's called Demon Halls.\n\nVery few adventurers have ever descended this far...
windows.wndtradeitem.sale=FOR SALE: %s - %dg
windows.wndtradeitem.buy=Buy for %dg
windows.wndtradeitem.steal=Steal with %d%% chance
windows.wndtradeitem.sell=Sell for %dg
windows.wndtradeitem.sell_1=Sell 1 for %dg
windows.wndtradeitem.sell_all=Sell all for %dg
windows.wndtradeitem.cancel=Never mind
windows.wndtradeitem.sold=You've sold your %s for %dg
windows.wndtradeitem.bought=You've bought %s for %dg
windows.wndtradeitem.stole=You've stolen the %s
windows.wndwandmaker.dust=Oh, I see you have the dust! Don't worry about the wraiths, I can deal with them. As I promised, you can choose one of my high quality wands.
windows.wndwandmaker.ember=Oh, I see you have the embers! I do hope the fire elemental wasn't too much trouble. As I promised, you can choose one of my high quality wands.
windows.wndwandmaker.berry=Oh, I see you have the berry! I do hope the rotberry plant didn't trouble you too much. As I promised, you can choose one of my high quality wands.
windows.wndwandmaker.farewell=Good luck in your quest, %s!
###root classes ###root classes
badges.endorsed=Badge endorsed: %s badges.endorsed=Badge endorsed: %s
badges.new_super=New super badge: %s badges.new_super=New super badge: %s

View File

@ -20,33 +20,13 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.scenes; package com.shatteredpixel.shatteredpixeldungeon.scenes;
import java.io.IOException; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import java.util.ArrayList; import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.*; import com.shatteredpixel.shatteredpixeldungeon.DungeonTilemap;
import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot; import com.shatteredpixel.shatteredpixeldungeon.FogOfWar;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.PotionBandolier;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.ScrollHolder;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.SeedPouch;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.WandHolster;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.CustomTileVisual;
import com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.LootIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.ResumeIndicator;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoTrap;
import com.watabou.noosa.Camera;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group;
import com.watabou.noosa.SkinnedBlock;
import com.watabou.noosa.Visual;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.particles.Emitter;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
@ -58,41 +38,66 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText;
import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple; import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple;
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite; import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.PotionBandolier;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.ScrollHolder;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.SeedPouch;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.WandHolster;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm; 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.plants.Plant;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.DiscardedItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DiscardedItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.PlantSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.PlantSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.Banner; import com.shatteredpixel.shatteredpixeldungeon.ui.Banner;
import com.shatteredpixel.shatteredpixeldungeon.ui.BusyIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.BusyIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.CustomTileVisual;
import com.shatteredpixel.shatteredpixeldungeon.ui.GameLog; import com.shatteredpixel.shatteredpixeldungeon.ui.GameLog;
import com.shatteredpixel.shatteredpixeldungeon.ui.HealthIndicator; import com.shatteredpixel.shatteredpixeldungeon.ui.HealthIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.LootIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton; import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.ResumeIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.StatusPane; import com.shatteredpixel.shatteredpixeldungeon.ui.StatusPane;
import com.shatteredpixel.shatteredpixeldungeon.ui.Toast; import com.shatteredpixel.shatteredpixeldungeon.ui.Toast;
import com.shatteredpixel.shatteredpixeldungeon.ui.Toolbar; import com.shatteredpixel.shatteredpixeldungeon.ui.Toolbar;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag.Mode; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag.Mode;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndGame; import com.shatteredpixel.shatteredpixeldungeon.windows.WndGame;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndHero; import com.shatteredpixel.shatteredpixeldungeon.windows.WndHero;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoCell; import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoCell;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoItem; import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoItem;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoMob; import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoMob;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoPlant; import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoPlant;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndInfoTrap;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage; import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndStory; import com.shatteredpixel.shatteredpixeldungeon.windows.WndStory;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndTradeItem; import com.shatteredpixel.shatteredpixeldungeon.windows.WndTradeItem;
import com.watabou.noosa.Camera;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group;
import com.watabou.noosa.SkinnedBlock;
import com.watabou.noosa.Visual;
import com.watabou.noosa.audio.Music;
import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.particles.Emitter;
import com.watabou.utils.GameMath; import com.watabou.utils.GameMath;
import com.watabou.utils.Random; import com.watabou.utils.Random;
import java.io.IOException;
import java.util.ArrayList;
public class GameScene extends PixelScene { public class GameScene extends PixelScene {
static GameScene scene; static GameScene scene;
@ -297,7 +302,7 @@ public class GameScene extends PixelScene {
WndStory.showChapter( WndStory.ID_CAVES ); WndStory.showChapter( WndStory.ID_CAVES );
break; break;
case 16: case 16:
WndStory.showChapter( WndStory.ID_METROPOLIS ); WndStory.showChapter( WndStory.ID_CITY );
break; break;
case 22: case 22:
WndStory.showChapter( WndStory.ID_HALLS ); WndStory.showChapter( WndStory.ID_HALLS );

View File

@ -20,21 +20,22 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.NinePatch;
import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.ui.Component;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Chrome; import com.shatteredpixel.shatteredpixeldungeon.Chrome;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot; import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.NinePatch;
import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.ui.Component;
public class WndBlacksmith extends Window { public class WndBlacksmith extends Window {
@ -49,14 +50,6 @@ public class WndBlacksmith extends Window {
private ItemButton btnItem2; private ItemButton btnItem2;
private RedButton btnReforge; private RedButton btnReforge;
private static final String TXT_PROMPT =
"Ok, a deal is a deal, dat's what I can do for you: I can reforge " +
"2 items and turn them into one of a better quality.";
private static final String TXT_SELECT =
"Select an item to reforge";
private static final String TXT_REFORGE =
"Reforge them";
public WndBlacksmith( Blacksmith troll, Hero hero ) { public WndBlacksmith( Blacksmith troll, Hero hero ) {
super(); super();
@ -67,7 +60,7 @@ public class WndBlacksmith extends Window {
titlebar.setRect( 0, 0, WIDTH, 0 ); titlebar.setRect( 0, 0, WIDTH, 0 );
add( titlebar ); add( titlebar );
BitmapTextMultiline message = PixelScene.createMultiline( TXT_PROMPT, 6 ); BitmapTextMultiline message = PixelScene.createMultiline( Messages.get(this, "prompt"), 6 );
message.maxWidth = WIDTH; message.maxWidth = WIDTH;
message.measure(); message.measure();
message.y = titlebar.bottom() + GAP; message.y = titlebar.bottom() + GAP;
@ -77,7 +70,7 @@ public class WndBlacksmith extends Window {
@Override @Override
protected void onClick() { protected void onClick() {
btnPressed = btnItem1; btnPressed = btnItem1;
GameScene.selectItem( itemSelector, WndBag.Mode.UPGRADEABLE, TXT_SELECT ); GameScene.selectItem( itemSelector, WndBag.Mode.UPGRADEABLE, Messages.get(this, "select") );
} }
}; };
btnItem1.setRect( (WIDTH - BTN_GAP) / 2 - BTN_SIZE, message.y + message.height() + BTN_GAP, BTN_SIZE, BTN_SIZE ); btnItem1.setRect( (WIDTH - BTN_GAP) / 2 - BTN_SIZE, message.y + message.height() + BTN_GAP, BTN_SIZE, BTN_SIZE );
@ -87,13 +80,13 @@ public class WndBlacksmith extends Window {
@Override @Override
protected void onClick() { protected void onClick() {
btnPressed = btnItem2; btnPressed = btnItem2;
GameScene.selectItem( itemSelector, WndBag.Mode.UPGRADEABLE, TXT_SELECT ); GameScene.selectItem( itemSelector, WndBag.Mode.UPGRADEABLE, Messages.get(this, "select") );
} }
}; };
btnItem2.setRect( btnItem1.right() + BTN_GAP, btnItem1.top(), BTN_SIZE, BTN_SIZE ); btnItem2.setRect( btnItem1.right() + BTN_GAP, btnItem1.top(), BTN_SIZE, BTN_SIZE );
add( btnItem2 ); add( btnItem2 );
btnReforge = new RedButton( TXT_REFORGE ) { btnReforge = new RedButton( Messages.get(this, "reforge") ) {
@Override @Override
protected void onClick() { protected void onClick() {
Blacksmith.upgrade( btnItem1.item, btnItem2.item ); Blacksmith.upgrade( btnItem1.item, btnItem2.item );

View File

@ -20,20 +20,20 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import java.util.ArrayList;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.ui.Component;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane; import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.watabou.noosa.BitmapText;
import com.watabou.noosa.ui.Component;
import java.util.ArrayList;
public class WndCatalogus extends WndTabbed { public class WndCatalogus extends WndTabbed {
@ -45,16 +45,10 @@ public class WndCatalogus extends WndTabbed {
private static final int ITEM_HEIGHT = 18; private static final int ITEM_HEIGHT = 18;
private static final int TAB_WIDTH = 50;
private static final String TXT_POTIONS = "Potions";
private static final String TXT_SCROLLS = "Scrolls";
private static final String TXT_TITLE = "Catalogus";
private BitmapText txtTitle; private BitmapText txtTitle;
private ScrollPane list; private ScrollPane list;
private ArrayList<ListItem> items = new ArrayList<WndCatalogus.ListItem>(); private ArrayList<ListItem> items = new ArrayList<>();
private static boolean showPotions = true; private static boolean showPotions = true;
@ -68,7 +62,7 @@ public class WndCatalogus extends WndTabbed {
resize( WIDTH_P, HEIGHT_P ); resize( WIDTH_P, HEIGHT_P );
} }
txtTitle = PixelScene.createText( TXT_TITLE, 9 ); txtTitle = PixelScene.createText( Messages.get(this, "title"), 9 );
txtTitle.hardlight( Window.TITLE_COLOR ); txtTitle.hardlight( Window.TITLE_COLOR );
txtTitle.measure(); txtTitle.measure();
add( txtTitle ); add( txtTitle );
@ -89,14 +83,14 @@ public class WndCatalogus extends WndTabbed {
boolean showPotions = WndCatalogus.showPotions; boolean showPotions = WndCatalogus.showPotions;
Tab[] tabs = { Tab[] tabs = {
new LabeledTab( TXT_POTIONS ) { new LabeledTab( Messages.get(this, "potions") ) {
protected void select( boolean value ) { protected void select( boolean value ) {
super.select( value ); super.select( value );
WndCatalogus.showPotions = value; WndCatalogus.showPotions = value;
updateList(); updateList();
}; };
}, },
new LabeledTab( TXT_SCROLLS ) { new LabeledTab( Messages.get(this, "scrolls") ) {
protected void select( boolean value ) { protected void select( boolean value ) {
super.select( value ); super.select( value );
WndCatalogus.showPotions = !value; WndCatalogus.showPotions = !value;
@ -115,7 +109,7 @@ public class WndCatalogus extends WndTabbed {
private void updateList() { private void updateList() {
txtTitle.text( Utils.format( TXT_TITLE, showPotions ? TXT_POTIONS : TXT_SCROLLS ) ); txtTitle.text( Messages.get(this, "title", showPotions ? Messages.get(this, "potions") : Messages.get(this, "scrolls") ) );
txtTitle.measure(); txtTitle.measure();
txtTitle.x = (width - txtTitle.width()) / 2; txtTitle.x = (width - txtTitle.width()) / 2;

View File

@ -20,15 +20,15 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import java.util.ArrayList;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.watabou.noosa.BitmapText;
import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.CheckBox; import com.shatteredpixel.shatteredpixeldungeon.ui.CheckBox;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.BitmapText;
import java.util.ArrayList;
public class WndChallenges extends Window { public class WndChallenges extends Window {
@ -37,8 +37,6 @@ public class WndChallenges extends Window {
private static final int BTN_HEIGHT = 18; private static final int BTN_HEIGHT = 18;
private static final int GAP = 1; private static final int GAP = 1;
private static final String TITLE = "Challenges";
private boolean editable; private boolean editable;
private ArrayList<CheckBox> boxes; private ArrayList<CheckBox> boxes;
@ -48,7 +46,7 @@ public class WndChallenges extends Window {
this.editable = editable; this.editable = editable;
BitmapText title = PixelScene.createText( TITLE, 9 ); BitmapText title = PixelScene.createText( Messages.get(this, "title"), 9 );
title.hardlight( TITLE_COLOR ); title.hardlight( TITLE_COLOR );
title.measure(); title.measure();
title.x = (WIDTH - title.width()) / 2; title.x = (WIDTH - title.width()) / 2;

View File

@ -20,20 +20,17 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.ui.HighlightedText;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
import com.shatteredpixel.shatteredpixeldungeon.items.TomeOfMastery; import com.shatteredpixel.shatteredpixeldungeon.items.TomeOfMastery;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.HighlightedText;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.utils.Highlighter;
public class WndChooseWay extends Window { public class WndChooseWay extends Window {
private static final String TXT_MESSAGE = "Which way will you follow?";
private static final String TXT_CANCEL = "I'll decide later";
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 18; private static final int BTN_HEIGHT = 18;
private static final float GAP = 2; private static final float GAP = 2;
@ -49,7 +46,7 @@ public class WndChooseWay extends Window {
add( titlebar ); add( titlebar );
HighlightedText hl = new HighlightedText( 6 ); HighlightedText hl = new HighlightedText( 6 );
hl.text( way1.desc() + "\n\n" + way2.desc() + "\n\n" + TXT_MESSAGE, WIDTH ); hl.text( way1.desc() + "\n\n" + way2.desc() + "\n\n" + Messages.get(this, "message"), WIDTH );
hl.setPos( titlebar.left(), titlebar.bottom() + GAP ); hl.setPos( titlebar.left(), titlebar.bottom() + GAP );
add( hl ); add( hl );
@ -73,7 +70,7 @@ public class WndChooseWay extends Window {
btnWay2.setRect( btnWay1.right() + GAP, btnWay1.top(), btnWay1.width(), BTN_HEIGHT ); btnWay2.setRect( btnWay1.right() + GAP, btnWay1.top(), btnWay1.width(), BTN_HEIGHT );
add( btnWay2 ); add( btnWay2 );
RedButton btnCancel = new RedButton( TXT_CANCEL ) { RedButton btnCancel = new RedButton( Messages.get(this, "cancel") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();

View File

@ -20,20 +20,19 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.Group;
import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.HighlightedText; import com.shatteredpixel.shatteredpixeldungeon.ui.HighlightedText;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.Group;
public class WndClass extends WndTabbed { public class WndClass extends WndTabbed {
private static final String TXT_MASTERY = "Mastery";
private static final int WIDTH = 110; private static final int WIDTH = 110;
private static final int TAB_WIDTH = 50; private static final int TAB_WIDTH = 50;
@ -60,7 +59,7 @@ public class WndClass extends WndTabbed {
tabMastery = new MasteryTab(); tabMastery = new MasteryTab();
add( tabMastery ); add( tabMastery );
tab = new RankingTab( TXT_MASTERY, tabMastery ); tab = new RankingTab( Messages.get(this, "mastery"), tabMastery );
add( tab ); add( tab );
resize( resize(

View File

@ -20,14 +20,13 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
public class WndError extends WndTitledMessage { public class WndError extends WndTitledMessage {
private static final String TXT_TITLE = "ERROR";
public WndError( String message ) { public WndError( String message ) {
super( Icons.WARNING.get(), TXT_TITLE, message ); super( Icons.WARNING.get(), Messages.get(WndError.class, "title"), message );
} }
} }

View File

@ -20,27 +20,22 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import java.io.IOException;
import com.shatteredpixel.shatteredpixeldungeon.ui.*;
import com.watabou.noosa.Game;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.RankingsScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.RankingsScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.TitleScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.TitleScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.Game;
import java.io.IOException;
public class WndGame extends Window { public class WndGame extends Window {
private static final String TXT_SETTINGS = "Settings";
private static final String TXT_CHALLEGES = "Challenges";
private static final String TXT_RANKINGS = "Rankings";
private static final String TXT_START = "Start New Game";
private static final String TXT_MENU = "Main Menu";
private static final String TXT_EXIT = "Exit Game";
private static final String TXT_RETURN = "Return to Game";
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 20; private static final int BTN_HEIGHT = 20;
private static final int GAP = 2; private static final int GAP = 2;
@ -51,7 +46,7 @@ public class WndGame extends Window {
super(); super();
addButton(new RedButton("Settings") { addButton( new RedButton( Messages.get(this, "settings") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
@ -61,7 +56,7 @@ public class WndGame extends Window {
// Challenges window // Challenges window
if (Dungeon.challenges > 0) { if (Dungeon.challenges > 0) {
addButton( new RedButton( TXT_CHALLEGES ) { addButton( new RedButton( Messages.get(this, "challenges") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
@ -74,7 +69,7 @@ public class WndGame extends Window {
if (!Dungeon.hero.isAlive()) { if (!Dungeon.hero.isAlive()) {
RedButton btnStart; RedButton btnStart;
addButton( btnStart = new RedButton( TXT_START ) { addButton( btnStart = new RedButton( Messages.get(this, "start") ) {
@Override @Override
protected void onClick() { protected void onClick() {
Dungeon.hero = null; Dungeon.hero = null;
@ -86,7 +81,7 @@ public class WndGame extends Window {
} ); } );
btnStart.icon( Icons.get( Dungeon.hero.heroClass ) ); btnStart.icon( Icons.get( Dungeon.hero.heroClass ) );
addButton( new RedButton( TXT_RANKINGS ) { addButton( new RedButton( Messages.get(this, "rankings") ) {
@Override @Override
protected void onClick() { protected void onClick() {
InterlevelScene.mode = InterlevelScene.Mode.DESCEND; InterlevelScene.mode = InterlevelScene.Mode.DESCEND;
@ -97,7 +92,7 @@ public class WndGame extends Window {
addButtons( addButtons(
// Main menu // Main menu
new RedButton(TXT_MENU) { new RedButton( Messages.get(this, "menu") ) {
@Override @Override
protected void onClick() { protected void onClick() {
try { try {
@ -109,7 +104,7 @@ public class WndGame extends Window {
} }
}, },
// Quit // Quit
new RedButton( TXT_EXIT ) { new RedButton( Messages.get(this, "exit") ) {
@Override @Override
protected void onClick() { protected void onClick() {
Game.instance.finish(); Game.instance.finish();
@ -118,7 +113,7 @@ public class WndGame extends Window {
); );
// Cancel // Cancel
addButton( new RedButton( TXT_RETURN ) { addButton( new RedButton( Messages.get(this, "return") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();

View File

@ -20,9 +20,17 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import java.util.Locale; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.SmartTexture;
import com.watabou.gltextures.TextureCache; import com.watabou.gltextures.TextureCache;
@ -30,31 +38,13 @@ import com.watabou.noosa.BitmapText;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
import com.watabou.noosa.Image; import com.watabou.noosa.Image;
import com.watabou.noosa.TextureFilm; import com.watabou.noosa.TextureFilm;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.ui.Button; import com.watabou.noosa.ui.Button;
import java.util.Locale;
public class WndHero extends WndTabbed { public class WndHero extends WndTabbed {
private static final String TXT_STATS = "Stats";
private static final String TXT_BUFFS = "Buffs";
private static final String TXT_EXP = "Experience";
private static final String TXT_STR = "Strength";
private static final String TXT_HEALTH = "Health";
private static final String TXT_GOLD = "Gold Collected";
private static final String TXT_DEPTH = "Maximum Depth";
private static final int WIDTH = 100; private static final int WIDTH = 100;
private static final int TAB_WIDTH = 40;
private StatsTab stats; private StatsTab stats;
private BuffsTab buffs; private BuffsTab buffs;
@ -75,13 +65,13 @@ public class WndHero extends WndTabbed {
buffs = new BuffsTab(); buffs = new BuffsTab();
add( buffs ); add( buffs );
add( new LabeledTab( TXT_STATS ) { add( new LabeledTab( Messages.get(this, "stats") ) {
protected void select( boolean value ) { protected void select( boolean value ) {
super.select( value ); super.select( value );
stats.visible = stats.active = selected; stats.visible = stats.active = selected;
}; };
} ); } );
add( new LabeledTab( TXT_BUFFS ) { add( new LabeledTab( Messages.get(this, "buffs") ) {
protected void select( boolean value ) { protected void select( boolean value ) {
super.select( value ); super.select( value );
buffs.visible = buffs.active = selected; buffs.visible = buffs.active = selected;
@ -97,10 +87,6 @@ public class WndHero extends WndTabbed {
private class StatsTab extends Group { private class StatsTab extends Group {
private static final String TXT_TITLE = "Level %d %s";
private static final String TXT_CATALOGUS = "Catalogus";
private static final String TXT_JOURNAL = "Journal";
private static final int GAP = 5; private static final int GAP = 5;
private float pos; private float pos;
@ -111,22 +97,22 @@ public class WndHero extends WndTabbed {
IconTitle title = new IconTitle(); IconTitle title = new IconTitle();
title.icon( HeroSprite.avatar(hero.heroClass, hero.tier()) ); title.icon( HeroSprite.avatar(hero.heroClass, hero.tier()) );
title.label(Utils.format( TXT_TITLE, hero.lvl, hero.className() ).toUpperCase( Locale.ENGLISH ), 9); title.label( Messages.get(this, "title", hero.lvl, hero.className() ).toUpperCase( Locale.ENGLISH ) );
title.color(Window.SHPX_COLOR); title.color(Window.SHPX_COLOR);
title.setRect( 0, 0, WIDTH, 0 ); title.setRect( 0, 0, WIDTH, 0 );
add(title); add(title);
RedButton btnCatalogus = new RedButton( TXT_CATALOGUS ) { RedButton btnCatalogs = new RedButton( Messages.get(this, "catalogs") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
GameScene.show( new WndCatalogus() ); GameScene.show( new WndCatalogus() );
} }
}; };
btnCatalogus.setRect( 0, title.height(), btnCatalogus.reqWidth() + 2, btnCatalogus.reqHeight() + 2 ); btnCatalogs.setRect( 0, title.height(), btnCatalogs.reqWidth() + 2, btnCatalogs.reqHeight() + 2 );
add( btnCatalogus ); add( btnCatalogs );
RedButton btnJournal = new RedButton( TXT_JOURNAL ) { RedButton btnJournal = new RedButton( Messages.get(this, "journal") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
@ -134,20 +120,20 @@ public class WndHero extends WndTabbed {
} }
}; };
btnJournal.setRect( btnJournal.setRect(
btnCatalogus.right() + 1, btnCatalogus.top(), btnCatalogs.right() + 1, btnCatalogs.top(),
btnJournal.reqWidth() + 2, btnJournal.reqHeight() + 2 ); btnJournal.reqWidth() + 2, btnJournal.reqHeight() + 2 );
add( btnJournal ); add( btnJournal );
pos = btnCatalogus.bottom() + GAP; pos = btnCatalogs.bottom() + GAP;
statSlot( TXT_STR, hero.STR() ); statSlot( Messages.get(this, "str"), hero.STR() );
statSlot( TXT_HEALTH, hero.HP + "/" + hero.HT ); statSlot( Messages.get(this, "health"), hero.HP + "/" + hero.HT );
statSlot( TXT_EXP, hero.exp + "/" + hero.maxExp() ); statSlot( Messages.get(this, "exp"), hero.exp + "/" + hero.maxExp() );
pos += GAP; pos += GAP;
statSlot( TXT_GOLD, Statistics.goldCollected ); statSlot( Messages.get(this, "gold"), Statistics.goldCollected );
statSlot( TXT_DEPTH, Statistics.deepestFloor ); statSlot( Messages.get(this, "depth"), Statistics.deepestFloor );
pos += GAP; pos += GAP;
} }

View File

@ -20,27 +20,21 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.watabou.noosa.BitmapTextMultiline;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.DwarfToken; import com.shatteredpixel.shatteredpixeldungeon.items.quest.DwarfToken;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.BitmapTextMultiline;
public class WndImp extends Window { public class WndImp extends Window {
private static final String TXT_MESSAGE =
"Oh yes! You are my hero!\n" +
"Regarding your reward, I don't have cash with me right now, but I have something better for you. " +
"This is my family heirloom ring: my granddad took it off a dead paladin's finger.";
private static final String TXT_REWARD = "Take the ring";
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 20; private static final int BTN_HEIGHT = 20;
private static final int GAP = 2; private static final int GAP = 2;
@ -55,13 +49,13 @@ public class WndImp extends Window {
titlebar.setRect( 0, 0, WIDTH, 0 ); titlebar.setRect( 0, 0, WIDTH, 0 );
add( titlebar ); add( titlebar );
BitmapTextMultiline message = PixelScene.createMultiline( TXT_MESSAGE, 6 ); BitmapTextMultiline message = PixelScene.createMultiline( Messages.get(this, "message"), 6 );
message.maxWidth = WIDTH; message.maxWidth = WIDTH;
message.measure(); message.measure();
message.y = titlebar.bottom() + GAP; message.y = titlebar.bottom() + GAP;
add( message ); add( message );
RedButton btnReward = new RedButton( TXT_REWARD ) { RedButton btnReward = new RedButton( Messages.get(this, "reward") ) {
@Override @Override
protected void onClick() { protected void onClick() {
takeReward( imp, tokens, Imp.Quest.reward ); takeReward( imp, tokens, Imp.Quest.reward );

View File

@ -20,16 +20,16 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.ui.CustomTileVisual;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.Image;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.DungeonTilemap;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.CustomTileVisual;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.Image;
public class WndInfoCell extends Window { public class WndInfoCell extends Window {
@ -37,8 +37,6 @@ public class WndInfoCell extends Window {
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final String TXT_NOTHING = "There is nothing here.";
public WndInfoCell( int cell ) { public WndInfoCell( int cell ) {
super(); super();
@ -99,7 +97,7 @@ public class WndInfoCell extends Window {
} }
} }
info.text( desc.length() > 0 ? desc.toString() : TXT_NOTHING ); info.text( desc );
info.maxWidth = WIDTH; info.maxWidth = WIDTH;
info.measure(); info.measure();
info.x = titlebar.left(); info.x = titlebar.left();

View File

@ -21,40 +21,22 @@
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.watabou.noosa.BitmapTextMultiline;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap.Type; import com.shatteredpixel.shatteredpixeldungeon.items.Heap.Type;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot; import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.BitmapTextMultiline;
public class WndInfoItem extends Window { public class WndInfoItem extends Window {
private static final String TTL_CHEST = "Chest";
private static final String TTL_LOCKED_CHEST = "Locked chest";
private static final String TTL_CRYSTAL_CHEST = "Crystal chest";
private static final String TTL_TOMB = "Tomb";
private static final String TTL_SKELETON = "Skeletal remains";
private static final String TTL_REMAINS = "Heroes remains";
private static final String TXT_WONT_KNOW = "You won't know what's inside until you open it!";
private static final String TXT_NEED_KEY = TXT_WONT_KNOW + " But to open it you need a golden key.";
private static final String TXT_INSIDE = "You can see %s inside, but to open the chest you need a golden key.";
private static final String TXT_OWNER =
"This ancient tomb may contain something useful, " +
"but its owner will most certainly object to checking.";
private static final String TXT_SKELETON =
"This is all that's left of some unfortunate adventurer. " +
"Maybe it's worth checking for any valuables.";
private static final String TXT_REMAINS =
"This is all that's left from one of your predecessors. " +
"Maybe it's worth checking for any valuables.";
private static final float GAP = 2; private static final float GAP = 2;
private static final int WIDTH_P = 120; private static final int WIDTH_P = 120;
@ -82,30 +64,30 @@ public class WndInfoItem extends Window {
String info; String info;
if (heap.type == Type.CHEST || heap.type == Type.MIMIC) { if (heap.type == Type.CHEST || heap.type == Type.MIMIC) {
title = TTL_CHEST; title = Messages.get(this, "chest");
info = TXT_WONT_KNOW; info = Messages.get(this, "wont_know");
} else if (heap.type == Type.TOMB) { } else if (heap.type == Type.TOMB) {
title = TTL_TOMB; title = Messages.get(this, "tomb");
info = TXT_OWNER; info = Messages.get(this, "owner");
} else if (heap.type == Type.SKELETON) { } else if (heap.type == Type.SKELETON) {
title = TTL_SKELETON; title = Messages.get(this, "skeleton");
info = TXT_SKELETON; info = Messages.get(this, "skeleton_desc");
} else if (heap.type == Type.REMAINS) { } else if (heap.type == Type.REMAINS) {
title = TTL_REMAINS; title = Messages.get(this, "remains");
info = TXT_REMAINS; info = Messages.get(this, "remains_desc");
} else if (heap.type == Type.CRYSTAL_CHEST) { } else if (heap.type == Type.CRYSTAL_CHEST) {
title = TTL_CRYSTAL_CHEST; title = Messages.get(this, "crystal_chest");
if (heap.peek() instanceof Artifact) if (heap.peek() instanceof Artifact)
info = Utils.format( TXT_INSIDE, "an artifact" ); info = Messages.get(this, "inside", Messages.get(this, "artifact") );
else if (heap.peek() instanceof Wand) else if (heap.peek() instanceof Wand)
info = Utils.format( TXT_INSIDE, "a wand" ); info = Messages.get(this, "inside", Messages.get(this, "wand") );
else if (heap.peek() instanceof Ring) else if (heap.peek() instanceof Ring)
info = Utils.format( TXT_INSIDE, "a ring" ); info = Messages.get(this, "inside", Messages.get(this, "ring") );
else else
info = Utils.format( TXT_INSIDE, Utils.indefinite( heap.peek().name() ) ); info = Messages.get(this, "inside", Utils.indefinite( heap.peek().name() ) );
} else { } else {
title = TTL_LOCKED_CHEST; title = Messages.get(this, "locked_chest");
info = TXT_NEED_KEY; info = Messages.get(this, "need_key");
} }
fillFields( heap.image(), heap.glowing(), TITLE_COLOR, title, info ); fillFields( heap.image(), heap.glowing(), TITLE_COLOR, title, info );

View File

@ -20,8 +20,8 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap; import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite;
public class WndInfoTrap extends WndTitledMessage { public class WndInfoTrap extends WndTitledMessage {
@ -29,8 +29,8 @@ public class WndInfoTrap extends WndTitledMessage {
public WndInfoTrap(Trap trap) { public WndInfoTrap(Trap trap) {
super(new TrapSprite( trap.color + (trap.shape * 16) ), super(new TrapSprite( trap.color + (trap.shape * 16) ),
(!trap.active ? "Inactive " : "") + trap.name, trap.name,
(!trap.active ? "This trap is inactive, and can no longer be triggered.\n\n" : "") + trap.desc()); (!trap.active ? Messages.get(WndInfoTrap.class, "inactive") : "") + trap.desc());
} }

View File

@ -20,18 +20,19 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import java.util.Collections;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.Image;
import com.watabou.noosa.ui.Component;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Journal; import com.shatteredpixel.shatteredpixeldungeon.Journal;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane; import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.Image;
import com.watabou.noosa.ui.Component;
import java.util.Collections;
public class WndJournal extends Window { public class WndJournal extends Window {
@ -41,8 +42,6 @@ public class WndJournal extends Window {
private static final int ITEM_HEIGHT = 18; private static final int ITEM_HEIGHT = 18;
private static final String TXT_TITLE = "Journal";
private BitmapText txtTitle; private BitmapText txtTitle;
private ScrollPane list; private ScrollPane list;
@ -51,7 +50,7 @@ public class WndJournal extends Window {
super(); super();
resize( WIDTH, ShatteredPixelDungeon.landscape() ? HEIGHT_L : HEIGHT_P ); resize( WIDTH, ShatteredPixelDungeon.landscape() ? HEIGHT_L : HEIGHT_P );
txtTitle = PixelScene.createText( TXT_TITLE, 9 ); txtTitle = PixelScene.createText( Messages.get(this, "title"), 9 );
txtTitle.hardlight( Window.TITLE_COLOR ); txtTitle.hardlight( Window.TITLE_COLOR );
txtTitle.measure(); txtTitle.measure();
txtTitle.x = (WIDTH - txtTitle.width()) / 2; txtTitle.x = (WIDTH - txtTitle.width()) / 2;

View File

@ -20,22 +20,13 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import java.util.Locale;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.ColorBlock;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group;
import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.ui.Button;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesList; import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesList;
@ -45,20 +36,21 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane; import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.BitmapText;
import com.watabou.noosa.ColorBlock;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group;
import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.ui.Button;
import java.util.Locale;
public class WndRanking extends WndTabbed { public class WndRanking extends WndTabbed {
private static final String TXT_ERROR = "Unable to load additional information";
private static final String TXT_STATS = "Stats";
private static final String TXT_ITEMS = "Items";
private static final String TXT_BADGES = "Badges";
private static final int WIDTH = 115; private static final int WIDTH = 115;
private static final int HEIGHT = 144; private static final int HEIGHT = 144;
private static final int TAB_WIDTH = 40;
private Thread thread; private Thread thread;
private String error = null; private String error = null;
@ -76,7 +68,7 @@ public class WndRanking extends WndTabbed {
Badges.loadGlobal(); Badges.loadGlobal();
Dungeon.loadGame( gameFile ); Dungeon.loadGame( gameFile );
} catch (Exception e ) { } catch (Exception e ) {
error = TXT_ERROR; error = Messages.get(WndRanking.class, "error");
} }
} }
}; };
@ -101,7 +93,7 @@ public class WndRanking extends WndTabbed {
createControls(); createControls();
} else { } else {
hide(); hide();
Game.scene().add( new WndError( TXT_ERROR ) ); Game.scene().add( new WndError( error ) );
} }
} }
} }
@ -109,7 +101,7 @@ public class WndRanking extends WndTabbed {
private void createControls() { private void createControls() {
String[] labels = String[] labels =
{TXT_STATS, TXT_ITEMS, TXT_BADGES}; {Messages.get(this, "stats"), Messages.get(this, "items"), Messages.get(this, "badges")};
Group[] pages = Group[] pages =
{new StatsTab(), new ItemsTab(), new BadgesTab()}; {new StatsTab(), new ItemsTab(), new BadgesTab()};
@ -148,23 +140,6 @@ public class WndRanking extends WndTabbed {
private int GAP = 4; private int GAP = 4;
private static final String TXT_TITLE = "Level %d %s";
private static final String TXT_CHALLENGES = "Challenges";
private static final String TXT_HEALTH = "Health";
private static final String TXT_STR = "Strength";
private static final String TXT_DURATION = "Game Duration";
private static final String TXT_DEPTH = "Maximum Depth";
private static final String TXT_ENEMIES = "Mobs Killed";
private static final String TXT_GOLD = "Gold Collected";
private static final String TXT_FOOD = "Food Eaten";
private static final String TXT_ALCHEMY = "Potions Cooked";
private static final String TXT_ANKHS = "Ankhs Used";
public StatsTab() { public StatsTab() {
super(); super();
@ -174,7 +149,7 @@ public class WndRanking extends WndTabbed {
IconTitle title = new IconTitle(); IconTitle title = new IconTitle();
title.icon( HeroSprite.avatar( Dungeon.hero.heroClass, Dungeon.hero.tier() ) ); title.icon( HeroSprite.avatar( Dungeon.hero.heroClass, Dungeon.hero.tier() ) );
title.label( Utils.format( TXT_TITLE, Dungeon.hero.lvl, heroClass ).toUpperCase( Locale.ENGLISH ) ); title.label( Messages.get(this, "title", Dungeon.hero.lvl, heroClass ).toUpperCase( Locale.ENGLISH ) );
title.color(Window.SHPX_COLOR); title.color(Window.SHPX_COLOR);
title.setRect( 0, 0, WIDTH, 0 ); title.setRect( 0, 0, WIDTH, 0 );
add( title ); add( title );
@ -182,7 +157,7 @@ public class WndRanking extends WndTabbed {
float pos = title.bottom(); float pos = title.bottom();
if (Dungeon.challenges > 0) { if (Dungeon.challenges > 0) {
RedButton btnCatalogus = new RedButton( TXT_CHALLENGES ) { RedButton btnCatalogus = new RedButton( Messages.get(this, "challenges") ) {
@Override @Override
protected void onClick() { protected void onClick() {
Game.scene().add( new WndChallenges( Dungeon.challenges, false ) ); Game.scene().add( new WndChallenges( Dungeon.challenges, false ) );
@ -196,24 +171,24 @@ public class WndRanking extends WndTabbed {
pos += GAP + GAP; pos += GAP + GAP;
pos = statSlot( this, TXT_STR, Integer.toString( Dungeon.hero.STR ), pos ); pos = statSlot( this, Messages.get(this, "str"), Integer.toString( Dungeon.hero.STR ), pos );
pos = statSlot( this, TXT_HEALTH, Integer.toString( Dungeon.hero.HT ), pos ); pos = statSlot( this, Messages.get(this, "health"), Integer.toString( Dungeon.hero.HT ), pos );
pos += GAP; pos += GAP;
pos = statSlot( this, TXT_DURATION, Integer.toString( (int)Statistics.duration ), pos ); pos = statSlot( this, Messages.get(this, "duration"), Integer.toString( (int)Statistics.duration ), pos );
pos += GAP; pos += GAP;
pos = statSlot( this, TXT_DEPTH, Integer.toString( Statistics.deepestFloor ), pos ); pos = statSlot( this, Messages.get(this, "depth"), Integer.toString( Statistics.deepestFloor ), pos );
pos = statSlot( this, TXT_ENEMIES, Integer.toString( Statistics.enemiesSlain ), pos ); pos = statSlot( this, Messages.get(this, "enemies"), Integer.toString( Statistics.enemiesSlain ), pos );
pos = statSlot( this, TXT_GOLD, Integer.toString( Statistics.goldCollected ), pos ); pos = statSlot( this, Messages.get(this, "gold"), Integer.toString( Statistics.goldCollected ), pos );
pos += GAP; pos += GAP;
pos = statSlot( this, TXT_FOOD, Integer.toString( Statistics.foodEaten ), pos ); pos = statSlot( this, Messages.get(this, "food"), Integer.toString( Statistics.foodEaten ), pos );
pos = statSlot( this, TXT_ALCHEMY, Integer.toString( Statistics.potionsCooked ), pos ); pos = statSlot( this, Messages.get(this, "alchemy"), Integer.toString( Statistics.potionsCooked ), pos );
pos = statSlot( this, TXT_ANKHS, Integer.toString( Statistics.ankhsUsed ), pos ); pos = statSlot( this, Messages.get(this, "ankhs"), Integer.toString( Statistics.ankhsUsed ), pos );
} }
private float statSlot( Group parent, String label, String value, float pos ) { private float statSlot( Group parent, String label, String value, float pos ) {

View File

@ -20,24 +20,21 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.Game;
import com.shatteredpixel.shatteredpixeldungeon.Rankings; import com.shatteredpixel.shatteredpixeldungeon.Rankings;
import com.shatteredpixel.shatteredpixeldungeon.Statistics; import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Ankh; import com.shatteredpixel.shatteredpixeldungeon.items.Ankh;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.Game;
public class WndResurrect extends Window { public class WndResurrect extends Window {
private static final String TXT_MESSAGE = "You died, but you were given another chance to win this dungeon. Will you take it?";
private static final String TXT_YES = "Yes, I will fight!";
private static final String TXT_NO = "No, I give up";
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 20; private static final int BTN_HEIGHT = 20;
private static final float GAP = 2; private static final float GAP = 2;
@ -58,13 +55,13 @@ public class WndResurrect extends Window {
titlebar.setRect( 0, 0, WIDTH, 0 ); titlebar.setRect( 0, 0, WIDTH, 0 );
add( titlebar ); add( titlebar );
BitmapTextMultiline message = PixelScene.createMultiline( TXT_MESSAGE, 6 ); BitmapTextMultiline message = PixelScene.createMultiline( Messages.get(this, "message"), 6 );
message.maxWidth = WIDTH; message.maxWidth = WIDTH;
message.measure(); message.measure();
message.y = titlebar.bottom() + GAP; message.y = titlebar.bottom() + GAP;
add( message ); add( message );
RedButton btnYes = new RedButton( TXT_YES ) { RedButton btnYes = new RedButton( Messages.get(this, "yes") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
@ -78,7 +75,7 @@ public class WndResurrect extends Window {
btnYes.setRect( 0, message.y + message.height() + GAP, WIDTH, BTN_HEIGHT ); btnYes.setRect( 0, message.y + message.height() + GAP, WIDTH, BTN_HEIGHT );
add( btnYes ); add( btnYes );
RedButton btnNo = new RedButton( TXT_NO ) { RedButton btnNo = new RedButton( Messages.get(this, "no") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();

View File

@ -36,23 +36,6 @@ import com.watabou.noosa.BitmapTextMultiline;
public class WndSadGhost extends Window { public class WndSadGhost extends Window {
private static final String TXT_RAT =
"Thank you, that horrid rat is slain and I can finally rest..." +
"I wonder what twisted magic created such a foul creature...\n\n";
private static final String TXT_GNOLL =
"Thank you, that scheming gnoll is slain and I can finally rest..." +
"I wonder what twisted magic made it so smart...\n\n";
private static final String TXT_CRAB =
"Thank you, that giant crab is slain and I can finally rest..." +
"I wonder what twisted magic allowed it to live so long...\n\n";
private static final String TXT_GIVEITEM=
"Please take one of these items, they are useless to me now... " +
"Maybe they will help you in your journey...\n\n" +
"Also... There is an item lost in this dungeon that is very dear to me..." +
"If you ever... find my... rose......";
private static final String TXT_WEAPON = "Ghost's weapon";
private static final String TXT_ARMOR = "Ghost's armor";
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 20; private static final int BTN_HEIGHT = 20;
private static final float GAP = 2; private static final float GAP = 2;
@ -66,23 +49,22 @@ public class WndSadGhost extends Window {
switch (type){ switch (type){
case 1:default: case 1:default:
titlebar.icon( new FetidRatSprite() ); titlebar.icon( new FetidRatSprite() );
titlebar.label( "DEFEATED FETID RAT" ); titlebar.label( Messages.get(this, "rat_title") );
message = PixelScene.createMultiline( TXT_RAT+TXT_GIVEITEM, 6 ); message = PixelScene.createMultiline( Messages.get(this, "rat")+Messages.get(this, "give_item"), 6 );
break; break;
case 2: case 2:
titlebar.icon( new GnollTricksterSprite() ); titlebar.icon( new GnollTricksterSprite() );
titlebar.label( "DEFEATED GNOLL TRICKSTER" ); titlebar.label( Messages.get(this, "gnoll_title") );
message = PixelScene.createMultiline( TXT_GNOLL+TXT_GIVEITEM, 6 ); message = PixelScene.createMultiline( Messages.get(this, "gnoll")+Messages.get(this, "give_item"), 6 );
break; break;
case 3: case 3:
titlebar.icon( new GreatCrabSprite()); titlebar.icon( new GreatCrabSprite());
titlebar.label( "DEFEATED GREAT CRAB" ); titlebar.label( Messages.get(this, "crab_title") );
message = PixelScene.createMultiline( TXT_CRAB+TXT_GIVEITEM, 6 ); message = PixelScene.createMultiline( Messages.get(this, "crab")+Messages.get(this, "give_item"), 6 );
break; break;
} }
titlebar.setRect( 0, 0, WIDTH, 0 ); titlebar.setRect( 0, 0, WIDTH, 0 );
add( titlebar ); add( titlebar );
@ -91,7 +73,7 @@ public class WndSadGhost extends Window {
message.y = titlebar.bottom() + GAP; message.y = titlebar.bottom() + GAP;
add( message ); add( message );
RedButton btnWeapon = new RedButton( TXT_WEAPON ) { RedButton btnWeapon = new RedButton( Messages.get(this, "weapon") ) {
@Override @Override
protected void onClick() { protected void onClick() {
selectReward( ghost, Ghost.Quest.weapon ); selectReward( ghost, Ghost.Quest.weapon );
@ -101,7 +83,7 @@ public class WndSadGhost extends Window {
add( btnWeapon ); add( btnWeapon );
if (!Dungeon.isChallenged( Challenges.NO_ARMOR )) { if (!Dungeon.isChallenged( Challenges.NO_ARMOR )) {
RedButton btnArmor = new RedButton(TXT_ARMOR) { RedButton btnArmor = new RedButton( Messages.get(this, "armor") ) {
@Override @Override
protected void onClick() { protected void onClick() {
selectReward(ghost, Ghost.Quest.armor); selectReward(ghost, Ghost.Quest.armor);
@ -126,7 +108,7 @@ public class WndSadGhost extends Window {
Dungeon.level.drop( reward, ghost.pos ).sprite.drop(); Dungeon.level.drop( reward, ghost.pos ).sprite.drop();
} }
ghost.yell( "Farewell, adventurer!" ); ghost.yell( Messages.get(this, "farewell") );
ghost.die( null ); ghost.die( null );
Ghost.Quest.complete(); Ghost.Quest.complete();

View File

@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.CheckBox; import com.shatteredpixel.shatteredpixeldungeon.ui.CheckBox;
@ -35,8 +36,6 @@ import com.watabou.noosa.audio.Music;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
public class WndSettings extends WndTabbed { public class WndSettings extends WndTabbed {
private static final String TXT_SWITCH_PORT = "Switch to portrait";
private static final String TXT_SWITCH_LAND = "Switch to landscape";
private static final int WIDTH = 112; private static final int WIDTH = 112;
private static final int HEIGHT = 112; private static final int HEIGHT = 112;
@ -61,7 +60,7 @@ public class WndSettings extends WndTabbed {
audio = new AudioTab(); audio = new AudioTab();
add( audio ); add( audio );
add( new LabeledTab("Screen"){ add( new LabeledTab(Messages.get(this, "screen")){
@Override @Override
protected void select(boolean value) { protected void select(boolean value) {
super.select(value); super.select(value);
@ -69,7 +68,7 @@ public class WndSettings extends WndTabbed {
} }
}); });
add( new LabeledTab("UI"){ add( new LabeledTab(Messages.get(this, "ui")){
@Override @Override
protected void select(boolean value) { protected void select(boolean value) {
super.select(value); super.select(value);
@ -77,7 +76,7 @@ public class WndSettings extends WndTabbed {
} }
}); });
add( new LabeledTab("Audio"){ add( new LabeledTab(Messages.get(this, "audio")){
@Override @Override
protected void select(boolean value) { protected void select(boolean value) {
super.select(value); super.select(value);
@ -98,7 +97,7 @@ public class WndSettings extends WndTabbed {
public ScreenTab() { public ScreenTab() {
super(); super();
OptionSlider scale = new OptionSlider("Display Scale", OptionSlider scale = new OptionSlider(Messages.get(this, "scale"),
(int)Math.ceil(2* Game.density)+ "X", (int)Math.ceil(2* Game.density)+ "X",
PixelScene.maxDefaultZoom + "X", PixelScene.maxDefaultZoom + "X",
(int)Math.ceil(2* Game.density), (int)Math.ceil(2* Game.density),
@ -119,7 +118,8 @@ public class WndSettings extends WndTabbed {
scale.setRect(0, 0, 0, 0); scale.setRect(0, 0, 0, 0);
} }
OptionSlider brightness = new OptionSlider("Brightness", "Dark", "Bright", -2, 4) { OptionSlider brightness = new OptionSlider(Messages.get(this, "brightness"),
Messages.get(this, "dark"), Messages.get(this, "bright"), -2, 4) {
@Override @Override
protected void onChange() { protected void onChange() {
ShatteredPixelDungeon.brightness(getSelectedValue()); ShatteredPixelDungeon.brightness(getSelectedValue());
@ -129,7 +129,7 @@ public class WndSettings extends WndTabbed {
brightness.setRect(0, scale.bottom() + GAP_SML, WIDTH, SLIDER_HEIGHT); brightness.setRect(0, scale.bottom() + GAP_SML, WIDTH, SLIDER_HEIGHT);
add(brightness); add(brightness);
CheckBox chkImmersive = new CheckBox( "Hide Software Keys" ) { CheckBox chkImmersive = new CheckBox( Messages.get(this, "soft_keys") ) {
@Override @Override
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();
@ -142,7 +142,9 @@ public class WndSettings extends WndTabbed {
add(chkImmersive); add(chkImmersive);
RedButton btnOrientation = new RedButton( ShatteredPixelDungeon.landscape() ? TXT_SWITCH_PORT : TXT_SWITCH_LAND ) { RedButton btnOrientation = new RedButton( ShatteredPixelDungeon.landscape() ?
Messages.get(this, "portrait")
: Messages.get(this, "landscape") ) {
@Override @Override
protected void onClick() { protected void onClick() {
ShatteredPixelDungeon.landscape(!ShatteredPixelDungeon.landscape()); ShatteredPixelDungeon.landscape(!ShatteredPixelDungeon.landscape());
@ -158,12 +160,12 @@ public class WndSettings extends WndTabbed {
public UITab(){ public UITab(){
super(); super();
BitmapText barDesc = PixelScene.createText("Toolbar Mode:", 9); BitmapText barDesc = PixelScene.createText(Messages.get(this, "mode"), 9);
barDesc.measure(); barDesc.measure();
barDesc.x = (WIDTH-barDesc.width())/2; barDesc.x = (WIDTH-barDesc.width())/2;
add(barDesc); add(barDesc);
RedButton btnSplit = new RedButton("Split"){ RedButton btnSplit = new RedButton(Messages.get(this, "split")){
@Override @Override
protected void onClick() { protected void onClick() {
ShatteredPixelDungeon.toolbarMode(Toolbar.Mode.SPLIT.name()); ShatteredPixelDungeon.toolbarMode(Toolbar.Mode.SPLIT.name());
@ -173,7 +175,7 @@ public class WndSettings extends WndTabbed {
btnSplit.setRect( 1, barDesc.y + barDesc.height(), 36, BTN_HEIGHT); btnSplit.setRect( 1, barDesc.y + barDesc.height(), 36, BTN_HEIGHT);
add(btnSplit); add(btnSplit);
RedButton btnGrouped = new RedButton("Group"){ RedButton btnGrouped = new RedButton(Messages.get(this, "group")){
@Override @Override
protected void onClick() { protected void onClick() {
ShatteredPixelDungeon.toolbarMode(Toolbar.Mode.GROUP.name()); ShatteredPixelDungeon.toolbarMode(Toolbar.Mode.GROUP.name());
@ -183,7 +185,7 @@ public class WndSettings extends WndTabbed {
btnGrouped.setRect( btnSplit.right()+1, barDesc.y + barDesc.height(), 36, BTN_HEIGHT); btnGrouped.setRect( btnSplit.right()+1, barDesc.y + barDesc.height(), 36, BTN_HEIGHT);
add(btnGrouped); add(btnGrouped);
RedButton btnCentered = new RedButton("Center"){ RedButton btnCentered = new RedButton(Messages.get(this, "center")){
@Override @Override
protected void onClick() { protected void onClick() {
ShatteredPixelDungeon.toolbarMode(Toolbar.Mode.CENTER.name()); ShatteredPixelDungeon.toolbarMode(Toolbar.Mode.CENTER.name());
@ -193,7 +195,7 @@ public class WndSettings extends WndTabbed {
btnCentered.setRect(btnGrouped.right()+1, barDesc.y + barDesc.height(), 36, BTN_HEIGHT); btnCentered.setRect(btnGrouped.right()+1, barDesc.y + barDesc.height(), 36, BTN_HEIGHT);
add(btnCentered); add(btnCentered);
CheckBox chkFlipToolbar = new CheckBox("Flip Toolbar"){ CheckBox chkFlipToolbar = new CheckBox(Messages.get(this, "flip_toolbar")){
@Override @Override
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();
@ -205,7 +207,7 @@ public class WndSettings extends WndTabbed {
chkFlipToolbar.checked(ShatteredPixelDungeon.flipToolbar()); chkFlipToolbar.checked(ShatteredPixelDungeon.flipToolbar());
add(chkFlipToolbar); add(chkFlipToolbar);
CheckBox chkFlipTags = new CheckBox("Flip Indicators"){ CheckBox chkFlipTags = new CheckBox(Messages.get(this, "flip_indicators")){
@Override @Override
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();
@ -217,7 +219,7 @@ public class WndSettings extends WndTabbed {
chkFlipTags.checked(ShatteredPixelDungeon.flipTags()); chkFlipTags.checked(ShatteredPixelDungeon.flipTags());
add(chkFlipTags); add(chkFlipTags);
OptionSlider slots = new OptionSlider("Quickslots", "0", "4", 0, 4) { OptionSlider slots = new OptionSlider(Messages.get(this, "quickslots"), "0", "4", 0, 4) {
@Override @Override
protected void onChange() { protected void onChange() {
ShatteredPixelDungeon.quickSlots(getSelectedValue()); ShatteredPixelDungeon.quickSlots(getSelectedValue());
@ -234,7 +236,7 @@ public class WndSettings extends WndTabbed {
private class AudioTab extends Group { private class AudioTab extends Group {
public AudioTab() { public AudioTab() {
OptionSlider musicVol = new OptionSlider("Music Volume", "0", "10", 0, 10) { OptionSlider musicVol = new OptionSlider(Messages.get(this, "music_vol"), "0", "10", 0, 10) {
@Override @Override
protected void onChange() { protected void onChange() {
Music.INSTANCE.volume(getSelectedValue()/10f); Music.INSTANCE.volume(getSelectedValue()/10f);
@ -245,7 +247,7 @@ public class WndSettings extends WndTabbed {
musicVol.setRect(0, 0, WIDTH, SLIDER_HEIGHT); musicVol.setRect(0, 0, WIDTH, SLIDER_HEIGHT);
add(musicVol); add(musicVol);
CheckBox musicMute = new CheckBox("Mute Music"){ CheckBox musicMute = new CheckBox(Messages.get(this, "music_mute")){
@Override @Override
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();
@ -257,7 +259,7 @@ public class WndSettings extends WndTabbed {
add(musicMute); add(musicMute);
OptionSlider SFXVol = new OptionSlider("SFX Volume", "0", "10", 0, 10) { OptionSlider SFXVol = new OptionSlider(Messages.get(this, "sfx_vol"), "0", "10", 0, 10) {
@Override @Override
protected void onChange() { protected void onChange() {
Sample.INSTANCE.volume(getSelectedValue()/10f); Sample.INSTANCE.volume(getSelectedValue()/10f);
@ -268,7 +270,7 @@ public class WndSettings extends WndTabbed {
SFXVol.setRect(0, musicMute.bottom() + GAP_LRG, WIDTH, SLIDER_HEIGHT); SFXVol.setRect(0, musicMute.bottom() + GAP_LRG, WIDTH, SLIDER_HEIGHT);
add(SFXVol); add(SFXVol);
CheckBox btnSound = new CheckBox( "Mute SFX" ) { CheckBox btnSound = new CheckBox( Messages.get(this, "sfx_mute") ) {
@Override @Override
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();

View File

@ -20,15 +20,16 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.input.Touchscreen.Touch; import com.watabou.input.Touchscreen.Touch;
import com.watabou.noosa.BitmapTextMultiline; import com.watabou.noosa.BitmapTextMultiline;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.TouchArea; import com.watabou.noosa.TouchArea;
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.utils.SparseArray; import com.watabou.utils.SparseArray;
public class WndStory extends Window { public class WndStory extends Window {
@ -44,41 +45,17 @@ public class WndStory extends Window {
public static final int ID_SEWERS = 0; public static final int ID_SEWERS = 0;
public static final int ID_PRISON = 1; public static final int ID_PRISON = 1;
public static final int ID_CAVES = 2; public static final int ID_CAVES = 2;
public static final int ID_METROPOLIS = 3; public static final int ID_CITY = 3;
public static final int ID_HALLS = 4; public static final int ID_HALLS = 4;
private static final SparseArray<String> CHAPTERS = new SparseArray<String>(); private static final SparseArray<String> CHAPTERS = new SparseArray<String>();
static { static {
CHAPTERS.put( ID_SEWERS, CHAPTERS.put( ID_SEWERS, "sewers" );
"The Dungeon lies right beneath the City, its upper levels actually constitute the City's sewer system.\n\n " + CHAPTERS.put( ID_PRISON, "prison" );
"As dark energy has crept up from below the usually harmless sewer creatures have become more and more " + CHAPTERS.put( ID_CAVES, "caves" );
"dangerous. The city sends guard patrols down here to try and maintain safety for those above, but " + CHAPTERS.put( ID_CITY, "city" );
"they are slowly failing.\n\n This place is dangerous, but at least the evil magic at work here is weak." ); CHAPTERS.put( ID_HALLS, "halls" );
CHAPTERS.put( ID_PRISON,
"Many years ago a prison was built here to house dangerous criminals. " +
"Tightly regulated and secure, convicts from all over the land were brought here to serve time.\n\n" +
"But soon dark miasma started to creep from below, twisting the minds of guard and prisoner alike.\n\n" +
"In response to the mounting chaos, the city sealed off the entire prison. " +
"Nobody knows what became of those who were left for dead within these walls..." );
CHAPTERS.put( ID_CAVES,
"The caves, which stretch down under the abandoned prison, are sparcely populated. They lie too deep to be exploited " +
"by the City and they are too poor in minerals to interest the dwarves. In the past there was a trade outpost " +
"somewhere here on the route between these two states, but it has perished since the decline of Dwarven Metropolis. " +
"Only omnipresent gnolls and subterranean animals dwell here now." );
CHAPTERS.put( ID_METROPOLIS,
"Dwarven Metropolis was once the greatest of dwarven city-states. In its heyday the mechanized army of dwarves " +
"has successfully repelled the invasion of the old god and his demon army. But it is said, that the returning warriors " +
"have brought seeds of corruption with them, and that victory was the beginning of the end for the underground kingdom." );
CHAPTERS.put( ID_HALLS,
"In the past these levels were the outskirts of Metropolis. After the costly victory in the war with the old god " +
"dwarves were too weakened to clear them of remaining demons. Gradually demons have tightened their grip on this place " +
"and now it's called Demon Halls.\n\n" +
"Very few adventurers have ever descended this far..." );
}; };
private BitmapTextMultiline tf; private BitmapTextMultiline tf;
@ -127,7 +104,7 @@ public class WndStory extends Window {
return; return;
} }
String text = CHAPTERS.get( id ); String text = Messages.get(WndStory.class, CHAPTERS.get( id ));
if (text != null) { if (text != null) {
WndStory wnd = new WndStory( text ); WndStory wnd = new WndStory( text );
if ((wnd.delay = 0.6f) > 0) { if ((wnd.delay = 0.6f) > 0) {

View File

@ -20,17 +20,16 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.watabou.noosa.BitmapTextMultiline;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Shopkeeper; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Shopkeeper;
import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem; import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem;
import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Gold;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap; import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot; import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot;
@ -38,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.BitmapTextMultiline;
public class WndTradeItem extends Window { public class WndTradeItem extends Window {
@ -45,18 +45,6 @@ public class WndTradeItem extends Window {
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 16; private static final int BTN_HEIGHT = 16;
private static final String TXT_SALE = "FOR SALE: %s - %dg";
private static final String TXT_BUY = "Buy for %dg";
private static final String TXT_STEAL = "Steal with %d%% chance";
private static final String TXT_SELL = "Sell for %dg";
private static final String TXT_SELL_1 = "Sell 1 for %dg";
private static final String TXT_SELL_ALL = "Sell all for %dg";
private static final String TXT_CANCEL = "Never mind";
private static final String TXT_SOLD = "You've sold your %s for %dg";
private static final String TXT_BOUGHT = "You've bought %s for %dg";
private static final String TXT_STOLE = "You've stolen the %s";
private WndBag owner; private WndBag owner;
public WndTradeItem( final Item item, WndBag owner ) { public WndTradeItem( final Item item, WndBag owner ) {
@ -69,7 +57,7 @@ public class WndTradeItem extends Window {
if (item.quantity() == 1) { if (item.quantity() == 1) {
RedButton btnSell = new RedButton( Utils.format( TXT_SELL, item.price() ) ) { RedButton btnSell = new RedButton( Messages.get(this, "sell", item.price()) ) {
@Override @Override
protected void onClick() { protected void onClick() {
sell( item ); sell( item );
@ -84,7 +72,7 @@ public class WndTradeItem extends Window {
} else { } else {
int priceAll= item.price(); int priceAll= item.price();
RedButton btnSell1 = new RedButton( Utils.format( TXT_SELL_1, priceAll / item.quantity() ) ) { RedButton btnSell1 = new RedButton( Messages.get(this, "sell_1", priceAll / item.quantity()) ) {
@Override @Override
protected void onClick() { protected void onClick() {
sellOne( item ); sellOne( item );
@ -93,7 +81,7 @@ public class WndTradeItem extends Window {
}; };
btnSell1.setRect( 0, pos + GAP, WIDTH, BTN_HEIGHT ); btnSell1.setRect( 0, pos + GAP, WIDTH, BTN_HEIGHT );
add( btnSell1 ); add( btnSell1 );
RedButton btnSellAll = new RedButton( Utils.format( TXT_SELL_ALL, priceAll ) ) { RedButton btnSellAll = new RedButton( Messages.get(this, "sell_all", priceAll ) ) {
@Override @Override
protected void onClick() { protected void onClick() {
sell( item ); sell( item );
@ -107,7 +95,7 @@ public class WndTradeItem extends Window {
} }
RedButton btnCancel = new RedButton( TXT_CANCEL ) { RedButton btnCancel = new RedButton( Messages.get(this, "cancel") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
@ -131,7 +119,7 @@ public class WndTradeItem extends Window {
if (canBuy) { if (canBuy) {
RedButton btnBuy = new RedButton( Utils.format( TXT_BUY, price ) ) { RedButton btnBuy = new RedButton( Messages.get(this, "buy", price) ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
@ -142,7 +130,7 @@ public class WndTradeItem extends Window {
btnBuy.enable( price <= Dungeon.gold ); btnBuy.enable( price <= Dungeon.gold );
add( btnBuy ); add( btnBuy );
RedButton btnCancel = new RedButton( TXT_CANCEL ) { RedButton btnCancel = new RedButton( Messages.get(this, "cancel") ) {
@Override @Override
protected void onClick() { protected void onClick() {
hide(); hide();
@ -152,13 +140,13 @@ public class WndTradeItem extends Window {
final MasterThievesArmband.Thievery thievery = Dungeon.hero.buff(MasterThievesArmband.Thievery.class); final MasterThievesArmband.Thievery thievery = Dungeon.hero.buff(MasterThievesArmband.Thievery.class);
if (thievery != null) { if (thievery != null) {
final float chance = thievery.stealChance(price); final float chance = thievery.stealChance(price);
RedButton btnSteal = new RedButton(Utils.format(TXT_STEAL, Math.min(100, (int)(chance*100)))) { RedButton btnSteal = new RedButton( Messages.get(this, "steal", Math.min(100, (int)(chance*100)))) {
@Override @Override
protected void onClick() { protected void onClick() {
if(thievery.steal(price)){ if(thievery.steal(price)){
Hero hero = Dungeon.hero; Hero hero = Dungeon.hero;
Item item = heap.pickUp(); Item item = heap.pickUp();
GLog.i( TXT_STOLE, item.name()); GLog.i( Messages.get(this, "stole", item.name()) );
hide(); hide();
if (!item.doPickUp( hero )) { if (!item.doPickUp( hero )) {
@ -211,7 +199,7 @@ public class WndTradeItem extends Window {
IconTitle titlebar = new IconTitle(); IconTitle titlebar = new IconTitle();
titlebar.icon( new ItemSprite( item ) ); titlebar.icon( new ItemSprite( item ) );
titlebar.label( forSale ? titlebar.label( forSale ?
Utils.format( TXT_SALE, item.toString(), price( item ) ) : Messages.get(this, "sale", item.toString(), price( item ) ) :
Utils.capitalize( item.toString() ) ); Utils.capitalize( item.toString() ) );
titlebar.setRect( 0, 0, WIDTH, 0 ); titlebar.setRect( 0, 0, WIDTH, 0 );
add( titlebar ); add( titlebar );
@ -248,7 +236,7 @@ public class WndTradeItem extends Window {
int price = item.price(); int price = item.price();
new Gold( price ).doPickUp( hero ); new Gold( price ).doPickUp( hero );
GLog.i( TXT_SOLD, item.name(), price ); GLog.i( Messages.get(this, "sold"), item.name(), price );
} }
private void sellOne( Item item ) { private void sellOne( Item item ) {
@ -263,7 +251,7 @@ public class WndTradeItem extends Window {
int price = item.price(); int price = item.price();
new Gold( price ).doPickUp( hero ); new Gold( price ).doPickUp( hero );
GLog.i( TXT_SOLD, item.name(), price ); GLog.i( Messages.get(this, "sold"), item.name(), price );
} }
} }
@ -280,7 +268,7 @@ public class WndTradeItem extends Window {
int price = price( item ); int price = price( item );
Dungeon.gold -= price; Dungeon.gold -= price;
GLog.i( TXT_BOUGHT, item.name(), price ); GLog.i( Messages.get(this, "bought"), item.name(), price );
if (!item.doPickUp( hero )) { if (!item.doPickUp( hero )) {
Dungeon.level.drop( item, heap.pos ).sprite.drop(); Dungeon.level.drop( item, heap.pos ).sprite.drop();

View File

@ -20,38 +20,24 @@
*/ */
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.CorpseDust;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.Embers;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry;
import com.watabou.noosa.BitmapTextMultiline;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Wandmaker; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Wandmaker;
import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.CorpseDust;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.Embers;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand; import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.utils.Utils; import com.shatteredpixel.shatteredpixeldungeon.utils.Utils;
import com.watabou.noosa.BitmapTextMultiline;
public class WndWandmaker extends Window { public class WndWandmaker extends Window {
private static final String TXT_DUST =
"Oh, I see you have the dust! Don't worry about the wraiths, I can deal with them. " +
"As I promised, you can choose one of my high quality wands.";
private static final String TXT_EMBER =
"Oh, I see you have the embers! I do hope the fire elemental wasn't too much trouble. " +
"As I promised, you can choose one of my high quality wands.";
private static final String TXT_BERRY =
"Oh, I see you have the berry! I do hope the rotberry plant didn't trouble you too much. " +
"As I promised, you can choose one of my high quality wands.";
private static final String TXT_FARAWELL = "Good luck in your quest, %s!";
private static final int WIDTH = 120; private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 20; private static final int BTN_HEIGHT = 20;
private static final float GAP = 2; private static final float GAP = 2;
@ -68,11 +54,11 @@ public class WndWandmaker extends Window {
String msg = ""; String msg = "";
if (item instanceof CorpseDust){ if (item instanceof CorpseDust){
msg = TXT_DUST; msg = Messages.get(this, "dust");
} else if (item instanceof Embers){ } else if (item instanceof Embers){
msg = TXT_EMBER; msg = Messages.get(this, "ember");
} else if (item instanceof Rotberry.Seed){ } else if (item instanceof Rotberry.Seed){
msg = TXT_BERRY; msg = Messages.get(this, "berry");
} }
BitmapTextMultiline message = PixelScene.createMultiline( msg, 6 ); BitmapTextMultiline message = PixelScene.createMultiline( msg, 6 );
@ -115,7 +101,7 @@ public class WndWandmaker extends Window {
Dungeon.level.drop( reward, wandmaker.pos ).sprite.drop(); Dungeon.level.drop( reward, wandmaker.pos ).sprite.drop();
} }
wandmaker.yell( Utils.format( TXT_FARAWELL, Dungeon.hero.givenName() ) ); wandmaker.yell( Messages.get(this, "farewell", Dungeon.hero.givenName()) );
wandmaker.destroy(); wandmaker.destroy();
wandmaker.sprite.die(); wandmaker.sprite.die();