package joshie.progression.plugins.enchiridion.actions; import joshie.enchiridion.api.EnchiridionAPI; import joshie.enchiridion.api.book.IButtonAction; import joshie.enchiridion.api.book.IButtonActionProvider; import joshie.enchiridion.api.book.IPage; import joshie.enchiridion.gui.book.buttons.actions.AbstractAction; import joshie.enchiridion.gui.book.features.FeatureButton; import joshie.enchiridion.gui.book.features.FeaturePreviewWindow; import joshie.enchiridion.gui.book.features.FeatureText; import joshie.enchiridion.util.ELocation; import joshie.progression.api.criteria.ITab; import joshie.progression.handlers.APICache; import joshie.progression.plugins.enchiridion.features.FeatureTab; import joshie.progression.plugins.enchiridion.features.FeatureTabInfo; import joshie.progression.plugins.enchiridion.features.FeatureTabListUpdater; import net.minecraft.util.ResourceLocation; import static joshie.progression.lib.PInfo.BOOKPATH; import static joshie.progression.plugins.enchiridion.EnchiridionSupport.TRANSPARENT; public class ActionTabList extends AbstractActionProgression { public ActionTabList() { super("tab.list"); } @Override public IButtonAction copy() { return copyAbstract(new ActionTabList()); } @Override public IButtonAction create() { return new ActionTabList(); } public static void createPage(IPage page) { if (page != null) { if (!page.isScrollingEnabled()) { page.toggleScroll(); //Make page 3 scrollable } int index = 0; for (ITab tab: APICache.getClientCache().getSortedTabs()) { FeatureTab feature = new FeatureTab(tab); page.addFeature(feature, 26, 20 + (20 * index), 150, 15, true, false); //Create the dummy page for this pages description int number = tab.getUniqueID().hashCode() + 1; IPage dummy = EnchiridionAPI.book.getPageIfNotExists(number); if (dummy != null) { FeatureText text = new FeatureText("Go to page " + number + " to edit this text, easiest way to do this, is to go to the chapter, and this page is the page directly after the page it is on."); dummy.addFeature(text, 229, 22, 181, 82, false, false); } index++; } //Add the autoupdater page.addFeature(new FeatureTabListUpdater(), 20, 20, 1, 1, true, false); } } @Override public boolean performAction() { //Create page 3 IPage page = EnchiridionAPI.book.getPageIfNotExists(2); if (page != null) { createPage(page); } //Create page 2 page = EnchiridionAPI.book.getPageIfNotExists(1); if (page != null) { //Preview the Tab's Description ITab first = null; for (ITab tab: APICache.getCache(true).getSortedTabs()) { first = tab; break; } if (first != null) { FeaturePreviewWindow window = new FeaturePreviewWindow(first.getUniqueID().hashCode() + 1); page.addFeature(window, 226, 18, 193, 120, true, false); //Display the Tab's Info FeatureTabInfo info = new FeatureTabInfo(first); page.addFeature(info, 230, 140, 171, 44, true, false); //Jump to Next Page IButtonActionProvider jump = new FeatureButton(new ActionJumpTab(first.getUniqueID().hashCode())); jump.setResourceLocation(true, new ResourceLocation(BOOKPATH + "open_button_on.png")).setResourceLocation(false, new ResourceLocation(BOOKPATH + "open_button_off.png")); jump.setTooltip("Open " + first.getLocalisedName()); jump.setText(true, "[color=gray]Open").setText(false, "Open"); jump.setTextOffsetX(true, 13).setTextOffsetX(false, 13); jump.setTextOffsetY(true, 3).setTextOffsetY(false, 3); page.addFeature(jump, 313, 175, 50, 14, true, false); } //Preview the Tab List FeaturePreviewWindow preview = new FeaturePreviewWindow(2); page.addFeature(preview, 16, 18, 189, 183, true, false); //Return to homepage IButtonActionProvider button = EnchiridionAPI.editor.getJumpPageButton(0); button.setResourceLocation(true, new ELocation("arrow_left_on")).setResourceLocation(false, new ELocation("arrow_left_off")); page.addFeature(button, 21, 200, 18, 10, true, false); //Return to homepage right click anywhere IButtonActionProvider pageBack = EnchiridionAPI.editor.getJumpPageButton(0); pageBack.setResourceLocation(true, TRANSPARENT).setResourceLocation(false, TRANSPARENT); pageBack.setProcessesClick(0, false); page.addFeature(pageBack, -10, -10, 450, 250, true, false); } return EnchiridionAPI.book.jumpToPageIfExists(1); } }