mirror of
https://github.com/Noratrieb/Java2DGame.git
synced 2026-01-14 14:05:01 +01:00
idk
This commit is contained in:
parent
02aa5538f5
commit
81855c6a6d
11 changed files with 33 additions and 30 deletions
|
|
@ -7,12 +7,12 @@ import core.general.Master;
|
||||||
* <p>In this system, the screen is always 100 high and 100 * the screen ration wide.
|
* <p>In this system, the screen is always 100 high and 100 * the screen ration wide.
|
||||||
* This class is the used to convert these coordinates into the true Java 2D coordinates for the drawing</p>
|
* This class is the used to convert these coordinates into the true Java 2D coordinates for the drawing</p>
|
||||||
*/
|
*/
|
||||||
public class Coords {
|
public class Coordinates {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This utility class should not be instantiated
|
* This utility class should not be instantiated
|
||||||
*/
|
*/
|
||||||
private Coords() {
|
private Coordinates() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -27,7 +27,7 @@ public class Coords {
|
||||||
* @param value A point in map coordinates
|
* @param value A point in map coordinates
|
||||||
* @return The point in world coordinates
|
* @return The point in world coordinates
|
||||||
*/
|
*/
|
||||||
public static Vector2D getWorldCoords(Vector2D value) {
|
public static Vector2D getWorldCoordinates(Vector2D value) {
|
||||||
double x = (value.x / Master.SCREEN_Y_COORDINATES / Master.SCREEN_RATIO * master.getW());
|
double x = (value.x / Master.SCREEN_Y_COORDINATES / Master.SCREEN_RATIO * master.getW());
|
||||||
double y = (value.y / Master.SCREEN_Y_COORDINATES * master.getH());
|
double y = (value.y / Master.SCREEN_Y_COORDINATES * master.getH());
|
||||||
return new Vector2D(x, y);
|
return new Vector2D(x, y);
|
||||||
|
|
@ -39,7 +39,7 @@ public class Coords {
|
||||||
* @param value The Vector2D position in Java 2D coordinates
|
* @param value The Vector2D position in Java 2D coordinates
|
||||||
* @return The Vector2D position in map coordinates
|
* @return The Vector2D position in map coordinates
|
||||||
*/
|
*/
|
||||||
public static Vector2D getMapCoordsFromWorld(Vector2D value) {
|
public static Vector2D getMapCoordinatesFromWorld(Vector2D value) {
|
||||||
double x = (value.x / master.getW()) * Master.SCREEN_Y_COORDINATES * Master.SCREEN_RATIO;
|
double x = (value.x / master.getW()) * Master.SCREEN_Y_COORDINATES * Master.SCREEN_RATIO;
|
||||||
double y = (value.y / master.getH()) * Master.SCREEN_Y_COORDINATES;
|
double y = (value.y / master.getH()) * Master.SCREEN_Y_COORDINATES;
|
||||||
return new Vector2D(x, y);
|
return new Vector2D(x, y);
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package core.objects.base;
|
package core.objects.base;
|
||||||
|
|
||||||
import core.math.Coords;
|
|
||||||
import core.math.Vector2D;
|
import core.math.Vector2D;
|
||||||
import core.objects.core.GameObject;
|
import core.objects.core.GameObject;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package core.objects.core;
|
package core.objects.core;
|
||||||
|
|
||||||
import core.math.Coords;
|
import core.math.Coordinates;
|
||||||
import core.general.Drawable;
|
import core.general.Drawable;
|
||||||
import core.general.Master;
|
import core.general.Master;
|
||||||
import core.math.Vector2D;
|
import core.math.Vector2D;
|
||||||
|
|
@ -43,7 +43,7 @@ public abstract class GameObject implements Drawable {
|
||||||
* Gets called at the start of the update method
|
* Gets called at the start of the update method
|
||||||
*/
|
*/
|
||||||
public void startUpdate(){
|
public void startUpdate(){
|
||||||
if(doesDespawn && Coords.outOfBounds(position, size)){
|
if(doesDespawn && Coordinates.outOfBounds(position, size)){
|
||||||
destroy();
|
destroy();
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
|
|
@ -72,8 +72,8 @@ public abstract class GameObject implements Drawable {
|
||||||
* @param g2d The Graphics2D object provided by the master
|
* @param g2d The Graphics2D object provided by the master
|
||||||
*/
|
*/
|
||||||
public void drawRect(Graphics2D g2d) {
|
public void drawRect(Graphics2D g2d) {
|
||||||
Vector2D abs = Coords.getWorldCoords(position);
|
Vector2D abs = Coordinates.getWorldCoordinates(position);
|
||||||
Vector2D sizeAbs = Coords.getWorldCoords(size);
|
Vector2D sizeAbs = Coordinates.getWorldCoordinates(size);
|
||||||
|
|
||||||
g2d.setPaint(mainColor);
|
g2d.setPaint(mainColor);
|
||||||
g2d.fillRect((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
g2d.fillRect((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
||||||
|
|
@ -85,8 +85,8 @@ public abstract class GameObject implements Drawable {
|
||||||
* @param g2d The Graphics2D object provided by the master
|
* @param g2d The Graphics2D object provided by the master
|
||||||
*/
|
*/
|
||||||
public void fillOval(Graphics2D g2d) {
|
public void fillOval(Graphics2D g2d) {
|
||||||
Vector2D abs = Coords.getWorldCoords(position);
|
Vector2D abs = Coordinates.getWorldCoordinates(position);
|
||||||
Vector2D sizeAbs = Coords.getWorldCoords(size);
|
Vector2D sizeAbs = Coordinates.getWorldCoordinates(size);
|
||||||
|
|
||||||
g2d.setPaint(mainColor);
|
g2d.setPaint(mainColor);
|
||||||
g2d.fillOval((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
g2d.fillOval((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
||||||
|
|
@ -111,12 +111,12 @@ public abstract class GameObject implements Drawable {
|
||||||
Vector2D abs;
|
Vector2D abs;
|
||||||
|
|
||||||
if(arg.contains("center")){
|
if(arg.contains("center")){
|
||||||
abs = Coords.getWorldCoords(new Vector2D(position.x - size.x / 2, position.y - size.y / 2));
|
abs = Coordinates.getWorldCoordinates(new Vector2D(position.x - size.x / 2, position.y - size.y / 2));
|
||||||
} else {
|
} else {
|
||||||
abs = Coords.getWorldCoords(position);
|
abs = Coordinates.getWorldCoordinates(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2D sizeAbs = Coords.getWorldCoords(size);
|
Vector2D sizeAbs = Coordinates.getWorldCoordinates(size);
|
||||||
|
|
||||||
g2d.setPaint(mainColor);
|
g2d.setPaint(mainColor);
|
||||||
g2d.drawOval((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
g2d.drawOval((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
||||||
|
|
@ -131,8 +131,8 @@ public abstract class GameObject implements Drawable {
|
||||||
*/
|
*/
|
||||||
public void drawRoundRect(Graphics2D g2d, int arcW, int arcH) {
|
public void drawRoundRect(Graphics2D g2d, int arcW, int arcH) {
|
||||||
|
|
||||||
Vector2D abs = Coords.getWorldCoords(position);
|
Vector2D abs = Coordinates.getWorldCoordinates(position);
|
||||||
Vector2D sizeAbs = Coords.getWorldCoords(size);
|
Vector2D sizeAbs = Coordinates.getWorldCoordinates(size);
|
||||||
|
|
||||||
int xCenterAbs = (int) (abs.x + sizeAbs.x / 2);
|
int xCenterAbs = (int) (abs.x + sizeAbs.x / 2);
|
||||||
int yCenterAbs = (int) (abs.y + sizeAbs.y / 2);
|
int yCenterAbs = (int) (abs.y + sizeAbs.y / 2);
|
||||||
|
|
@ -158,7 +158,7 @@ public abstract class GameObject implements Drawable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector2D getWorldCoordsFromLocal(Vector2D value) {
|
public Vector2D getWorldCoordsFromLocal(Vector2D value) {
|
||||||
return Coords.getWorldCoords(getMapCoords(value));
|
return Coordinates.getWorldCoordinates(getMapCoords(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package core.physics.hitboxes;
|
package core.physics.hitboxes;
|
||||||
|
|
||||||
import core.math.Coords;
|
import core.math.Coordinates;
|
||||||
import core.general.Master;
|
import core.general.Master;
|
||||||
import core.math.Vector2D;
|
import core.math.Vector2D;
|
||||||
import objects.Init;
|
import objects.Init;
|
||||||
|
|
@ -10,6 +10,7 @@ import java.awt.*;
|
||||||
/**
|
/**
|
||||||
* A rectangular hitbox
|
* A rectangular hitbox
|
||||||
*/
|
*/
|
||||||
|
//TODO hitbox position not calculated correctlyA
|
||||||
public class RectHitBox extends Hitbox {
|
public class RectHitBox extends Hitbox {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -176,8 +177,8 @@ public class RectHitBox extends Hitbox {
|
||||||
@Override
|
@Override
|
||||||
public void draw(Graphics2D g2d) {
|
public void draw(Graphics2D g2d) {
|
||||||
|
|
||||||
Vector2D abs = Coords.getWorldCoords(x1);
|
Vector2D abs = Coordinates.getWorldCoordinates(x1);
|
||||||
Vector2D sizeAbs = Coords.getWorldCoords(Vector2D.subtract(y2, x1));
|
Vector2D sizeAbs = Coordinates.getWorldCoordinates(Vector2D.subtract(y2, x1));
|
||||||
|
|
||||||
g2d.setPaint(Color.MAGENTA);
|
g2d.setPaint(Color.MAGENTA);
|
||||||
g2d.drawRect((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
g2d.drawRect((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ import java.awt.*;
|
||||||
*/
|
*/
|
||||||
public class Init {
|
public class Init {
|
||||||
|
|
||||||
public static final boolean DEBUG_MODE = false;
|
public static final boolean DEBUG_MODE = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new GameObject
|
* Create a new GameObject
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ package objects.ships;
|
||||||
|
|
||||||
import core.general.Input;
|
import core.general.Input;
|
||||||
import core.math.Vector2D;
|
import core.math.Vector2D;
|
||||||
|
import core.objects.core.CollGameObject;
|
||||||
import core.objects.core.GameObject;
|
import core.objects.core.GameObject;
|
||||||
|
import core.physics.hitboxes.RectHitBox;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
|
@ -11,7 +13,7 @@ import java.util.ArrayList;
|
||||||
/**
|
/**
|
||||||
* A Battleship that can have several turrets
|
* A Battleship that can have several turrets
|
||||||
*/
|
*/
|
||||||
public class BattleShip extends GameObject {
|
public class BattleShip extends CollGameObject {
|
||||||
|
|
||||||
public static final double SPPED = 1;
|
public static final double SPPED = 1;
|
||||||
private static final double TURN_RATE = 0.05;
|
private static final double TURN_RATE = 0.05;
|
||||||
|
|
@ -29,7 +31,7 @@ public class BattleShip extends GameObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
public BattleShip(double x, double y, double xSize, double ySize, Color mainColor) {
|
public BattleShip(double x, double y, double xSize, double ySize, Color mainColor) {
|
||||||
super(x, y, xSize, ySize);
|
super(x, y, xSize, ySize, new RectHitBox(new Vector2D(x, y), new Vector2D(xSize, ySize)));
|
||||||
turrets = new ArrayList<>();
|
turrets = new ArrayList<>();
|
||||||
this.mainColor = mainColor;
|
this.mainColor = mainColor;
|
||||||
this.doesDespawn = false;
|
this.doesDespawn = false;
|
||||||
|
|
@ -46,7 +48,8 @@ public class BattleShip extends GameObject {
|
||||||
public void update() {
|
public void update() {
|
||||||
|
|
||||||
if (playerControlled) {
|
if (playerControlled) {
|
||||||
position.add(getV2DRotation().multiply(Input.getVerticalAxis() * SPPED));
|
|
||||||
|
moveTo(Vector2D.add(position, getV2DRotation().multiply(Input.getVerticalAxis() * SPPED)));
|
||||||
|
|
||||||
rotation += Input.getHorizontalAxis() * TURN_RATE;
|
rotation += Input.getHorizontalAxis() * TURN_RATE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package objects.ships;
|
package objects.ships;
|
||||||
|
|
||||||
import core.math.Coords;
|
import core.math.Coordinates;
|
||||||
import core.math.Vector2D;
|
import core.math.Vector2D;
|
||||||
import core.physics.hitboxes.RectHitBox;
|
import core.physics.hitboxes.RectHitBox;
|
||||||
import core.objects.core.CollGameObject;
|
import core.objects.core.CollGameObject;
|
||||||
|
|
@ -24,7 +24,7 @@ public class Submarine extends CollGameObject {
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
Point mouse = master.getMouseLocation();
|
Point mouse = master.getMouseLocation();
|
||||||
Vector2D relPos = Coords.getMapCoordsFromWorld(new Vector2D(mouse.x, mouse.y));
|
Vector2D relPos = Coordinates.getMapCoordinatesFromWorld(new Vector2D(mouse.x, mouse.y));
|
||||||
Vector2D centerRelPos = new Vector2D(relPos.x - size.x/2, relPos.y - size.y/2);
|
Vector2D centerRelPos = new Vector2D(relPos.x - size.x/2, relPos.y - size.y/2);
|
||||||
moveTo(centerRelPos);
|
moveTo(centerRelPos);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package objects.ships;
|
package objects.ships;
|
||||||
|
|
||||||
import core.general.Input;
|
import core.general.Input;
|
||||||
import core.math.Coords;
|
import core.math.Coordinates;
|
||||||
import core.math.ExMath;
|
import core.math.ExMath;
|
||||||
import core.math.Vector2D;
|
import core.math.Vector2D;
|
||||||
import core.objects.core.GameObject;
|
import core.objects.core.GameObject;
|
||||||
|
|
@ -44,13 +44,13 @@ public class Turret extends GameObject {
|
||||||
public void draw(Graphics2D g2d) {
|
public void draw(Graphics2D g2d) {
|
||||||
g2d.setPaint(mainColor);
|
g2d.setPaint(mainColor);
|
||||||
Vector2D abs = battleShip.getWorldCoordsFromLocal(position);
|
Vector2D abs = battleShip.getWorldCoordsFromLocal(position);
|
||||||
int sizeAbs = (int) Coords.getWorldCoords(size).x;
|
int sizeAbs = (int) Coordinates.getWorldCoordinates(size).x;
|
||||||
int xCenterAbs = (int) (abs.x + sizeAbs / 2);
|
int xCenterAbs = (int) (abs.x + sizeAbs / 2);
|
||||||
int yCenterAbs = (int) (abs.y + sizeAbs / 2);
|
int yCenterAbs = (int) (abs.y + sizeAbs / 2);
|
||||||
|
|
||||||
g2d.fillOval((int) abs.x, (int) abs.y, sizeAbs, sizeAbs);
|
g2d.fillOval((int) abs.x, (int) abs.y, sizeAbs, sizeAbs);
|
||||||
|
|
||||||
g2d.setStroke(new BasicStroke((int) Coords.getWorldCoords(new Vector2D(size.x / barrelAmount / BARREL_THICKNESS, 0)).x, BasicStroke.CAP_BUTT,
|
g2d.setStroke(new BasicStroke((int) Coordinates.getWorldCoordinates(new Vector2D(size.x / barrelAmount / BARREL_THICKNESS, 0)).x, BasicStroke.CAP_BUTT,
|
||||||
BasicStroke.JOIN_BEVEL));
|
BasicStroke.JOIN_BEVEL));
|
||||||
|
|
||||||
//BARRELS---------------------------------------
|
//BARRELS---------------------------------------
|
||||||
|
|
@ -79,7 +79,7 @@ public class Turret extends GameObject {
|
||||||
public void update() {
|
public void update() {
|
||||||
|
|
||||||
Point msLoc = master.getMouseLocation();
|
Point msLoc = master.getMouseLocation();
|
||||||
Vector2D mouseRel = Coords.getMapCoordsFromWorld(Vector2D.fromPoint(msLoc)); //100 correct
|
Vector2D mouseRel = Coordinates.getMapCoordinatesFromWorld(Vector2D.fromPoint(msLoc)); //100 correct
|
||||||
Vector2D centerMap = battleShip.getMapCoords(getCenterPosition());
|
Vector2D centerMap = battleShip.getMapCoords(getCenterPosition());
|
||||||
double targetRotation = -Math.atan2(centerMap.x - mouseRel.x, centerMap.y - mouseRel.y);
|
double targetRotation = -Math.atan2(centerMap.x - mouseRel.x, centerMap.y - mouseRel.y);
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue