Tweaks to constraint and screen system

This commit is contained in:
ondra
2014-04-08 23:26:54 +02:00
parent f3c6f4f0f5
commit 6460ad9029
32 changed files with 728 additions and 339 deletions
+2 -2
View File
@@ -18,6 +18,6 @@ public class Const {
public static final int FPS_RENDER = 100; // max
// INITIAL WINDOW SIZE
public static final int WINDOW_W = 1024;
public static final int WINDOW_H = 768;
public static final int WINDOW_W = 800;
public static final int WINDOW_H = 600;
}
+14 -4
View File
@@ -10,10 +10,10 @@ import mightypork.gamecore.render.fonts.DeferredFont;
import mightypork.gamecore.render.fonts.DeferredFont.FontStyle;
import mightypork.gamecore.render.fonts.FontBank;
import mightypork.gamecore.render.fonts.GLFont;
import mightypork.gamecore.render.textures.FilteredTexture.Filter;
import mightypork.gamecore.render.textures.FilteredTexture.Wrap;
import mightypork.gamecore.render.textures.FilterMode;
import mightypork.gamecore.render.textures.TextureBank;
import mightypork.gamecore.render.textures.TxQuad;
import mightypork.gamecore.render.textures.WrapMode;
import org.newdawn.slick.opengl.Texture;
@@ -56,13 +56,23 @@ public class Res {
private static void loadFonts()
{
fonts.loadFont("default", new DeferredFont("/res/font/PolygonPixel5x7Standard.ttf", null, 32, FontStyle.PLAIN, true));
//@formatter:off
fonts.loadFont(
"default",
new DeferredFont("/res/font/PolygonPixel5x7Standard.ttf",
null,
16,
FontStyle.PLAIN,
FilterMode.NEAREST
)
);
//@formatter:on
}
private static void loadTextures()
{
textures.loadTexture("test.kitten", "/res/img/kitten.png", Filter.LINEAR, Filter.NEAREST, Wrap.CLAMP);
textures.loadTexture("test.kitten", "/res/img/kitten.png", FilterMode.LINEAR, FilterMode.NEAREST, WrapMode.CLAMP);
}
@@ -0,0 +1,41 @@
package mightypork.rogue.screens;
import mightypork.gamecore.gui.renderers.TextPainter;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.render.DisplaySystem;
import mightypork.gamecore.render.fonts.FontRenderer;
import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.rogue.Res;
import mightypork.utils.math.color.RGB;
import mightypork.utils.math.coord.Coord;
public class LayerFps extends ScreenLayer {
TextPainter tp;
private FontRenderer fr;
public LayerFps(Screen screen) {
super(screen);
fr = new FontRenderer(Res.getFont("default"), RGB.WHITE);
}
@Override
public void render()
{
Coord pos = new Coord(DisplaySystem.getWidth() - 8, 8);
fr.draw(getDisplay().getFps() + " fps", pos, 32, Align.RIGHT);
}
@Override
public int getPriority()
{
return Integer.MAX_VALUE;
}
}
@@ -31,11 +31,11 @@ public class BouncyBox extends PluggableRenderer implements Updateable {
// move
final NumberConstraint move_length = c_sub(c_width(this), side);
final NumberConstraint offset = c_mul(move_length, c_n(pos));
abox = c_move(abox, offset, c_n(0));
final NumberConstraint offset = c_mul(move_length, pos);
abox = c_move(abox, offset, 0);
// add padding
abox = c_shrink(abox, c_percent(side, c_n(10)));
abox = c_shrink(abox, c_percent(side, 10));
box = abox;
}
@@ -7,15 +7,16 @@ import java.util.ArrayList;
import java.util.List;
import mightypork.gamecore.gui.renderers.RowHolder;
import mightypork.gamecore.gui.renderers.TextRenderer;
import mightypork.gamecore.gui.renderers.TextRenderer.Align;
import mightypork.gamecore.gui.renderers.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.RectConstraint;
import mightypork.utils.string.StringProvider;
public class LayerBouncyBoxes extends ScreenLayer {
@@ -46,24 +47,26 @@ public class LayerBouncyBoxes extends ScreenLayer {
});
// shrink screen rect by 8% on all sides
final RectConstraint holder_rect = c_shrink(this, c_percent(c_height(this), c_n(8)));
final RectConstraint holder_rect = c_shrink(this, c_percent(c_height(this), 4));
addChildClient(layout = new RowHolder(screen, holder_rect, 8));
addChildClient(layout = new RowHolder(screen, holder_rect, 11));
for (int i = 0; i < 7; i++) {
for (int i = 0; i <= 9; i++) {
final BouncyBox bbr = new BouncyBox();
layout.add(bbr);
boxes.add(bbr);
}
layout.add(new TextRenderer(Res.getFont("default"), RGB.WHITE, Align.LEFT) {
StringProvider sp = new StringProvider() {
@Override
public String getText()
public String getString()
{
return "Running at " + getDisplay().getFps() + " fps!";
}
});
};
layout.add(new TextPainter(Res.getFont("default"), Align.LEFT, RGB.WHITE, sp));
}
@@ -88,5 +91,11 @@ public class LayerBouncyBoxes extends ScreenLayer {
bbr.goRight();
}
}
@Override
public int getPriority()
{
return 0;
}
}
@@ -6,6 +6,7 @@ import mightypork.gamecore.control.bus.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 {
@@ -17,8 +18,10 @@ public class ScreenTestBouncy extends LayeredScreen {
super(app);
layer = new LayerBouncyBoxes(this);
addLayer(layer);
addLayer(new LayerFps(this));
addLayer(layer);
bindKeyStroke(new KeyStroke(Keys.KEY_C), new Runnable() {
@@ -7,21 +7,23 @@ import java.util.Random;
import mightypork.gamecore.control.bus.events.MouseButtonEvent;
import mightypork.gamecore.control.interf.Updateable;
import mightypork.gamecore.gui.renderers.ImageRenderer;
import mightypork.gamecore.gui.renderers.TextRenderer;
import mightypork.gamecore.gui.renderers.TextRenderer.Align;
import mightypork.gamecore.gui.renderers.ImagePainter;
import mightypork.gamecore.gui.renderers.TextPainter;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.gui.screens.ScreenLayer;
import mightypork.gamecore.input.InputSystem;
import mightypork.gamecore.input.KeyStroke;
import mightypork.gamecore.input.Keys;
import mightypork.gamecore.render.DisplaySystem;
import mightypork.gamecore.render.fonts.FontRenderer;
import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.rogue.Res;
import mightypork.utils.math.animation.AnimDouble;
import mightypork.utils.math.animation.Easing;
import mightypork.utils.math.color.RGB;
import mightypork.utils.math.constraints.RectConstraint;
import mightypork.utils.math.coord.Coord;
import mightypork.utils.string.StringProvider;
public class LayerFlyingCat extends ScreenLayer implements Updateable, MouseButtonEvent.Listener {
@@ -32,8 +34,8 @@ public class LayerFlyingCat extends ScreenLayer implements Updateable, MouseButt
private final Random rand = new Random();
private final ImageRenderer cat;
private final TextRenderer text;
private final ImagePainter cat;
private final TextPainter text;
public LayerFlyingCat(Screen screen) {
@@ -42,19 +44,23 @@ public class LayerFlyingCat extends ScreenLayer implements Updateable, MouseButt
xPos.setTo(DisplaySystem.getWidth() / 2);
yPos.setTo(DisplaySystem.getHeight() / 2);
cat = new ImageRenderer(Res.getTxQuad("test.kitten"));
cat.setContext(c_centered(c_box(this, c_n(size), c_n(size)), c_n(xPos), c_n(yPos)));
cat = new ImagePainter(Res.getTxQuad("test.kitten"));
cat.setContext(c_centered(c_box(this, size, size), xPos, yPos));
//@formatter:off
final RectConstraint flyingFontBox = c_centered(
c_box(this, c_n(0), c_n(64)),
InputSystem.mouseX,
InputSystem.mouseY
);
//@formatter:on
final RectConstraint fpsbox = c_centered(c_box(this, 0, 64), InputSystem.mouseX, InputSystem.mouseY);
text = new TextRenderer(Res.getFont("default"), RGB.YELLOW, Align.CENTER);
text.setContext(flyingFontBox);
final StringProvider sp = new StringProvider() {
@Override
public String getString()
{
return getDisplay().getFps() + " fps";
}
};
text = new TextPainter(Res.getFont("default"), Align.CENTER, RGB.YELLOW, sp);
text.setContext(fpsbox);
bindKeyStroke(new KeyStroke(Keys.KEY_RETURN), new Runnable() {
@@ -97,7 +103,13 @@ public class LayerFlyingCat extends ScreenLayer implements Updateable, MouseButt
public void render()
{
cat.render();
text.render(getDisplay().getFps()+" fps");
text.render();
}
@Override
public int getPriority()
{
return 0;
}
}
@@ -9,17 +9,18 @@ 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 {
LayerFlyingCat layer;
public ScreenTestCat(AppAccess app) {
super(app);
addLayer(layer = new LayerFlyingCat(this));
addLayer(new LayerFps(this));
addLayer(new LayerFlyingCat(this));
bindKeyStroke(new KeyStroke(Keys.KEY_ESCAPE), new Runnable() {
@@ -2,36 +2,36 @@ package mightypork.rogue.screens.test_font;
import mightypork.gamecore.control.AppAccess;
import static mightypork.utils.math.constraints.ConstraintFactory.*;
import mightypork.gamecore.gui.renderers.TextPainter;
import mightypork.gamecore.gui.screens.Screen;
import mightypork.gamecore.render.fonts.FontRenderer;
import mightypork.gamecore.render.fonts.FontRenderer.Align;
import mightypork.rogue.Res;
import mightypork.utils.math.color.RGB;
import mightypork.utils.math.coord.Coord;
import mightypork.utils.math.constraints.RectConstraint;
public class ScreenTestFont extends Screen {
private final FontRenderer fr;
private final TextPainter tp;
public ScreenTestFont(AppAccess app) {
super(app);
fr = new FontRenderer(Res.getFont("default"));
tp = new TextPainter(Res.getFont("default"), Align.CENTER, RGB.GREEN);
tp.setText("Hello World!");
RectConstraint strbox = c_grow(c_center(this), 0, c_div(c_height(this), 10));
tp.setContext(strbox);
}
@Override
protected void renderScreen()
{
final String str = "O hai";
final double height = getRect().getHeight() / 5D;
final Coord space = fr.getNeededSpace(str, height);
final Coord origin = getRect().getCenter().sub(space.half());
fr.draw(str, origin, height, RGB.GREEN);
tp.render();
}