package com.nyrds.pixeldungeon.windows; import com.nyrds.android.util.GuiProperties; import com.nyrds.pixeldungeon.items.common.Library; import com.nyrds.pixeldungeon.ml.R; import com.watabou.noosa.Game; import com.watabou.noosa.Text; import com.watabou.noosa.ui.Component; import com.watabou.pixeldungeon.scenes.GameScene; import com.watabou.pixeldungeon.scenes.PixelScene; import com.watabou.pixeldungeon.ui.RedButton; import com.watabou.pixeldungeon.ui.ScrollPane; import com.watabou.pixeldungeon.ui.TextButton; import com.watabou.pixeldungeon.ui.Window; import java.text.Collator; import java.util.Arrays; import java.util.Map; import lombok.var; public class WndLibraryCatalogue extends Window { private static final int BTN_HEIGHT = 16; private static final int BTN_WIDTH = 38; private static final int GAP = 4; private static final int WIDTH = WndHelper.getLimitedWidth(112); public WndLibraryCatalogue(String category, String catalogueName) { super(); int yPos = 0; //Title Text listTitle = PixelScene.createMultiline(catalogueName, GuiProperties.mediumTitleFontSize()); listTitle.hardlight(TITLE_COLOR); listTitle.maxWidth(WIDTH - GAP * 2); listTitle.x = (WIDTH - listTitle.width()) / 2; listTitle.y = 0; add(listTitle); Component content = new Component(); Map<String, Integer> knownMap = Library.getKnowledgeMap(category); var sortedKeys = knownMap.keySet().toArray(new String[0]); Arrays.sort(sortedKeys, (o1, o2) -> { var e1 = Library.infoHeader(category, o1); var e2 = Library.infoHeader(category, o2); return Collator.getInstance().compare(e1.header, e2.header); }); //List for (final String entry : sortedKeys) { //Button Library.EntryHeader entryHeader = Library.infoHeader(category, entry); if(!entryHeader.header.isEmpty()) { LibraryListItem rb = new LibraryListItem(category, entry, entryHeader); rb.setRect(0, yPos, WIDTH, BTN_HEIGHT); content.add(rb); yPos = (int) rb.bottom() + 1; } } int HEIGHT = WndHelper.getFullscreenHeight() - BTN_HEIGHT * 2; int h = Math.min(HEIGHT - GAP, yPos); resize(WIDTH, h + BTN_WIDTH); content.setSize(WIDTH, yPos); ScrollPane list = new ScrollableList(content); add(list); float topGap = listTitle.height() + GAP; float BottomGap = listTitle.bottom() - BTN_HEIGHT / 2; list.setRect(0, topGap, WIDTH, HEIGHT - BottomGap); //Back Button TextButton back = new RedButton(Game.getVar(R.string.Wnd_Button_Back)) { @Override protected void onClick() { super.onClick(); hide(); GameScene.show(new WndLibrary()); } }; back.setRect((WIDTH / 2) - (BTN_WIDTH / 2), (int) list.bottom() + GAP, BTN_WIDTH + GAP, BTN_HEIGHT); add(back); } }