package openblocks.client.gui;
import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.util.StatCollector;
import openmods.gui.component.GuiComponentBook;
import openmods.gui.component.GuiComponentLabel;
import openmods.gui.component.page.BookScaleConfig;
import openmods.gui.component.page.PageBase;
public class ChangelogPage extends PageBase {
private static final Function<String, String> BULLET_TRANSFORMER = new Function<String, String>() {
@Override
public String apply(String value) {
return "\u00B7" + value;
}
};
private final GuiComponentLabel centerTitle;
private int center(FontRenderer renderer, String text) {
return (getWidth() - renderer.getStringWidth(text)) / 2;
}
public ChangelogPage(String currentVersion, String section, List<String> lines) {
final float scaleTitle = BookScaleConfig.getPageTitleScale();
final float scaleContent = BookScaleConfig.getPageContentScale();
final int lineSpace = BookScaleConfig.getTitlePageSeparator();
section = StatCollector.translateToLocal(section);
FontRenderer renderer = Minecraft.getMinecraft().fontRenderer;
addComponent(new GuiComponentLabel(center(renderer, section), 24, section).setScale(scaleTitle));
int titleMiddle = center(renderer, currentVersion);
centerTitle = new GuiComponentLabel(titleMiddle, 12, currentVersion);
centerTitle.setScale(scaleTitle);
addComponent(centerTitle);
String contents = Joiner.on('\n').join(Iterables.transform(lines, BULLET_TRANSFORMER));
final GuiComponentLabel lblContent = new GuiComponentLabel(15, 40, getWidth() - 10, getHeight(), contents);
lblContent.setScale(scaleContent);
lblContent.setAdditionalLineHeight(lineSpace);
addComponent(lblContent);
}
void addPrevVersionBookmark(final GuiComponentBook book, String name, int page) {
FontRenderer renderer = Minecraft.getMinecraft().fontRenderer;
int leftSize = renderer.getStringWidth(name) / 2;
GuiComponentLabel bookmark = new GuiComponentLabel(centerTitle.getX() - 7 - leftSize, 14, "\u00a77" + name);
bookmark.setListener(book.createBookmarkListener(page));
bookmark.setScale(BookScaleConfig.getPageContentScale());
addComponent(bookmark);
}
void addNextVersionBookmark(final GuiComponentBook book, String name, int page) {
GuiComponentLabel bookmark = new GuiComponentLabel(centerTitle.getX() + centerTitle.getWidth() + 7, 14, "\u00a77" + name);
bookmark.setListener(book.createBookmarkListener(page));
bookmark.setScale(BookScaleConfig.getPageContentScale());
addComponent(bookmark);
}
}