From 31f8b55648098d9332831b9013c24ada5e12e106 Mon Sep 17 00:00:00 2001 From: DaniTheSkunk <> Date: Tue, 8 Nov 2022 00:46:08 +0000 Subject: [PATCH] added resources and buttons --- .gitignore | 1 + src/com/danitheskunk/skunkgame/Button.java | 52 ++++++++++++ src/com/danitheskunk/skunkgame/Resources.java | 7 ++ src/com/danitheskunk/skunkgame/SkunkGame.java | 79 ++++++++++++++++++- 4 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 src/com/danitheskunk/skunkgame/Button.java create mode 100644 src/com/danitheskunk/skunkgame/Resources.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6a3417b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/out/ diff --git a/src/com/danitheskunk/skunkgame/Button.java b/src/com/danitheskunk/skunkgame/Button.java new file mode 100644 index 0000000..2a1fbc8 --- /dev/null +++ b/src/com/danitheskunk/skunkgame/Button.java @@ -0,0 +1,52 @@ +package com.danitheskunk.skunkgame; + +import com.danitheskunk.skunkworks.Recti; +import com.danitheskunk.skunkworks.Vec2i; +import com.danitheskunk.skunkworks.gfx.vt.Terminal; + +import java.util.concurrent.Callable; + +public class Button { + private final Vec2i pos; + private static final Vec2i SIZE = new Vec2i(32, 3); + private final Recti rect; + private final String label; + private int count; + private Runnable clickCallback; + + public Button(Vec2i pos, String label) { + this.pos = pos; + this.label = label; + this.rect = new Recti(pos, SIZE); + this.count = 0; + } + + public void render(Terminal term) { + var str = label; + if(count > 0) { + str = String.format("%s (%d)", label, count); + } + boolean hover = rect.contains(SkunkGame.mousePos); + if(hover) { + term.drawBoxDouble(rect); + } else { + term.drawBoxSingle(rect); + } + var off = (rect.getWidth() - str.length()) / 2; + term.drawString(Vec2i.add(rect.getPos(), new Vec2i(off, 1)), str); + } + + public void onClick(Runnable callback) { + clickCallback = callback; + } + + public void processClick(Vec2i pos) { + if(rect.contains(pos) && clickCallback != null) { + clickCallback.run(); + } + } + + public void setCount(int count) { + this.count = count; + } +} diff --git a/src/com/danitheskunk/skunkgame/Resources.java b/src/com/danitheskunk/skunkgame/Resources.java new file mode 100644 index 0000000..08a905a --- /dev/null +++ b/src/com/danitheskunk/skunkgame/Resources.java @@ -0,0 +1,7 @@ +package com.danitheskunk.skunkgame; + +public class Resources { + public double wood; + public int den; + +} diff --git a/src/com/danitheskunk/skunkgame/SkunkGame.java b/src/com/danitheskunk/skunkgame/SkunkGame.java index 9158af5..2c3b14c 100644 --- a/src/com/danitheskunk/skunkgame/SkunkGame.java +++ b/src/com/danitheskunk/skunkgame/SkunkGame.java @@ -1,11 +1,88 @@ package com.danitheskunk.skunkgame; import com.danitheskunk.skunkworks.BaseGame; +import com.danitheskunk.skunkworks.Recti; import com.danitheskunk.skunkworks.Vec2i; +import com.danitheskunk.skunkworks.WindowStretchMode; +import com.danitheskunk.skunkworks.gfx.Color; +import com.danitheskunk.skunkworks.gfx.IRenderContext; +import com.danitheskunk.skunkworks.gfx.vt.Terminal; + +import java.util.ArrayList; +import java.util.List; public class SkunkGame extends BaseGame { + private Terminal term; + private double timeSinceLastUpdate; + private double timePerUpdate; + private Resources res; + public static Vec2i mousePos; + private List