package mightypork.rogue.screens.menu; import mightypork.gamecore.gui.Action; import mightypork.gamecore.gui.AlignX; import mightypork.gamecore.gui.components.layout.GridLayout; import mightypork.gamecore.gui.components.painters.QuadPainter; import mightypork.gamecore.gui.components.painters.TextPainter; import mightypork.gamecore.gui.events.CrossfadeRequest; import mightypork.gamecore.gui.screens.Screen; import mightypork.gamecore.gui.screens.ScreenLayer; import mightypork.gamecore.util.math.color.pal.COMMODORE; import mightypork.gamecore.util.math.color.pal.PAL16; import mightypork.gamecore.util.math.constraints.num.Num; import mightypork.gamecore.util.math.constraints.rect.Rect; import mightypork.rogue.Res; class MenuLayer extends ScreenLayer { public MenuLayer(Screen screen) { super(screen); init(); } private void init() { final Rect menuBox = root.shrink(Num.ZERO, root.height().mul(0.18)); //.moveY(root.height().mul(-0.03)) final GridLayout layout = new GridLayout(root, menuBox, 17, 1); layout.enableCaching(true); final QuadPainter bg = QuadPainter.gradV(PAL16.NIGHTBLUE, PAL16.SEABLUE); bg.setRect(root); root.add(bg); root.add(layout); int r = 0; final TextPainter tp = new TextPainter(Res.getFont("main_menu_title"), AlignX.CENTER, COMMODORE.PURPLE, "Rogue!"); layout.put(tp, r, 0, 3, 1); r += 5; MenuButton btn; // world button btn = new MenuButton("World Test", PAL16.SLIMEGREEN); btn.setAction(new Action() { @Override protected void execute() { getEventBus().send(new CrossfadeRequest("game")); } }); layout.put(btn, r, 0, 2, 1); r += 3; // bouncy text button btn = new MenuButton("Bouncy Cubes Test", PAL16.CLOUDBLUE); btn.setAction(new Action() { @Override protected void execute() { getEventBus().send(new CrossfadeRequest("test.bouncy")); } }); layout.put(btn, r, 0, 2, 1); r += 3; // quit button btn = new MenuButton("Bye!", PAL16.BLOODRED); btn.setAction(new Action() { @Override protected void execute() { getEventBus().send(new CrossfadeRequest(null)); // null -> fade and halt } }); layout.put(btn, r, 0, 2, 1); root.add(layout); } @Override public int getZIndex() { return 2; } }