new layouts & start of main menu

This commit is contained in:
Ondřej Hruška
2014-04-16 08:35:47 +02:00
parent 3cad5ad202
commit 990c3de5ca
19 changed files with 335 additions and 33 deletions
+4 -1
View File
@@ -14,6 +14,7 @@ import mightypork.gamecore.input.Keys;
import mightypork.gamecore.render.DisplaySystem;
import mightypork.rogue.events.ActionRequest;
import mightypork.rogue.events.ActionRequest.RequestType;
import mightypork.rogue.screens.main_menu.ScreenMainMenu;
import mightypork.rogue.screens.test_bouncyboxes.ScreenTestBouncy;
import mightypork.rogue.screens.test_cat_sound.ScreenTestCat;
import mightypork.rogue.screens.test_render.ScreenTestRender;
@@ -68,7 +69,9 @@ public class App extends BaseApp {
screens.add(new ScreenTestCat(this));
screens.add(new ScreenTestRender(this));
screens.showScreen("test.render");
screens.add(new ScreenMainMenu(this));
screens.showScreen("rogue.menu");
}
+2 -2
View File
@@ -2,12 +2,12 @@ package mightypork.rogue.screens;
import mightypork.gamecore.gui.Action;
import mightypork.gamecore.gui.AlignX;
import mightypork.gamecore.gui.components.painters.TextPainter;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.input.Keys;
import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.gamecore.render.fonts.GLFont;
import mightypork.rogue.Res;
import mightypork.utils.math.color.RGB;
@@ -40,7 +40,7 @@ public class LayerFps extends ScreenLayer {
final RectBound constraint = root.topRight().add(-8, 8).expand(0, 0, 0, 32);
tp = new TextPainter(font, Align.RIGHT, RGB.WHITE, new StringProvider() {
tp = new TextPainter(font, AlignX.RIGHT, RGB.WHITE, new StringProvider() {
@Override
public String getString()
@@ -0,0 +1,46 @@
package mightypork.rogue.screens.main_menu;
import mightypork.gamecore.gui.AlignX;
import mightypork.gamecore.gui.AlignY;
import mightypork.gamecore.gui.components.layout.VerticalFixedFlowLayout;
import mightypork.gamecore.gui.components.painters.TextPainter;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.render.fonts.GLFont;
import mightypork.rogue.Res;
import mightypork.utils.math.color.RGB;
import mightypork.utils.math.constraints.num.Num;
import mightypork.utils.math.constraints.rect.Rect;
class MenuLayer extends ScreenLayer {
public MenuLayer(Screen screen) {
super(screen);
init();
}
private void init()
{
Rect menuBox = root.shrink(root.height().min(root.width()).mul(0.1));
Num lineHeight = menuBox.height().min(menuBox.width()).mul(0.13);
VerticalFixedFlowLayout layout = new VerticalFixedFlowLayout(root, menuBox, lineHeight, AlignY.TOP);
root.add(layout);
GLFont f = Res.getFont("press_start");
layout.add(new TextPainter(f, AlignX.CENTER, RGB.WHITE, "Hello!"));
layout.add(new TextPainter(f, AlignX.CENTER, RGB.CYAN, "Woof Woof"));
layout.add(new TextPainter(f, AlignX.CENTER, RGB.PURPLE, "MooooOOoOO"));
layout.add(new TextPainter(f, AlignX.CENTER, RGB.GREEN, "Bye!"));
}
@Override
public int getPriority()
{
return 2;
}
}
@@ -0,0 +1,23 @@
package mightypork.rogue.screens.main_menu;
import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.gui.screens.LayeredScreen;
public class ScreenMainMenu extends LayeredScreen {
public ScreenMainMenu(AppAccess app) {
super(app);
addLayer(new MenuLayer(this));
}
@Override
public String getName()
{
return "rogue.menu";
}
}
@@ -4,13 +4,13 @@ package mightypork.rogue.screens.test_bouncyboxes;
import java.util.ArrayList;
import java.util.List;
import mightypork.gamecore.gui.AlignX;
import mightypork.gamecore.gui.components.layout.RowHolder;
import mightypork.gamecore.gui.components.painters.TextPainter;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.input.Keys;
import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.rogue.Res;
import mightypork.utils.math.color.RGB;
import mightypork.utils.math.constraints.num.Num;
@@ -54,7 +54,7 @@ public class LayerBouncyBoxes extends ScreenLayer {
boxes.add(bbr);
}
final TextPainter tp = new TextPainter(Res.getFont("default"), Align.LEFT, RGB.WHITE);
final TextPainter tp = new TextPainter(Res.getFont("default"), AlignX.LEFT, RGB.WHITE);
tp.setText("Press \"C\" for \"Cat\" screen.");
final Num shadowOffset = tp.height().div(16);
tp.setShadow(RGB.RED, Vect.make(shadowOffset, shadowOffset));
@@ -5,6 +5,7 @@ import java.util.Random;
import mightypork.gamecore.control.bus.events.MouseButtonEvent;
import mightypork.gamecore.control.timing.Updateable;
import mightypork.gamecore.gui.AlignX;
import mightypork.gamecore.gui.components.painters.ImagePainter;
import mightypork.gamecore.gui.components.painters.QuadPainter;
import mightypork.gamecore.gui.components.painters.TextPainter;
@@ -12,7 +13,6 @@ import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.input.Keys;
import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.rogue.Res;
import mightypork.utils.math.Easing;
import mightypork.utils.math.color.RGB;
@@ -23,7 +23,7 @@ import mightypork.utils.math.constraints.vect.Vect;
import mightypork.utils.math.constraints.vect.mutable.VectAnimated;
public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.Listener, Updateable {
public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.Listener {
private final NumAnimated size = new NumAnimated(300, Easing.SINE_BOTH);
private final VectAnimated cat_position = VectAnimated.makeVar(Easing.ELASTIC_OUT);
@@ -44,7 +44,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
cat_position.setDefaultDuration(3);
ImagePainter cat = new ImagePainter(Res.getTxQuad("test.kitten"));
cat.setRect(Rect.make(size, size).centerTo(cat_position));
cat.setRect(Rect.make(size).centerTo(cat_position));
cat.enableCaching(false);
// frame around cat
@@ -57,6 +57,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
cat_shadow.setRect(cat_frame.move(Vect.make(cat.height().mul(0.05))));
cat_shadow.enableCaching(false);
// add to root layout
root.add(cat_shadow);
root.add(cat_frame);
root.add(cat);
@@ -64,13 +65,14 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
// Meow
TextPainter tp = new TextPainter(Res.getFont("press_start"));
tp.setAlign(Align.CENTER);
tp.setAlign(AlignX.CENTER);
tp.setColor(RGB.YELLOW);
tp.setText("Meow!");
tp.setShadow(RGB.dark(0.5), Vect.make(tp.height().div(16)));
tp.setRect(Rect.make(Num.ZERO, cat.height().half()).centerTo(mouse));
tp.setRect(Rect.make(cat.height().half()).centerTo(mouse));
tp.enableCaching(false);
root.add(tp);
/*
* Register keys
*/
@@ -90,7 +92,7 @@ public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.List
{
if (!event.isDown()) return;
this.cat_position.setTo(event.getPos());
cat_position.setTo(event.getPos());
double newSize = root.height().perc(10 + rand.nextInt(40)).value();