color palettes, fps in overlay, main menu screen w/ buttons
This commit is contained in:
@@ -14,6 +14,7 @@ import mightypork.gamecore.loading.AsyncResourceLoader;
|
||||
import mightypork.gamecore.render.DisplaySystem;
|
||||
import mightypork.rogue.events.ActionRequest;
|
||||
import mightypork.rogue.events.ActionRequest.RequestType;
|
||||
import mightypork.rogue.screens.FpsOverlay;
|
||||
import mightypork.rogue.screens.main_menu.ScreenMainMenu;
|
||||
import mightypork.rogue.screens.test_bouncyboxes.ScreenTestBouncy;
|
||||
import mightypork.rogue.screens.test_cat_sound.ScreenTestCat;
|
||||
@@ -47,11 +48,9 @@ public class App extends BaseApp {
|
||||
@Override
|
||||
protected LogWriter createLog()
|
||||
{
|
||||
Locale.setDefault(Locale.ENGLISH);
|
||||
Locale.setDefault(Locale.ENGLISH); // for decimal point in numbers
|
||||
|
||||
final LogWriter log = Log.create("runtime", Paths.LOG_FILE, 5);
|
||||
|
||||
return log;
|
||||
return Log.create("runtime", Paths.LOG_FILE, 5);
|
||||
}
|
||||
|
||||
|
||||
@@ -69,9 +68,10 @@ public class App extends BaseApp {
|
||||
screens.addScreen(new ScreenTestBouncy(this));
|
||||
screens.addScreen(new ScreenTestCat(this));
|
||||
screens.addScreen(new ScreenTestRender(this));
|
||||
|
||||
screens.addScreen(new ScreenMainMenu(this));
|
||||
|
||||
screens.addOverlay(new FpsOverlay(this));
|
||||
|
||||
screens.showScreen("rogue.menu");
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class App extends BaseApp {
|
||||
@Override
|
||||
protected void initResources()
|
||||
{
|
||||
AsyncResourceLoader thread = AsyncResourceLoader.launch(this);
|
||||
final AsyncResourceLoader thread = AsyncResourceLoader.launch(this);
|
||||
thread.enableMainLoopQueuing(true);
|
||||
|
||||
Res.load(this);
|
||||
@@ -103,8 +103,6 @@ public class App extends BaseApp {
|
||||
@Override
|
||||
protected void initBus(EventBus bus)
|
||||
{
|
||||
bus.addChannel(ActionRequest.class, ActionRequest.Listener.class);
|
||||
|
||||
bus.detailedLogging = true;
|
||||
}
|
||||
|
||||
@@ -113,7 +111,7 @@ public class App extends BaseApp {
|
||||
protected void initInputSystem(InputSystem input)
|
||||
{
|
||||
// Go fullscreen
|
||||
getInput().bindKeyStroke(new KeyStroke(Keys.KEY_F11), new Runnable() {
|
||||
input.bindKey(new KeyStroke(Keys.F11), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
@@ -123,7 +121,7 @@ public class App extends BaseApp {
|
||||
});
|
||||
|
||||
// Take screenshot
|
||||
getInput().bindKeyStroke(new KeyStroke(Keys.KEY_F2), new Runnable() {
|
||||
input.bindKey(new KeyStroke(Keys.F2), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
@@ -133,7 +131,7 @@ public class App extends BaseApp {
|
||||
});
|
||||
|
||||
// Exit
|
||||
getInput().bindKeyStroke(new KeyStroke(Keys.KEY_LCONTROL, Keys.KEY_Q), new Runnable() {
|
||||
input.bindKey(new KeyStroke(Keys.L_CONTROL, Keys.Q), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
|
||||
@@ -65,6 +65,7 @@ public class Res {
|
||||
|
||||
fonts.addAlias("default", "polygon_pixel");
|
||||
fonts.addAlias("main_menu_button", "press_start");
|
||||
fonts.addAlias("main_menu_title", "press_start");
|
||||
}
|
||||
|
||||
|
||||
|
||||
+8
-6
@@ -1,14 +1,15 @@
|
||||
package mightypork.rogue.screens;
|
||||
|
||||
|
||||
import mightypork.gamecore.control.AppAccess;
|
||||
import mightypork.gamecore.gui.AlignX;
|
||||
import mightypork.gamecore.gui.components.painters.TextPainter;
|
||||
import mightypork.gamecore.gui.screens.BaseScreen;
|
||||
import mightypork.gamecore.gui.screens.ScreenLayer;
|
||||
import mightypork.gamecore.gui.screens.Overlay;
|
||||
import mightypork.gamecore.input.KeyStroke;
|
||||
import mightypork.gamecore.input.Keys;
|
||||
import mightypork.gamecore.render.fonts.GLFont;
|
||||
import mightypork.rogue.Res;
|
||||
import mightypork.util.constraints.num.Num;
|
||||
import mightypork.util.constraints.rect.proxy.RectBound;
|
||||
import mightypork.util.constraints.vect.Vect;
|
||||
import mightypork.util.control.Action;
|
||||
@@ -16,18 +17,18 @@ import mightypork.util.math.color.Color;
|
||||
import mightypork.util.string.StringProvider;
|
||||
|
||||
|
||||
public class LayerFps extends ScreenLayer {
|
||||
public class FpsOverlay extends Overlay {
|
||||
|
||||
TextPainter tp;
|
||||
|
||||
|
||||
public LayerFps(BaseScreen screen) {
|
||||
public FpsOverlay(AppAccess screen) {
|
||||
super(screen);
|
||||
|
||||
/*
|
||||
* Toggle key: F3
|
||||
*/
|
||||
bindKeyStroke(new KeyStroke(Keys.KEY_F3), new Action() {
|
||||
bindKey(new KeyStroke(Keys.F3), new Action() {
|
||||
|
||||
@Override
|
||||
public void execute()
|
||||
@@ -38,7 +39,8 @@ public class LayerFps extends ScreenLayer {
|
||||
|
||||
final GLFont font = Res.getFont("default");
|
||||
|
||||
final RectBound constraint = root.topRight().add(-8, 8).expand(0, 0, 0, 32);
|
||||
final Num h = root.height();
|
||||
final RectBound constraint = root.shrink(h.perc(3)).topRight().startRect().growDown(h.perc(8).max(32));
|
||||
|
||||
tp = new TextPainter(font, AlignX.RIGHT, Color.WHITE, new StringProvider() {
|
||||
|
||||
@@ -6,24 +6,53 @@ import mightypork.gamecore.gui.components.ClickableComponent;
|
||||
import mightypork.gamecore.gui.components.painters.TextPainter;
|
||||
import mightypork.gamecore.render.fonts.GLFont;
|
||||
import mightypork.rogue.Res;
|
||||
import mightypork.util.constraints.num.Num;
|
||||
import mightypork.util.constraints.num.mutable.NumVar;
|
||||
import mightypork.util.constraints.vect.Vect;
|
||||
import mightypork.util.constraints.vect.mutable.VectVar;
|
||||
import mightypork.util.math.color.Color;
|
||||
|
||||
|
||||
class MenuButton extends ClickableComponent {
|
||||
|
||||
private static GLFont font = Res.getFont("main_menu_button");
|
||||
private TextPainter painter;
|
||||
private final TextPainter painter;
|
||||
private final VectVar offset = Vect.makeVar();
|
||||
private final Vect offsetActive = Vect.make(this.height().perc(-5), Num.ZERO);
|
||||
private final Color color;
|
||||
|
||||
private final double ALPHA_OFF = 0.6;
|
||||
private final double ALPHA_ON = 1;
|
||||
|
||||
private final double SH_ALPHA_OFF = 0.1;
|
||||
private final double SH_ALPHA_ON = 0.5;
|
||||
|
||||
private final NumVar alphaMul = Num.makeVar(ALPHA_OFF);
|
||||
private final NumVar alphaMulSh = Num.makeVar(SH_ALPHA_OFF);
|
||||
|
||||
|
||||
public MenuButton(String text, Color color) {
|
||||
this.painter = new TextPainter(font, AlignX.CENTER, color, text);
|
||||
painter.setRect(this.shrink(this.height().perc(5)));
|
||||
this.color = color.withAlpha(alphaMul);
|
||||
|
||||
this.painter = new TextPainter(font, AlignX.CENTER, this.color, text);
|
||||
this.painter.setRect(this.shrink(this.height().perc(8)).move(offset));
|
||||
this.painter.setShadow(Color.BLACK.withAlpha(alphaMulSh), height().div(24).toVectXY());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void renderComponent()
|
||||
{
|
||||
if (isMouseOver()) {
|
||||
offset.setTo(offsetActive);
|
||||
alphaMul.setTo(ALPHA_ON);
|
||||
alphaMulSh.setTo(SH_ALPHA_ON);
|
||||
} else {
|
||||
offset.setTo(Vect.ZERO);
|
||||
alphaMul.setTo(ALPHA_OFF);
|
||||
alphaMulSh.setTo(SH_ALPHA_OFF);
|
||||
}
|
||||
|
||||
painter.render();
|
||||
}
|
||||
|
||||
|
||||
@@ -2,16 +2,19 @@ package mightypork.rogue.screens.main_menu;
|
||||
|
||||
|
||||
import mightypork.gamecore.control.events.ScreenRequestEvent;
|
||||
import mightypork.gamecore.gui.AlignY;
|
||||
import mightypork.gamecore.gui.components.layout.VerticalFixedFlowLayout;
|
||||
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.screens.BaseScreen;
|
||||
import mightypork.gamecore.gui.screens.ScreenLayer;
|
||||
import mightypork.rogue.Res;
|
||||
import mightypork.rogue.events.ActionRequest;
|
||||
import mightypork.rogue.events.ActionRequest.RequestType;
|
||||
import mightypork.util.constraints.num.Num;
|
||||
import mightypork.util.constraints.rect.Rect;
|
||||
import mightypork.util.control.Action;
|
||||
import mightypork.util.math.color.Color;
|
||||
import mightypork.util.math.color.PAL16;
|
||||
|
||||
|
||||
class MenuLayer extends ScreenLayer {
|
||||
@@ -25,19 +28,31 @@ class MenuLayer extends ScreenLayer {
|
||||
|
||||
private void init()
|
||||
{
|
||||
Rect menuBox = root.shrink(root.height().min(root.width()).mul(0.1));
|
||||
final Rect menuBox = root.shrink(Num.ZERO, root.height().mul(0.18)).moveY(root.height().mul(-0.03));
|
||||
|
||||
Num lineHeight = menuBox.height().min(menuBox.width()).mul(0.1);
|
||||
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);
|
||||
|
||||
VerticalFixedFlowLayout layout = new VerticalFixedFlowLayout(root, menuBox, lineHeight, AlignY.TOP);
|
||||
root.add(layout);
|
||||
|
||||
TextPainter tp;
|
||||
MenuButton b1, b2, b3, b4;
|
||||
layout.add(b1 = new MenuButton("Render test", Color.WHITE));
|
||||
layout.add(b2 = new MenuButton("Bouncy Cubes", Color.CYAN));
|
||||
layout.add(b3 = new MenuButton("Flying Cat", Color.MAGENTA));
|
||||
layout.add(b4 = new MenuButton("Bye!", Color.GREEN));
|
||||
tp = new TextPainter(Res.getFont("main_menu_title"), AlignX.CENTER, PAL16.SLIMEGREEN, "Rogue!");
|
||||
b1 = new MenuButton("Gradientz", PAL16.BLAZE);
|
||||
b2 = new MenuButton("Bouncy Cubes", PAL16.NEWPOOP);
|
||||
b3 = new MenuButton("Flying Cat", PAL16.PIGMEAT);
|
||||
b4 = new MenuButton("Bye!", PAL16.BLOODRED);
|
||||
|
||||
layout.put(tp, 1, 0, 4, 1);
|
||||
layout.put(b1, 6, 0, 2, 1);
|
||||
layout.put(b2, 8, 0, 2, 1);
|
||||
layout.put(b3, 10, 0, 2, 1);
|
||||
layout.put(b4, 13, 0, 2, 1);
|
||||
root.add(layout);
|
||||
b1.setAction(new Action() {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,7 +26,7 @@ public class LayerBouncyBoxes extends ScreenLayer {
|
||||
public LayerBouncyBoxes(BaseScreen screen) {
|
||||
super(screen);
|
||||
|
||||
bindKeyStroke(new KeyStroke(true, Keys.KEY_RIGHT), new Runnable() {
|
||||
bindKey(new KeyStroke(true, Keys.RIGHT), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
@@ -35,7 +35,7 @@ public class LayerBouncyBoxes extends ScreenLayer {
|
||||
}
|
||||
});
|
||||
|
||||
bindKeyStroke(new KeyStroke(true, Keys.KEY_LEFT), new Runnable() {
|
||||
bindKey(new KeyStroke(true, Keys.LEFT), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
|
||||
@@ -2,11 +2,7 @@ package mightypork.rogue.screens.test_bouncyboxes;
|
||||
|
||||
|
||||
import mightypork.gamecore.control.AppAccess;
|
||||
import mightypork.gamecore.control.events.ScreenRequestEvent;
|
||||
import mightypork.gamecore.gui.screens.LayeredScreen;
|
||||
import mightypork.gamecore.input.KeyStroke;
|
||||
import mightypork.gamecore.input.Keys;
|
||||
import mightypork.rogue.screens.LayerFps;
|
||||
|
||||
|
||||
public class ScreenTestBouncy extends LayeredScreen {
|
||||
@@ -19,18 +15,7 @@ public class ScreenTestBouncy extends LayeredScreen {
|
||||
|
||||
layer = new LayerBouncyBoxes(this);
|
||||
|
||||
addLayer(new LayerFps(this));
|
||||
|
||||
addLayer(layer);
|
||||
|
||||
bindKeyStroke(new KeyStroke(Keys.KEY_C), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
getEventBus().send(new ScreenRequestEvent("test.cat"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -41,17 +41,17 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
|
||||
cat_position.setTo(getDisplay().getCenter());
|
||||
cat_position.setDefaultDuration(3);
|
||||
|
||||
ImagePainter cat = new ImagePainter(Res.getTxQuad("test.kitten"));
|
||||
final ImagePainter cat = new ImagePainter(Res.getTxQuad("test.kitten"));
|
||||
cat.setRect(Rect.make(size).centerTo(cat_position));
|
||||
cat.enableCaching(false);
|
||||
|
||||
// frame around cat
|
||||
QuadPainter cat_frame = QuadPainter.gradV(Color.YELLOW, Color.RED);
|
||||
final QuadPainter cat_frame = QuadPainter.gradV(Color.YELLOW, Color.RED);
|
||||
cat_frame.setRect(cat.grow(cat.height().mul(0.05)));
|
||||
cat_frame.enableCaching(false);
|
||||
|
||||
// frame shadow
|
||||
QuadPainter cat_shadow = new QuadPainter(Color.dark(0.4));
|
||||
final QuadPainter cat_shadow = new QuadPainter(Color.dark(0.4));
|
||||
cat_shadow.setRect(cat_frame.move(Vect.make(cat.height().mul(0.05))));
|
||||
cat_shadow.enableCaching(false);
|
||||
|
||||
@@ -61,7 +61,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
|
||||
root.add(cat);
|
||||
|
||||
// Meow
|
||||
TextPainter tp = new TextPainter(Res.getFont("press_start"));
|
||||
final TextPainter tp = new TextPainter(Res.getFont("press_start"));
|
||||
tp.setAlign(AlignX.CENTER);
|
||||
tp.setColor(Color.YELLOW);
|
||||
tp.setText("Meow!");
|
||||
@@ -73,7 +73,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
|
||||
/*
|
||||
* Register keys
|
||||
*/
|
||||
bindKeyStroke(new KeyStroke(Keys.KEY_RETURN), new Runnable() {
|
||||
bindKey(new KeyStroke(Keys.RETURN), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
@@ -91,7 +91,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
|
||||
|
||||
cat_position.setTo(event.getPos());
|
||||
|
||||
double newSize = root.height().perc(10 + rand.nextInt(40)).value();
|
||||
final double newSize = root.height().perc(10 + rand.nextInt(40)).value();
|
||||
|
||||
size.animate(newSize, 1);
|
||||
}
|
||||
|
||||
@@ -2,14 +2,12 @@ package mightypork.rogue.screens.test_cat_sound;
|
||||
|
||||
|
||||
import mightypork.gamecore.control.AppAccess;
|
||||
import mightypork.gamecore.control.events.ScreenRequestEvent;
|
||||
import mightypork.gamecore.gui.screens.LayeredScreen;
|
||||
import mightypork.gamecore.input.KeyStroke;
|
||||
import mightypork.gamecore.input.Keys;
|
||||
import mightypork.rogue.Res;
|
||||
import mightypork.rogue.events.ActionRequest;
|
||||
import mightypork.rogue.events.ActionRequest.RequestType;
|
||||
import mightypork.rogue.screens.LayerFps;
|
||||
|
||||
|
||||
public class ScreenTestCat extends LayeredScreen {
|
||||
@@ -17,10 +15,9 @@ public class ScreenTestCat extends LayeredScreen {
|
||||
public ScreenTestCat(AppAccess app) {
|
||||
super(app);
|
||||
|
||||
addLayer(new LayerFps(this));
|
||||
addLayer(new LayerFlyingCat(this));
|
||||
|
||||
bindKeyStroke(new KeyStroke(Keys.KEY_ESCAPE), new Runnable() {
|
||||
bindKey(new KeyStroke(Keys.ESCAPE), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
@@ -29,15 +26,6 @@ public class ScreenTestCat extends LayeredScreen {
|
||||
getEventBus().sendDelayed(new ActionRequest(RequestType.SHUTDOWN), 3);
|
||||
}
|
||||
});
|
||||
|
||||
bindKeyStroke(new KeyStroke(Keys.KEY_B), new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
getEventBus().send(new ScreenRequestEvent("test.bouncy"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ package mightypork.rogue.screens.test_render;
|
||||
|
||||
import mightypork.gamecore.control.AppAccess;
|
||||
import mightypork.gamecore.gui.screens.LayeredScreen;
|
||||
import mightypork.rogue.screens.LayerFps;
|
||||
|
||||
|
||||
public class ScreenTestRender extends LayeredScreen {
|
||||
@@ -11,7 +10,6 @@ public class ScreenTestRender extends LayeredScreen {
|
||||
public ScreenTestRender(AppAccess app) {
|
||||
super(app);
|
||||
|
||||
addLayer(new LayerFps(this));
|
||||
addLayer(new LayerTestGradient(this));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user