From 04f8b8b399237825fba056a7f81fac3b0481c443 Mon Sep 17 00:00:00 2001 From: Jackson Hodge Date: Thu, 9 Jul 2026 16:05:44 -0500 Subject: [PATCH] init --- .gitignore | 1 + README.md | 0 pom.xml | 45 ++++++++++++ src/main/java/xfe/JMTD.java | 7 ++ src/main/java/xfe/model/Camera.java | 75 ++++++++++++++++++++ src/main/java/xfe/model/Entity.java | 19 +++++ src/main/java/xfe/model/World.java | 40 +++++++++++ src/main/java/xfe/model/entities/Turret.java | 13 ++++ src/main/java/xfe/panels/GamePanel.java | 72 +++++++++++++++++++ 9 files changed, 272 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/xfe/JMTD.java create mode 100644 src/main/java/xfe/model/Camera.java create mode 100644 src/main/java/xfe/model/Entity.java create mode 100644 src/main/java/xfe/model/World.java create mode 100644 src/main/java/xfe/model/entities/Turret.java create mode 100644 src/main/java/xfe/panels/GamePanel.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f97022 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..9aa1876 --- /dev/null +++ b/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + + xfe + jmtd + 1.0-SNAPSHOT + + + UTF-8 + 17 + 1.18.38 + 3.13.0 + + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.plugin.version} + + ${maven.compiler.release} + + + org.projectlombok + lombok + ${lombok.version} + + + + + + + \ No newline at end of file diff --git a/src/main/java/xfe/JMTD.java b/src/main/java/xfe/JMTD.java new file mode 100644 index 0000000..6fcf09f --- /dev/null +++ b/src/main/java/xfe/JMTD.java @@ -0,0 +1,7 @@ +package xfe; + +public class JMTD { + public static void main(String[] args) { + + } +} \ No newline at end of file diff --git a/src/main/java/xfe/model/Camera.java b/src/main/java/xfe/model/Camera.java new file mode 100644 index 0000000..bc7954b --- /dev/null +++ b/src/main/java/xfe/model/Camera.java @@ -0,0 +1,75 @@ +package main.java.xfe.model; + +public class Camera { + private Integer xPos; + private Integer yPos; + + private boolean movingUp; + private boolean movingDown; + private boolean movingRight; + private boolean movingLeft; + + public static final Integer CAMERA_SPEED = 2; + + public Camera() { + this.xPos = 0; + this.yPos = 0; + + this.movingDown = false; + this.movingUp = false; + this.movingLeft = false; + this.movingRight = false; + } + + public void doTick() { + if (movingDown) { + yPos -= CAMERA_SPEED; + } + + if (movingUp) { + yPos += CAMERA_SPEED; + } + + if (movingLeft) { + xPos -= CAMERA_SPEED; + } + + if (movingRight) { + xPos += CAMERA_SPEED; + } + } + + // Getters & Setters + + public Integer getXPos() { + return this.xPos; + } + + public Integer getYPos() { + return this.yPos; + } + + public void setXPos(Integer newX) { + this.xPos = newX; + } + + public void setYPos(Integer newY) { + this.yPos = newY; + } + + public void toggleMovingUp() { + this.movingUp = !this.movingUp; + } + + public void toggleMovingDown() { + this.movingDown = !this.movingDown; + } + + public void toggleMovingLeft() { + this.movingLeft = !this.movingLeft; + } + + public void toggleMovingRight() { + this.movingRight = !this.movingRight; + } +} diff --git a/src/main/java/xfe/model/Entity.java b/src/main/java/xfe/model/Entity.java new file mode 100644 index 0000000..9173f3f --- /dev/null +++ b/src/main/java/xfe/model/Entity.java @@ -0,0 +1,19 @@ +package main.java.xfe.model; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.awt.Graphics2D; +import java.awt.Point; + +import lombok.AllArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public abstract class Entity { + private Integer x; + private Integer y; + + public abstract void draw(Graphics2D g2d, Point p); +} diff --git a/src/main/java/xfe/model/World.java b/src/main/java/xfe/model/World.java new file mode 100644 index 0000000..c61ded6 --- /dev/null +++ b/src/main/java/xfe/model/World.java @@ -0,0 +1,40 @@ +package main.java.xfe.model; + +import java.util.ArrayList; +import java.util.List; + +import java.awt.Graphics2D; +import java.awt.Point; + +import lombok.Getter; + +@Getter +public class World { + private Camera camera; + private List entities; + + public World() { + this.camera = new Camera(); + this.entities = new ArrayList<>(); + } + + public void addEntity(Entity entity) { + this.entities.add(entity); + } + + public void doTick() { + + } + + public void draw(Graphics2D g2d) { + for (Entity entity : this.entities) { + Point entityPos = new Point(entity.getX(), entity.getY()); + + entity.draw(g2d, translatePoint(entityPos)); + } + } + + private Point translatePoint(Point p) { + + } +} diff --git a/src/main/java/xfe/model/entities/Turret.java b/src/main/java/xfe/model/entities/Turret.java new file mode 100644 index 0000000..0e93c92 --- /dev/null +++ b/src/main/java/xfe/model/entities/Turret.java @@ -0,0 +1,13 @@ +package main.java.xfe.model.entities; + +import java.awt.Graphics2D; +import java.awt.Point; + +import main.java.xfe.model.Entity; + +public class Turret extends Entity { + + public void draw(Graphics2D g2d, Point p) { + g2d.drawOval(p.x, p.y, 10, 10); + } +} diff --git a/src/main/java/xfe/panels/GamePanel.java b/src/main/java/xfe/panels/GamePanel.java new file mode 100644 index 0000000..af203a6 --- /dev/null +++ b/src/main/java/xfe/panels/GamePanel.java @@ -0,0 +1,72 @@ +package xfe.panels; + +import javax.swing.JPanel; + +import main.java.xfe.model.World; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; + +public class GamePanel extends JPanel { + World world; + + public GamePanel() { + this.addKeyListener(new GameKeyListener()); + this.addMouseListener(new GameMouseListener()); + + this.world = new World(); + } + + @Override + public void paintComponent(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + g2d.setColor(Color.BLACK); + g2d.fillRect(0, 0, getWidth(), getHeight()); + + // Main draw function here + this.world.draw(g2d); + } + + class GameKeyListener implements KeyListener { + @Override + public void keyTyped(KeyEvent e) {} + + @Override + public void keyPressed(KeyEvent e) { + switch (e.getKeyCode()) { + case KeyEvent.VK_W -> world.getCamera().toggleMovingUp(); + case KeyEvent.VK_S -> world.getCamera().toggleMovingDown(); + case KeyEvent.VK_D -> world.getCamera().toggleMovingRight(); + case KeyEvent.VK_A -> world.getCamera().toggleMovingLeft(); + } + } + + @Override + public void keyReleased(KeyEvent e) {} + } +} + + + +class GameMouseListener implements MouseListener { + @Override + public void mouseClicked(MouseEvent e) {} + + @Override + public void mousePressed(MouseEvent e) {} + + @Override + public void mouseReleased(MouseEvent e) {} + + @Override + public void mouseEntered(MouseEvent e) {} + + @Override + public void mouseExited(MouseEvent e) {} +} \ No newline at end of file