added resources and buttons
This commit is contained in:
parent
e10f9ae829
commit
31f8b55648
|
@ -0,0 +1 @@
|
||||||
|
/out/
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.danitheskunk.skunkgame;
|
||||||
|
|
||||||
|
public class Resources {
|
||||||
|
public double wood;
|
||||||
|
public int den;
|
||||||
|
|
||||||
|
}
|
|
@ -1,11 +1,88 @@
|
||||||
package com.danitheskunk.skunkgame;
|
package com.danitheskunk.skunkgame;
|
||||||
|
|
||||||
import com.danitheskunk.skunkworks.BaseGame;
|
import com.danitheskunk.skunkworks.BaseGame;
|
||||||
|
import com.danitheskunk.skunkworks.Recti;
|
||||||
import com.danitheskunk.skunkworks.Vec2i;
|
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 {
|
public class SkunkGame extends BaseGame {
|
||||||
|
private Terminal term;
|
||||||
|
private double timeSinceLastUpdate;
|
||||||
|
private double timePerUpdate;
|
||||||
|
private Resources res;
|
||||||
|
public static Vec2i mousePos;
|
||||||
|
private List<Button> buttons;
|
||||||
|
|
||||||
public SkunkGame() {
|
public SkunkGame() {
|
||||||
super(new Vec2i(960, 540), "SkunkGame v0.0.0");
|
super(new Vec2i(1280, 700), "SkunkGame v0.0.0");
|
||||||
|
window.setStretchMode(WindowStretchMode.ASPECT);
|
||||||
|
var font = window.loadFontTileset("fonts\\ega-8x14.png");
|
||||||
|
term = new Terminal(new Vec2i(160, 50), font);
|
||||||
|
res = new Resources();
|
||||||
|
timePerUpdate = 1.0;
|
||||||
|
buttons = new ArrayList<>();
|
||||||
|
|
||||||
|
var woodButton = new Button(new Vec2i(31, 0), "Gather Wood");
|
||||||
|
woodButton.onClick(() -> res.wood += 1.0);
|
||||||
|
buttons.add(woodButton);
|
||||||
|
|
||||||
|
var denButton = new Button(new Vec2i(31, 4), "Den");
|
||||||
|
denButton.onClick(() -> {
|
||||||
|
if(res.wood >= 10.0) {
|
||||||
|
res.wood -= 10.0;
|
||||||
|
res.den += 1;
|
||||||
|
denButton.setCount(res.den);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
buttons.add(denButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void drawScreen() {
|
||||||
|
term.clear(Color.BLACK);
|
||||||
|
drawResources();
|
||||||
|
term.drawVerticalSingleLine(new Vec2i(30, 0), term.getSize().getY());
|
||||||
|
for(var button : buttons) {
|
||||||
|
button.render(term);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void drawResources() {
|
||||||
|
term.drawString(new Vec2i(0, 0), "Wood:");
|
||||||
|
term.drawString(
|
||||||
|
new Vec2i(18, 0),
|
||||||
|
String.format("%d", (int) res.wood)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tick() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void render(IRenderContext rc) {
|
||||||
|
drawScreen();
|
||||||
|
rc.drawTerminal(term);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void update(double delta) {
|
||||||
|
timeSinceLastUpdate -= delta;
|
||||||
|
if(timeSinceLastUpdate <= 0.0) {
|
||||||
|
tick();
|
||||||
|
timeSinceLastUpdate += timePerUpdate;
|
||||||
|
}
|
||||||
|
mousePos = Vec2i.div(window.getMousePos(), term.getFullCharSize());
|
||||||
|
if(window.isMouseClicked(0)) {
|
||||||
|
for(var button : buttons) {
|
||||||
|
button.processClick(mousePos);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
Loading…
Reference in New Issue