Rogue: Savage Rats, a retro-themed dungeon crawler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
rogue-savage-rats/src/mightypork/rogue/screens/menu/MenuLayer.java

101 lines
2.2 KiB

package mightypork.rogue.screens.menu;
import mightypork.gamecore.gui.Action;
import mightypork.gamecore.gui.components.layout.GridLayout;
import mightypork.gamecore.gui.components.painters.ImagePainter;
import mightypork.gamecore.gui.components.painters.QuadPainter;
import mightypork.gamecore.gui.events.CrossfadeRequest;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.util.math.color.Color;
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.15)).moveY(root.height().mul(-0.04));
final GridLayout layout = new GridLayout(root, menuBox, 11, 1);
layout.enableCaching(true);
final QuadPainter bg = QuadPainter.gradV(Color.fromHex(0x007eb3), PAL16.SEABLUE);
bg.setRect(root);
root.add(bg);
root.add(layout);
int r = 0;
final ImagePainter ip = new ImagePainter(Res.txq("logo"));
ip.keepAspectRatio();
layout.put(ip, r, 0, 5, 1);
r += 6;
MenuButton btn;
// world button
btn = new MenuButton("Game", 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", 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;
}
}