diff --git a/.idea/artifacts/Age_engine_jar.xml b/.idea/artifacts/Age_engine_jar.xml
new file mode 100644
index 0000000..f8fffd0
--- /dev/null
+++ b/.idea/artifacts/Age_engine_jar.xml
@@ -0,0 +1,12 @@
+
+
+ $PROJECT_DIR$/out/artifacts/Age_engine_jar
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index ac216bc..38d573b 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b68384a..38167d7 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,7 +1,7 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/engine/Display.java b/src/main/java/engine/Display.java
index 1f71777..f84cbe3 100644
--- a/src/main/java/engine/Display.java
+++ b/src/main/java/engine/Display.java
@@ -2,6 +2,7 @@
import engine.listeners.Keyboard;
import engine.listeners.Mouse;
+import engine.rendering.Graphics;
import javax.swing.*;
import java.awt.*;
@@ -105,6 +106,33 @@ public Display setBackgroundColor(Color bgColor) {
return this;
}
+ /**
+ * makes the window resizable
+ */
+ public Display makeResizable(boolean b){
+ frame.setResizable(b);
+ return this;
+ }
+
+ /**
+ * Sets the width of the window
+ * @param width The value you want the width to be set to
+ */
+ public Display setWidth(int width){
+ this.width = width;
+ frame.setSize(this.width, this.height);
+ return this;
+ }
+ /**
+ * Sets the height of the window
+ * @param height The value you want the height to be set to
+ */
+ public Display setHeight(int height){
+ this.height = height;
+ frame.setSize(this.width, this.height);
+ return this;
+ }
+
/**
* set the window's title to a given string
*
@@ -158,14 +186,14 @@ public BufferStrategy bs() {
* @return Returns the screen width.
*/
public int getWidth() {
- return canvas.getWidth();
+ return width;
}
/**
* @return Returns the screen height.
*/
public int getHeight() {
- return canvas.getHeight();
+ return height;
}
/**
diff --git a/src/main/java/engine/Game.java b/src/main/java/engine/Game.java
index 603269b..8c7230c 100644
--- a/src/main/java/engine/Game.java
+++ b/src/main/java/engine/Game.java
@@ -3,6 +3,7 @@
import engine.editor.EditScene;
import engine.editor.SettingsScene;
import engine.loops.Loop;
+import engine.rendering.Graphics;
import java.util.HashMap;
import java.util.Map;
@@ -15,6 +16,7 @@ public class Game {
private static final Map displays = new HashMap<>();
private static final Map scenes = new HashMap<>();
private static Loop loop;
+ private static int FPS = 60;
private Game() {
throw new IllegalStateException("Utility class");
@@ -26,6 +28,7 @@ private Game() {
public static void start() {
loop = new Loop();
loop.start();
+ loop.setFrameRate(FPS);
}
/**
@@ -35,7 +38,9 @@ public static void start() {
* @param frameRate The frame rate you want.
*/
public static void setFrameRate(int frameRate) {
- loop.setFrameRate(frameRate);
+ FPS = frameRate;
+ if (loop != null)
+ loop.setFrameRate(frameRate);
}
/**
diff --git a/src/main/java/engine/editor/EditScene.java b/src/main/java/engine/editor/EditScene.java
index 2753bea..0835b23 100644
--- a/src/main/java/engine/editor/EditScene.java
+++ b/src/main/java/engine/editor/EditScene.java
@@ -2,7 +2,7 @@
import engine.Game;
import engine.Scene;
-import engine.editor.menu.Button;
+import engine.mechanics.Button;
import engine.editor.menu.Sprite;
import engine.listeners.MouseButtons;
import engine.mechanics.*;
@@ -37,7 +37,7 @@ public void init() {
g.fillRect(1100, 451, 1280, 720);
});
TickBox t = new TickBox(1190, 650, 30, 30, this);
- Button b = new Button(1130, 500, 100, 40)
+ Button b = new Button(1130, 500, 100, 40, this)
.addEvent(MouseButtons.LEFT_DOWN, this::mouseHandler)
.addEvent(MouseButtons.RIGHT_DOWN, this::mouseHandler)
.addEvent(MouseButtons.MIDDLE_DOWN, this::mouseHandler)
@@ -47,7 +47,7 @@ public void init() {
.setTextColor(Color.red)
.setFontSize(15)
.setFont("JhengHei UI");
- Button settings = new Button(1130, 600, 100, 40)
+ Button settings = new Button(1130, 600, 100, 40, this)
.addEvent(MouseButtons.LEFT_DOWN, e -> display.attachScene("Settings"))
.setColor(Color.GREEN)
.setText("Settings")
diff --git a/src/main/java/engine/editor/SettingsScene.java b/src/main/java/engine/editor/SettingsScene.java
index 510e026..17bbdce 100644
--- a/src/main/java/engine/editor/SettingsScene.java
+++ b/src/main/java/engine/editor/SettingsScene.java
@@ -1,7 +1,7 @@
package engine.editor;
import engine.Scene;
-import engine.editor.menu.Button;
+import engine.mechanics.Button;
import engine.listeners.MouseButtons;
import engine.mechanics.TextBox;
@@ -23,7 +23,7 @@ public void init() {
.setMatcher("[0-9]*")
.setMaxValue(4)
.setText(String.valueOf(gridHeight));
- Button back = new Button(20, 20, 100, 40)
+ Button back = new Button(20, 20, 100, 40, this)
.addEvent(MouseButtons.LEFT_DOWN, e -> {
gridWidth = Integer.parseInt(gridWidthBox.getText());
gridHeight = Integer.parseInt(gridHeightBox.getText());
diff --git a/src/main/java/engine/listeners/Mouse.java b/src/main/java/engine/listeners/Mouse.java
index 0e1ef65..9af9818 100644
--- a/src/main/java/engine/listeners/Mouse.java
+++ b/src/main/java/engine/listeners/Mouse.java
@@ -144,10 +144,10 @@ public Point getMousePos() {
}
private double scaledX(int x) {
- return (x / ((double) (display.getWidth()) / 1280));
+ return (x / ((double) (display.getWidth()) / Graphics.stdWidth));
}
private double scaledY(int y) {
- return (y / ((double) (display.getHeight()) / 720));
+ return (y / ((double) (display.getHeight()) / Graphics.stdHeight));
}
}
diff --git a/src/main/java/engine/editor/menu/Button.java b/src/main/java/engine/mechanics/Button.java
similarity index 93%
rename from src/main/java/engine/editor/menu/Button.java
rename to src/main/java/engine/mechanics/Button.java
index 6297424..50dbda1 100644
--- a/src/main/java/engine/editor/menu/Button.java
+++ b/src/main/java/engine/mechanics/Button.java
@@ -1,10 +1,9 @@
-package engine.editor.menu;
+package engine.mechanics;
import engine.Entity;
-import engine.Game;
+import engine.Scene;
import engine.listeners.Mouse;
import engine.listeners.MouseButtons;
-import engine.mechanics.Hitbox;
import java.awt.*;
import java.awt.event.MouseEvent;
@@ -16,7 +15,7 @@
import static engine.rendering.Graphics.g;
public class Button implements Entity {
- private final Mouse mouseListener = Game.getScene("EditScene").mouseListener;
+ private final Mouse mouseListener;
private final Hitbox h;
private final Map> events = new EnumMap<>(MouseButtons.class);
private final int x;
@@ -32,7 +31,8 @@ public class Button implements Entity {
private int fontSize = 13;
private String fontFace = "Comic Sans MS";
- public Button(int x, int y, int width, int height) {
+ public Button(int x, int y, int width, int height, Scene scene) {
+ this.mouseListener = scene.mouseListener;
this.x = x;
this.y = y;
this.width = width;
diff --git a/src/main/java/engine/rendering/Graphics.java b/src/main/java/engine/rendering/Graphics.java
index a295987..e7b686a 100644
--- a/src/main/java/engine/rendering/Graphics.java
+++ b/src/main/java/engine/rendering/Graphics.java
@@ -19,6 +19,8 @@ public class Graphics {
public static Graphics2D g;
private static int xOffset = 0;
private static int yOffset = 0;
+ public static double stdWidth = 1280d;
+ public static double stdHeight = 720d;
private Graphics() {
throw new IllegalStateException("Utility class");
@@ -31,9 +33,9 @@ public static void graphicsLoop() {
Game.getDisplays().values().forEach(e -> {
BufferStrategy bs = e.bs();
g = (Graphics2D) bs.getDrawGraphics();
- g.setColor(Color.white);
+ g.setColor(e.getCanvas().getBackground());
g.fillRect(0, 0, e.getWidth(), e.getHeight());
- g.scale(e.getWidth() / 1280d, e.getHeight() / 720d);
+ g.scale(e.getWidth() / stdWidth, e.getHeight() / stdHeight);
Graphics.g.translate(xOffset, yOffset);
Scene s = Game.getScene(e.getAttachedScene());
if (s != null) {
@@ -53,12 +55,12 @@ public static void graphicsLoop() {
* @param y The y offset
*/
public static void moveCam(int x, int y) {
- xOffset = -x + 640;
- yOffset = -y + 360;
+ xOffset = x;
+ yOffset = y;
}
/**
- * @return Returns the current offset
+ * @return Returns the current camera position
*/
public static Point getCamPos() {
return new Point(xOffset, yOffset);
diff --git a/src/main/java/engine/rendering/Image.java b/src/main/java/engine/rendering/Image.java
index b546181..59faba8 100644
--- a/src/main/java/engine/rendering/Image.java
+++ b/src/main/java/engine/rendering/Image.java
@@ -31,7 +31,6 @@ public static BufferedImage load(String path) {
return image;
} catch (IOException | IllegalArgumentException e) {
e.printStackTrace();
- System.exit(1);
return null;
}
}
diff --git a/src/main/java/game/Launcher.java b/src/main/java/game/Launcher.java
deleted file mode 100644
index 1f4b862..0000000
--- a/src/main/java/game/Launcher.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package game;
-
-import engine.Display;
-import engine.Game;
-import game.test.GameScene;
-
-public class Launcher {
-
- public static void main(String[] args) {
-//// Display d = Game.display();
-//// d.setFullScreen(false);
-//// d.setSize(1280, 720);
-//// d.setBackgroundColor(Color.WHITE);
-// Game.addScene(new TestScene(), "Test");
-// Game.addScene(new GameScene(), "Game");
-//// d.attachScene("Test");
-//
-// Display d1 = Game.display("Game");
-// d1.attachScene("Game");
-// d1.setTitle("Test Game");
-// Game.start();
-// Game.setFrameRate(60);
-
- Game.startEditor();
- }
-}
diff --git a/src/main/java/game/TestObject.java b/src/main/java/game/TestObject.java
deleted file mode 100644
index aa2706b..0000000
--- a/src/main/java/game/TestObject.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package game;
-
-import engine.Entity;
-import engine.Scene;
-import engine.rendering.Graphics;
-
-public class TestObject implements Entity {
- public int i = 0;
-
- public TestObject(Scene scene) {
- }
-
- @Override
- public void init() {
- // TBD
- }
-
- @Override
- public void logicLoop() {
- i++;
- }
-
- @Override
- public void renderLoop() {
- Graphics.g.fillRect(0, 200, i, 520);
- }
-}
diff --git a/src/main/java/game/TestScene.java b/src/main/java/game/TestScene.java
deleted file mode 100644
index 5ca201f..0000000
--- a/src/main/java/game/TestScene.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package game;
-
-import engine.Entity;
-import engine.Scene;
-import engine.loops.Loop;
-import engine.rendering.Graphics;
-
-import java.awt.*;
-import java.awt.event.KeyEvent;
-
-public class TestScene extends Scene {
-
- @Override
- public void init() {
- display.keyListener.addListener(KeyEvent.VK_SPACE, this::reset, false);
- display.keyListener.addListener(KeyEvent.VK_ESCAPE, e -> {
- System.exit(0);
- return false;
- });
- this.addObject(new TestObject(this));
- }
-
- @Override
- public void logicLoop() {
- for (int j = 0; j++ <= 1E6; ) Math.sin(4); // benchmark to increase the frameTimes
- }
-
- public void reset(KeyEvent e) {
- Entity o = this.getObject(0);
- if (o instanceof TestObject) {
- TestObject t = (TestObject) o;
- t.i = 0;
- }
- }
-
- @Override
- public void renderLoop() {
- Graphics.g.setColor(Color.BLACK);
- Graphics.g.drawString(String.format("Time per frame in ms: %.3f", Loop.frameTime / 1E6), 0, 100);
- }
-}
diff --git a/src/main/java/game/test/GameScene.java b/src/main/java/game/test/GameScene.java
deleted file mode 100644
index cf55502..0000000
--- a/src/main/java/game/test/GameScene.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package game.test;
-
-import engine.Scene;
-import engine.editor.menu.Button;
-import engine.rendering.Graphics;
-
-public class GameScene extends Scene {
-
- @Override
- public void init() {
- Player2 pl = new Player2();
- //this.addObject(new Button(200, 200, 200, 50));
- this.addObject(pl);
- }
-
- @Override
- public void logicLoop() {
- // why do you want this from me linter?
- }
-
- @Override
- public void renderLoop() {
- Graphics.g.fillRect(-100, -100, 20, 20);
- }
-}
diff --git a/src/main/java/game/test/Player2.java b/src/main/java/game/test/Player2.java
deleted file mode 100644
index a6ab3b9..0000000
--- a/src/main/java/game/test/Player2.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package game.test;
-
-import engine.Entity;
-import engine.Game;
-import engine.listeners.Keyboard;
-import engine.loops.Loop;
-import engine.mechanics.Hitbox;
-import engine.rendering.Animation;
-import engine.rendering.Graphics;
-import engine.rendering.Image;
-
-import java.awt.*;
-import java.awt.event.KeyEvent;
-import java.awt.image.BufferedImage;
-import java.util.ArrayList;
-
-import static engine.rendering.Graphics.g;
-import static java.lang.Math.toRadians;
-
-public class Player2 implements Entity {
- private static final int WIDTH = 20;
- private static final int HEIGHT = 20;
- private final Keyboard keyListener = Game.getScene("Game").keyListener;
- private final ArrayList hitList = new ArrayList<>();
- private final BufferedImage img = Image.load("blush.png");
- private int x = 100;
- private int y = 100;
- public final Hitbox h = new Hitbox(
- new Point(x, y),
- new Point(x + WIDTH, y + HEIGHT)
- );
- private int i = 0;
-
- @Override
- public void init() {
- hitList.add(new Hitbox(new Point(50, 0), new Point(200, 50)));
- hitList.add(new Hitbox(new Point(200, 200), new Point(400, 400), new Point(200, 300)));
- hitList.get(0).rotate(1);
- Animation.createAnimation(Image.load("testSheet.png"), 3, 4, 20, null, "Idle");
- keyListener.addListener(KeyEvent.VK_SPACE, e -> Animation.play("Idle", x, y), false);
- keyListener.addListener(KeyEvent.VK_SPACE, e -> y += 10, false);
- }
-
- @Override
- public void logicLoop() {
- hitList.get(1).rotate(toRadians(i++));
- boolean inside = false;
- for (Hitbox e : hitList) if (h.isInside(e)) inside = true;
- if (!inside) {
- double speed = 5;
- for (double velo = ((keyListener.isHeld('W') ? 0 : 1) - (keyListener.isHeld('S') ? 0 : 1)) * speed;
- Math.abs(velo) >= 1; velo *= 0.9) {
- h.move(x, (int) (y + velo));
- inside = false;
- for (Hitbox e : hitList) if (h.isInside(e)) inside = true;
- if (!inside) {
- y += velo;
- break;
- }
- }
- for (double velo = ((keyListener.isHeld('A') ? 0 : 1) - (keyListener.isHeld('D') ? 0 : 1)) * speed;
- Math.abs(velo) >= 1; velo *= 0.9) {
- h.move((int) (x + velo), y);
- inside = false;
- for (Hitbox e : hitList) if (h.isInside(e)) inside = true;
- if (!inside) {
- x += velo;
- break;
- }
- }
- } else while (inside) {
- y++;
- h.move(x, y);
- inside = false;
- for (Hitbox e : hitList) if (h.isInside(e)) inside = true;
- }
- h.move(x, y);
- Graphics.moveCam(x, y);
- }
-
- @Override
- public void renderLoop() {
- Animation.updatePos("Idle", x, y);
- if (hitList.get(0).isInside(Game.getScene("Game").mouseListener.getMousePos()))
- g.setColor(Color.CYAN);
- else g.setColor(Color.blue);
- g.drawImage(img, x, y, WIDTH, HEIGHT, null);
- g.draw(h.getShape());
- g.drawString(String.format("Time per frame in ms: %.3f", Loop.frameTime / 1E6), -Graphics.getCamPos().x, 100 - Graphics.getCamPos().y);
- hitList.forEach(e -> g.draw(e.getShape()));
- }
-}
diff --git a/src/main/resources/blush.png b/src/main/resources/blush.png
deleted file mode 100644
index bed050d..0000000
Binary files a/src/main/resources/blush.png and /dev/null differ
diff --git a/src/main/resources/empty.ini b/src/main/resources/empty.ini
deleted file mode 100644
index e69de29..0000000
diff --git a/src/main/resources/escape.wav b/src/main/resources/escape.wav
deleted file mode 100644
index 8d086ae..0000000
Binary files a/src/main/resources/escape.wav and /dev/null differ
diff --git a/src/main/resources/testSheet.png b/src/main/resources/testSheet.png
deleted file mode 100644
index 547463e..0000000
Binary files a/src/main/resources/testSheet.png and /dev/null differ
diff --git a/src/main/resources/yey.ini b/src/main/resources/yey.ini
deleted file mode 100644
index 5a1b834..0000000
--- a/src/main/resources/yey.ini
+++ /dev/null
@@ -1,64 +0,0 @@
-[1117578015]
-Pos = 128,384
-Image = blush.png
-Scale = 1.0
-[1334243074]
-Pos = 512,128
-Image = blush.png
-Scale = 1.0
-[1239629989]
-Pos = 128,128
-Image = blush.png
-Scale = 1.0
-[33013872]
-Pos = 384,512
-Image = blush.png
-Scale = 2.0
-[1851464979]
-Pos = 640,128
-Image = blush.png
-Scale = 2.0
-[1133227845]
-Pos = 256,256
-Image = blush.png
-Scale = 1.0
-[948332756]
-Pos = 256,384
-Image = blush.png
-Scale = 1.0
-[1618069061]
-Pos = 640,384
-Image = blush.png
-Scale = 2.0
-[298323837]
-Pos = 512,256
-Image = blush.png
-Scale = 1.0
-[380362781]
-Pos = 384,128
-Image = blush.png
-Scale = 1.0
-[743688069]
-Pos = 256,128
-Image = blush.png
-Scale = 1.0
-[997091703]
-Pos = 128,512
-Image = blush.png
-Scale = 2.0
-[597007662]
-Pos = 512,384
-Image = blush.png
-Scale = 1.0
-[1126447352]
-Pos = 384,256
-Image = blush.png
-Scale = 1.0
-[1786194505]
-Pos = 384,384
-Image = blush.png
-Scale = 1.0
-[1824704157]
-Pos = 128,256
-Image = blush.png
-Scale = 1.0