From 09362620e571db8d760f555477627177fe5d3bb0 Mon Sep 17 00:00:00 2001 From: DaniTheSkunk Date: Mon, 10 Oct 2022 21:54:49 +0000 Subject: [PATCH] added BaseGame --- Test.java | 111 +++++++++------------- com/danitheskunk/skunkworks/BaseGame.java | 37 ++++++++ 2 files changed, 80 insertions(+), 68 deletions(-) create mode 100644 com/danitheskunk/skunkworks/BaseGame.java diff --git a/Test.java b/Test.java index 2d769fe..fe6ff7e 100644 --- a/Test.java +++ b/Test.java @@ -1,85 +1,60 @@ -import com.danitheskunk.skunkworks.*; +import com.danitheskunk.skunkworks.BaseGame; +import com.danitheskunk.skunkworks.Vec2i; import com.danitheskunk.skunkworks.gfx.Color; +import com.danitheskunk.skunkworks.gfx.IRenderContext; import com.danitheskunk.skunkworks.gfx.vt.Terminal; -import java.nio.charset.StandardCharsets; +public class Test extends BaseGame { + private Terminal term; + + public Test() { + super(new Vec2i(1280, 720), "Skunkworks"); + } -public class Test { public static void main(String[] args) { - /* - var windows = Window.getAllVisible(); + new Test().run(); + } - System.out.printf("%d Open Windows:\n", windows.size()); - for(var window: windows) { - System.out.printf("%s -- %s -- %s\n", window.getTitle(), window.getClassName(), window.getExecutableName()); - } - windows.get(0).setBorder(true); - windows.get(0).setBorderRounded(false); - windows.get(0).move(new Recti(1280, 720, 2560, 1440)); - windows.get(0).debugPrintStyles(); - windows.get(0).debugPrintStylesEx(); - Window.onKey(); - Window.onNewWindow(); - Window.messageLoop(); - */ - - var engine = new Engine(); - var window = engine.openWindow(new Vec2i(1280, 720), "Skunkworks"); - var img = engine.loadImage("C:\\Users\\dani\\Videos\\Screenshot 2022-06-25 17-00-59.png"); - var tex2 = window.loadTexture("C:\\art\\pixel stuff.png"); - var tileset = window.loadTextureArray("C:\\stream\\coding\\rlc\\tilemap.png", new Vec2i(16, 16)); - var font = window.loadFontTileset("EGA8x14.png"); + @Override + protected void init() { var fontThin = window.loadFontTileset("fonts\\thin-6x12.png"); var fontThin2 = window.loadFontTileset("fonts\\thin-12x12.png"); - var font2 = window.loadFontTTF("fonts\\LiberationSans-Regular.ttf", 16 * 8.f); - var font3 = window.loadFontTTF("fonts\\LiberationSans-Regular.ttf", 16); - var tex = window.loadTexture(img); - var slice = window.loadNineSlice("demoassets\\9slice-2.png"); - var term = new Terminal(new Vec2i(80, 45), fontThin2, fontThin); - //window.setDebug(true); + term = new Terminal(new Vec2i(80, 45), fontThin2, fontThin); - term.setChar(new Vec2i(0, 0), 0xC9, Color.GREEN); - term.setChar(new Vec2i(9, 9), 0xC9, Color.GREEN); - term.setChar(new Vec2i(10, 10), 0xC9, Color.GREEN); - term.drawHalfString(new Vec2i(11, 11), "AHello world. This is a test.", Color.GREEN); - term.drawBoxDouble(new Recti(11, 12, 4, 4), Color.GREEN, Color.DARK_GRAY, true); + var c1 = Color.GREEN; + var c2 = new Color(0, 128, 0); - while(!window.shouldClose()) { - window.tick(); - var renderContext = window.renderStart(); - /*renderContext.drawTextureRectangle( - new Recti(0, 0, 1280, 720), - tex, - false - );*/ - //renderContext.drawTextureRectangle( - // new Recti(new Vec2i(200, 100), tex2.getSize()), - // tex2, - // true - //); + term.drawHorizontalSingleLine(new Vec2i(0, 0), 20, c2); + term.drawHalfString(new Vec2i(6, 0), " Upgrades "); - /*renderContext.drawTextureRectangle( - new Recti(new Vec2i(400, 400), new Vec2i(160, 160)), - tileset.get(0x30), - true - );*/ + term.drawHalfString(new Vec2i(0, 1), " a", c1); + term.drawHalfString(new Vec2i(1, 1), " - [", c2); + term.drawHalfString(new Vec2i(3, 1), " Upgraded Skeleton", c1); + term.drawHalfString(new Vec2i(12, 1), " ]", c2); + term.drawHalfString(new Vec2i(16, 1), "10,000$", c1); - //byte[] str = {(byte)0xC9, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xCD, (byte)0xBB}; - //renderContext.drawString(new Vec2i(36, 36), new String(str), fontThin2, new Color(0, 255, 0)); - //renderContext.drawString(new Vec2i(36, 36), "\u00c9\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00BB", fontThin2, new Color(0, 255, 0)); - //renderContext.drawString(new Vec2i(36, 48), "\u00ba \u00ba", fontThin2, new Color(0, 255, 0)); - //renderContext.drawString(new Vec2i(36, 60), "\u00ba \u00ba", fontThin2, new Color(0, 255, 0)); - //renderContext.drawString(new Vec2i(36, 72), "\u00c8\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00cd\u00BC", fontThin2, new Color(0, 255, 0)); - //renderContext.drawString(new Vec2i(48, 48), "The quick brown fox jumps over the lazy dog", fontThin, new Color(0, 255, 0)); - //renderContext.drawString(new Vec2i(48, 60), "Soft Kitty, Warm Kitty, Little Ball of Fur. Happy Kitty, Sleepy Kitty, Purr Purr Purr.", fontThin, new Color(0, 255, 0)); + term.drawHalfString(new Vec2i(0, 2), " b", c1); + term.drawHalfString(new Vec2i(1, 2), " - [", c2); + term.drawHalfString(new Vec2i(3, 2), " Upgraded Eyes", c1); + term.drawHalfString(new Vec2i(10, 2), " ]", c2); + term.drawHalfString(new Vec2i(16, 2), " 7,000$", c1); - renderContext.drawTerminal(term); + term.drawHalfString(new Vec2i(0, 3), " c", c1); + term.drawHalfString(new Vec2i(1, 3), " - [", c2); + term.drawHalfString(new Vec2i(3, 3), " Upgraded Senses", c1); + term.drawHalfString(new Vec2i(11, 3), " ]", c2); + term.drawHalfString(new Vec2i(16, 3), " 6,000$", c1); - //renderContext.drawNineSlice(slice, new Recti(100, 100, 75, 23)); - //renderContext.drawString(new Vec2i(118, 117), "Meow", font3, new Color(0,0,0)); - //renderContext.drawString(new Vec2i(122, 105), "Meow", font, new Color(0,0,0)); - window.renderFinish(renderContext); - } + term.drawHalfString(new Vec2i(0, 4), " d", c1); + term.drawHalfString(new Vec2i(1, 4), " - [", c2); + term.drawHalfString(new Vec2i(3, 4), " Upgraded Legs", c1); + term.drawHalfString(new Vec2i(10, 4), " ]", c2); + term.drawHalfString(new Vec2i(16, 4), " 4,500$", c1); } + + @Override + protected void render(IRenderContext rc) { + rc.drawTerminal(term); + } } diff --git a/com/danitheskunk/skunkworks/BaseGame.java b/com/danitheskunk/skunkworks/BaseGame.java new file mode 100644 index 0000000..b2fa2f5 --- /dev/null +++ b/com/danitheskunk/skunkworks/BaseGame.java @@ -0,0 +1,37 @@ +package com.danitheskunk.skunkworks; + +import com.danitheskunk.skunkworks.gfx.IRenderContext; + +public abstract class BaseGame { + protected Engine engine; + protected IWindow window; + + public BaseGame(Vec2i windowSize, String windowTitle) { + this.engine = new Engine(); + this.window = engine.openWindow(windowSize, windowTitle); + init(); + } + + public void run() { + while(!window.shouldClose()) { + window.tick(); + //todo: frame rate control + update(1000.0 / 60.0); + var rc = window.renderStart(); + render(rc); + window.renderFinish(rc); + } + } + + protected void init() { + + } + + protected void render(IRenderContext rc) { + //todo: demo text? + } + + protected void update(double delta) { + + } +}