color palettes, fps in overlay, main menu screen w/ buttons

This commit is contained in:
Ondřej Hruška
2014-04-16 21:57:17 +02:00
parent 56b61e5936
commit 56494e04f9
50 changed files with 841 additions and 539 deletions
+9 -11
View File
@@ -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()
+1
View File
@@ -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");
}
@@ -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));
}