From d055f9645a159597d4af3b4cf0a9c77711816b73 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Mon, 10 Jul 2017 19:04:15 -0400 Subject: [PATCH] v0.6.1: improved the layout of the journal window --- .../windows/WndJournal.java | 84 +++++++++++++++---- .../messages/windows/windows.properties | 6 +- 2 files changed, 72 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java index b9dacaa05..8609799d1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -41,6 +41,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane; import com.watabou.noosa.BitmapText; import com.watabou.noosa.ColorBlock; import com.watabou.noosa.Image; +import com.watabou.noosa.RenderedText; import com.watabou.noosa.ui.Component; import java.util.ArrayList; @@ -51,7 +52,7 @@ import java.util.HashMap; //FIXME a lot of cleanup and improvements to do here public class WndJournal extends WndTabbed { - private static final int WIDTH_P = 112; + private static final int WIDTH_P = 120; private static final int HEIGHT_P = 160; private static final int WIDTH_L = 160; @@ -59,6 +60,7 @@ public class WndJournal extends WndTabbed { private static final int ITEM_HEIGHT = 18; + private GuideTab guideTab; private NotesTab notesTab; private CatalogTab catalogTab; @@ -71,6 +73,10 @@ public class WndJournal extends WndTabbed { resize(width, height); + guideTab = new GuideTab(); + add(guideTab); + guideTab.setRect(0, 0, width, height); + notesTab = new NotesTab(); add(notesTab); notesTab.setRect(0, 0, width, height); @@ -82,25 +88,26 @@ public class WndJournal extends WndTabbed { catalogTab.updateList(); Tab[] tabs = { - new LabeledTab( "Guide" ) { + new LabeledTab( Messages.get(this, "guide") ) { protected void select( boolean value ) { super.select( value ); + guideTab.active = guideTab.visible = value; if (value) last_index = 0; - }; + } }, - new LabeledTab( "Notes" ) { + new LabeledTab( Messages.get(this, "notes") ) { protected void select( boolean value ) { super.select( value ); notesTab.active = notesTab.visible = value; if (value) last_index = 1; - }; + } }, - new LabeledTab( "Items" ) { + new LabeledTab( Messages.get(this, "items") ) { protected void select( boolean value ) { super.select( value ); catalogTab.active = catalogTab.visible = value; if (value) last_index = 2; - }; + } } }; @@ -178,11 +185,30 @@ public class WndJournal extends WndTabbed { } } + private static class GuideTab extends Component { + + private RenderedText text; + + @Override + protected void createChildren() { + text = PixelScene.renderText( "Coming Soon...", 9); + add( text ); + } + + @Override + protected void layout() { + text.x = (width() - text.width())/2f; + text.y = 10; + PixelScene.align(text); + } + } + private static class NotesTab extends Component { private ScrollPane list; - public NotesTab(){ + @Override + protected void createChildren() { list = new ScrollPane( new Component() ); add( list ); } @@ -199,7 +225,20 @@ public class WndJournal extends WndTabbed { float pos = 0; //Keys - for(Notes.Record rec : Notes.getRecords(Notes.KeyRecord.class)){ + ArrayList keys = Notes.getRecords(Notes.KeyRecord.class); + if (!keys.isEmpty()){ + RenderedText keyTitle = PixelScene.renderText(Messages.get(this, "keys"), 9); + keyTitle.x = (width() - keyTitle.width())/2f; + keyTitle.y = pos + (ITEM_HEIGHT - keyTitle.baseLine())/2f; + PixelScene.align(keyTitle); + content.add(keyTitle); + + ColorBlock line = new ColorBlock( width(), 1, 0xFF222222); + line.y = pos; + content.add(line); + pos += ITEM_HEIGHT; + } + for(Notes.Record rec : keys){ ListItem item = new ListItem( Icons.get(Icons.DEPTH), Messages.titleCase(rec.desc()), rec.depth() ); item.setRect( 0, pos, width(), ITEM_HEIGHT ); @@ -209,7 +248,20 @@ public class WndJournal extends WndTabbed { } //Landmarks - for (Notes.Record rec : Notes.getRecords(Notes.LandmarkRecord.class)) { + ArrayList landmarks = Notes.getRecords(Notes.LandmarkRecord.class); + if (!landmarks.isEmpty()){ + RenderedText keyTitle = PixelScene.renderText(Messages.get(this, "landmarks"), 9); + keyTitle.x = (width() - keyTitle.width())/2f; + keyTitle.y = pos + (ITEM_HEIGHT - keyTitle.baseLine())/2f; + PixelScene.align(keyTitle); + content.add(keyTitle); + + ColorBlock line = new ColorBlock( width(), 1, 0xFF222222); + line.y = pos; + content.add(line); + pos += ITEM_HEIGHT; + } + for (Notes.Record rec : landmarks) { ListItem item = new ListItem( Icons.get(Icons.DEPTH), Messages.titleCase(rec.desc()), rec.depth() ); item.setRect( 0, pos, width(), ITEM_HEIGHT ); @@ -242,10 +294,8 @@ public class WndJournal extends WndTabbed { private ArrayList items = new ArrayList<>(); - public CatalogTab(){ - - super(); - + @Override + protected void createChildren() { itemButtons = new RedButton[NUM_BUTTONS]; for (int i = 0; i < NUM_BUTTONS; i++){ final int idx = i; @@ -280,11 +330,11 @@ public class WndJournal extends WndTabbed { protected void layout() { super.layout(); - int perRow = ShatteredPixelDungeon.landscape() ? NUM_BUTTONS : 4; - float buttonWidth = (width() - (perRow-1))/perRow; + int perRow = NUM_BUTTONS; + float buttonWidth = width()/perRow; for (int i = 0; i < NUM_BUTTONS; i++) { - itemButtons[i].setRect((i%perRow) * (buttonWidth + 1), (i/perRow) * (BUTTON_HEIGHT + 1), + itemButtons[i].setRect((i%perRow) * (buttonWidth), (i/perRow) * (BUTTON_HEIGHT + 1), buttonWidth, BUTTON_HEIGHT); PixelScene.align(itemButtons[i]); } diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties index 08b71c18d..ed175051c 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/windows/windows.properties @@ -33,7 +33,11 @@ windows.wndimp.reward=Take the ring windows.wndinfotrap.inactive=This trap is inactive, and can no longer be triggered. -windows.wndjournal.title=Journal +windows.wndjournal.guide=Guide +windows.wndjournal.notes=Notes +windows.wndjournal.items=Items +windows.wndjournal$notestab.keys=Keys +windows.wndjournal$notestab.landmarks=Landmarks windows.wndlangs.completed=This language has been fully translated and reviewed. windows.wndlangs.unreviewed=This language has not yet been reviewed.\n\nIt may contain errors, but all text has been translated.