fixed components and painters, some tweaks to layer system

This commit is contained in:
ondra
2014-04-15 17:45:57 +02:00
parent 7ee201a6f7
commit 3cad5ad202
28 changed files with 428 additions and 359 deletions
+1 -3
View File
@@ -16,7 +16,6 @@ import mightypork.rogue.events.ActionRequest;
import mightypork.rogue.events.ActionRequest.RequestType;
import mightypork.rogue.screens.test_bouncyboxes.ScreenTestBouncy;
import mightypork.rogue.screens.test_cat_sound.ScreenTestCat;
import mightypork.rogue.screens.test_font.ScreenTestFont;
import mightypork.rogue.screens.test_render.ScreenTestRender;
import mightypork.utils.logging.Log;
import mightypork.utils.logging.LogWriter;
@@ -67,10 +66,9 @@ public class App extends BaseApp {
{
screens.add(new ScreenTestBouncy(this));
screens.add(new ScreenTestCat(this));
screens.add(new ScreenTestFont(this));
screens.add(new ScreenTestRender(this));
screens.showScreen("test.bouncy");
screens.showScreen("test.render");
}
+5 -1
View File
@@ -61,7 +61,11 @@ public class Res {
font.setAntialias(true);
font.setFilter(FilterMode.NEAREST);
fonts.loadFont("default", font);
font = new DeferredFont("/res/font/PressStart2P.ttf", Glyphs.basic, 16);
font.setAntialias(true);
font.setFilter(FilterMode.NEAREST);
fonts.loadFont("press_start", font);
}
+4 -10
View File
@@ -38,7 +38,7 @@ public class LayerFps extends ScreenLayer {
final GLFont font = Res.getFont("default");
final RectBound constraint = bounds().topRight().add(-8, 8).expand(0, 0, 0, 32);
final RectBound constraint = root.topRight().add(-8, 8).expand(0, 0, 0, 32);
tp = new TextPainter(font, Align.RIGHT, RGB.WHITE, new StringProvider() {
@@ -49,16 +49,10 @@ public class LayerFps extends ScreenLayer {
}
});
tp.setRect(constraint);
tp.setRect(constraint);
tp.setShadow(RGB.BLACK, Vect.make(tp.height().div(16)));
tp.setShadow(RGB.BLACK, Vect.ONE);
}
@Override
public void render()
{
tp.render();
root.add(tp);
}
@@ -4,7 +4,7 @@ package mightypork.rogue.screens.test_bouncyboxes;
import java.util.Random;
import mightypork.gamecore.control.timing.Updateable;
import mightypork.gamecore.gui.components.AbstractVisualComponent;
import mightypork.gamecore.gui.components.VisualComponent;
import mightypork.gamecore.render.Render;
import mightypork.utils.math.Easing;
import mightypork.utils.math.color.RGB;
@@ -14,7 +14,7 @@ import mightypork.utils.math.constraints.rect.Rect;
import mightypork.utils.math.constraints.rect.caching.RectCache;
public class BouncyBox extends AbstractVisualComponent implements Updateable {
public class BouncyBox extends VisualComponent implements Updateable {
private final Random rand = new Random();
@@ -24,6 +24,8 @@ public class BouncyBox extends AbstractVisualComponent implements Updateable {
public BouncyBox() {
enableCaching(true);
Rect abox;
abox = leftEdge().growRight(height());
@@ -14,7 +14,6 @@ import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.rogue.Res;
import mightypork.utils.math.color.RGB;
import mightypork.utils.math.constraints.num.Num;
import mightypork.utils.math.constraints.rect.Rect;
import mightypork.utils.math.constraints.vect.Vect;
@@ -47,13 +46,9 @@ public class LayerBouncyBoxes extends ScreenLayer {
// shrink screen rect by 8% on all sides
final Rect b = bounds();
root.add(layout = new RowHolder(this, root.shrink(root.height().perc(5)), 10));
final Rect holder_rect = b.shrink(b.height().perc(8));
addChildClient(layout = new RowHolder(screen, holder_rect, 100));
for (int i = 0; i < 99; i++) {
for (int i = 0; i < 9; i++) {
final BouncyBox bbr = new BouncyBox();
layout.add(bbr);
boxes.add(bbr);
@@ -61,22 +56,13 @@ public class LayerBouncyBoxes extends ScreenLayer {
final TextPainter tp = new TextPainter(Res.getFont("default"), Align.LEFT, RGB.WHITE);
tp.setText("Press \"C\" for \"Cat\" screen.");
final Num shadowOffset = tp.height().div(16 * 2); // half pixel if 16px font
final Num shadowOffset = tp.height().div(16);
tp.setShadow(RGB.RED, Vect.make(shadowOffset, shadowOffset));
layout.add(tp);
}
@Override
public void render()
{
layout.render();
}
public void goLeft()
{
for (final BouncyBox bbr : boxes) {
@@ -23,40 +23,54 @@ import mightypork.utils.math.constraints.vect.Vect;
import mightypork.utils.math.constraints.vect.mutable.VectAnimated;
public class LayerFlyingCat extends ScreenLayer implements Updateable, MouseButtonEvent.Listener {
public class LayerFlyingCat extends ScreenLayer implements MouseButtonEvent.Listener, Updateable {
private final NumAnimated size = new NumAnimated(400, Easing.SINE_BOTH);
private final VectAnimated pos = VectAnimated.makeVar(Easing.ELASTIC_OUT);
private final NumAnimated size = new NumAnimated(300, Easing.SINE_BOTH);
private final VectAnimated cat_position = VectAnimated.makeVar(Easing.ELASTIC_OUT);
private final Random rand = new Random();
private final ImagePainter cat;
private final TextPainter tp;
private final QuadPainter qp;
public LayerFlyingCat(Screen screen) {
super(screen);
pos.setTo(getDisplay().getCenter());
pos.setDefaultDuration(3);
// timing
updated.add(size);
updated.add(cat_position);
size.setTo(root.height().perc(60));
cat = new ImagePainter(Res.getTxQuad("test.kitten"));
// cat
cat_position.setTo(getDisplay().getCenter());
cat_position.setDefaultDuration(3);
cat.setRect(Rect.make(size, size).centerTo(pos));
ImagePainter cat = new ImagePainter(Res.getTxQuad("test.kitten"));
cat.setRect(Rect.make(size, size).centerTo(cat_position));
cat.enableCaching(false);
tp = new TextPainter(Res.getFont("default"));
// frame around cat
QuadPainter cat_frame = QuadPainter.gradV(RGB.YELLOW, RGB.RED);
cat_frame.setRect(cat.grow(cat.height().mul(0.05)));
cat_frame.enableCaching(false);
// frame shadow
QuadPainter cat_shadow = new QuadPainter(RGB.dark(0.4));
cat_shadow.setRect(cat_frame.move(Vect.make(cat.height().mul(0.05))));
cat_shadow.enableCaching(false);
root.add(cat_shadow);
root.add(cat_frame);
root.add(cat);
// Meow
TextPainter tp = new TextPainter(Res.getFont("press_start"));
tp.setAlign(Align.CENTER);
tp.setColor(RGB.YELLOW);
tp.setText("Meow!");
tp.setShadow(RGB.dark(0.8), Vect.make(2, 2));
tp.setRect(Rect.make(64, 64).centerTo(mouse()));
qp = QuadPainter.gradV(RGB.YELLOW, RGB.RED);
qp.setRect(cat.getRect().bottomLeft().expand(size.half(), Num.ZERO, Num.ZERO, size.half()));
tp.setShadow(RGB.dark(0.5), Vect.make(tp.height().div(16)));
tp.setRect(Rect.make(Num.ZERO, cat.height().half()).centerTo(mouse));
tp.enableCaching(false);
root.add(tp);
/*
* Register keys
*/
@@ -65,46 +79,29 @@ public class LayerFlyingCat extends ScreenLayer implements Updateable, MouseButt
@Override
public void run()
{
pos.setTo(getDisplay().getCenter());
cat_position.setTo(getDisplay().getCenter());
}
});
}
@Override
public void update(double delta)
{
size.update(delta);
pos.update(delta);
}
@Override
public void receive(MouseButtonEvent event)
{
if (!event.isDown()) return;
final Vect pos = event.getPos();
this.cat_position.setTo(event.getPos());
this.pos.setTo(pos);
double newSize = root.height().perc(10 + rand.nextInt(40)).value();
size.animate(200 + rand.nextInt(600), 1);
}
@Override
public void render()
{
cat.render();
tp.render();
qp.render();
size.animate(newSize, 1);
}
@Override
public int getPriority()
{
return 0;
return 10;
}
}
@@ -1,45 +0,0 @@
package mightypork.rogue.screens.test_font;
import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.gui.components.painters.TextPainter;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.rogue.Res;
import mightypork.utils.math.color.RGB;
import mightypork.utils.math.constraints.num.Num;
import mightypork.utils.math.constraints.rect.Rect;
public class ScreenTestFont extends Screen {
private final TextPainter tp;
public ScreenTestFont(AppAccess app) {
super(app);
tp = new TextPainter(Res.getFont("default"), Align.CENTER, RGB.GREEN);
tp.setText("Hello World!");
final Num h = bounds().height().mul(0.1);
final Rect strbox = Rect.make(Num.ZERO, h).centerTo(bounds());
tp.setRect(strbox);
}
@Override
protected void renderScreen()
{
tp.render();
}
@Override
public String getName()
{
return "test.font";
}
}
@@ -17,15 +17,15 @@ public class LayerTestGradient extends ScreenLayer {
public LayerTestGradient(Screen screen) {
super(screen);
pos1 = bounds().topEdge().growDown(64);
pos2 = bounds().leftEdge().growUp(-64).growRight(64);
pos1 = root.topEdge().growDown(64);
pos2 = root.leftEdge().growUp(-64).growRight(64);
}
@Override
public void render()
protected void renderLayer()
{
Render.quadColor(getRect(), RGB.WHITE, RGB.BLUE, RGB.BLACK, RGB.PURPLE);
Render.quadColor(root, RGB.WHITE, RGB.BLUE, RGB.BLACK, RGB.PURPLE);
Render.quadGradH(pos1.getRect(), RGB.GREEN, RGB.RED);
Render.quadGradV(pos2.getRect(), RGB.WHITE, RGB.PURPLE);
}
@@ -34,7 +34,7 @@ public class LayerTestGradient extends ScreenLayer {
@Override
public int getPriority()
{
return 5;
return 0;
}
}
@@ -4,6 +4,7 @@ package mightypork.rogue.screens.test_render;
import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.gui.screens.LayeredScreen;
import mightypork.rogue.screens.LayerFps;
import mightypork.rogue.screens.test_cat_sound.LayerFlyingCat;
public class ScreenTestRender extends LayeredScreen {
@@ -13,6 +14,7 @@ public class ScreenTestRender extends LayeredScreen {
addLayer(new LayerFps(this));
addLayer(new LayerTestGradient(this));
addLayer(new LayerFlyingCat(this));
}