moved lots of code around

This commit is contained in:
nora 2020-12-13 12:07:30 +01:00
parent 3566916125
commit adb8e185fb
21 changed files with 230 additions and 108 deletions

View file

@ -0,0 +1,50 @@
package core;
import core.math.Vector2D;
/**
* This class provides everything about the local coordinate system the game uses
* <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>
*/
//TODO make this return a vector2d instead of the isX
public class Coords {
/**
* This utility class should not be instantiated
*/
private Coords() {
}
/**
* The master object used to get the screen size
*/
public static Master master = Master.getMaster();
public static Vector2D getWorldCoords(Vector2D value) {
double x = (value.x / (Master.SCREEN_Y_COORDINATES * Master.SCREEN_RATIO) * master.getW());
double y = (value.y / Master.SCREEN_Y_COORDINATES * master.getH());
return new Vector2D(x, y);
}
/**
* Get local map coordinates (h=100) from the absolute Java 2D coordinates
*
* @param value The Vector2D position in Java 2D coordinates
* @return The Vector2D position in map coordinates
*/
public static Vector2D getMapCoordsFromWorld(Vector2D value) {
double x = (value.x / master.getW()) * Master.SCREEN_Y_COORDINATES * Master.SCREEN_RATIO;
double y = (value.y / master.getH()) * Master.SCREEN_Y_COORDINATES;
return new Vector2D(x, y);
}
public static Vector2D getWorldCoordsSize(Vector2D value) {
//TODO h not w
double x = (value.x / Master.SCREEN_Y_COORDINATES * master.getW());
double y = (value.y / Master.SCREEN_Y_COORDINATES * master.getH());
return new Vector2D(x, y);
}
}

View file

@ -3,6 +3,7 @@ package core;
import java.awt.*; import java.awt.*;
public interface Drawable { public interface Drawable {
/** /**
* <p>The draw method is called every frame after the update by the master object on each object. Everything * <p>The draw method is called every frame after the update by the master object on each object. Everything
* about drawing should be handled here in this method.</p> * about drawing should be handled here in this method.</p>

View file

@ -14,8 +14,6 @@ import java.awt.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
//TODO master better accessible or something
/** /**
* The main object that controls everything * The main object that controls everything
*/ */
@ -31,8 +29,10 @@ public class Master extends JPanel {
*/ */
public static final double SCREEN_Y_COORDINATES = 100d; public static final double SCREEN_Y_COORDINATES = 100d;
@Deprecated /**
public static final double SCREEN_X_COORDINATES = 100d * SCREEN_RATIO; * The master object
*/
private static Master master;
/** /**
* All GameObjects that exist * All GameObjects that exist
@ -54,12 +54,22 @@ public class Master extends JPanel {
*/ */
private final ArrayList<GameObject> objectBuffer; private final ArrayList<GameObject> objectBuffer;
/**
* Whether the left mouse button has been pressed since the last frame
*/
private boolean mousePressed = false; private boolean mousePressed = false;
/**
* The current width and height of the game area
*/
private int w,h;
/** /**
* Create a new master object * Create a new master object
*/ */
public Master() { public Master() {
master = this;
objects = new ArrayList<>(); objects = new ArrayList<>();
objectBuffer = new ArrayList<>(); objectBuffer = new ArrayList<>();
collidables = new ArrayList<>(); collidables = new ArrayList<>();
@ -80,6 +90,10 @@ public class Master extends JPanel {
create(new Wall(20, 80, 50, 2)); create(new Wall(20, 80, 50, 2));
} }
public static Master getMaster() {
return master;
}
/** /**
* The mein drawing method, handles everything about drawing * The mein drawing method, handles everything about drawing
* *
@ -87,7 +101,6 @@ public class Master extends JPanel {
*/ */
private void doDrawing(Graphics g) { private void doDrawing(Graphics g) {
int w, h;
if (getWidth() * 9 > getHeight() * 16) { if (getWidth() * 9 > getHeight() * 16) {
h = getHeight(); h = getHeight();
w = h / 9 * 16; w = h / 9 * 16;
@ -111,7 +124,7 @@ public class Master extends JPanel {
/** /**
* Debug a position, creates a green dot at the position * Debug a position, creates a green dot at the position
* *
* @param pos * @param pos The position
*/ */
public void debugPos(Vector2D pos) { public void debugPos(Vector2D pos) {
create(new DebugPos(pos, new Vector2D(10, 10))); create(new DebugPos(pos, new Vector2D(10, 10)));
@ -130,7 +143,7 @@ public class Master extends JPanel {
public void refresh() { public void refresh() {
objects.addAll(objectBuffer); objects.addAll(objectBuffer);
objectBuffer.clear(); objectBuffer.clear();
objects.forEach(t -> t.update(this)); objects.forEach(GameObject::update);
mousePressed = false; mousePressed = false;
repaint(); repaint();
} }
@ -164,10 +177,19 @@ public class Master extends JPanel {
} }
public void addDrawable(Drawable d){ public void addDrawable(Drawable d) {
drawables.add(d); drawables.add(d);
} }
/**
* Check whether a collidables collide with another one
*
* @param col The collidable to be checked
* @return True if it collides with something, false if it doesn't - Should return a Collision
*/
@Deprecated
//TODO make it return a Collision
public boolean doesCollide(Collidable col) { public boolean doesCollide(Collidable col) {
boolean collides = false; boolean collides = false;
@ -187,4 +209,20 @@ public class Master extends JPanel {
} }
return collides; return collides;
} }
public int getW() {
return w;
}
public int getH() {
return h;
}
public void destroy(GameObject gameObject) {
objects.remove(gameObject);
drawables.remove(gameObject);
if(gameObject instanceof Collidable){
collidables.remove(gameObject);
}
}
} }

View file

@ -92,6 +92,7 @@ public class Vector2D {
/** /**
* Add two Vectors * Add two Vectors
*
* @param a Vector a * @param a Vector a
* @param b Vector b * @param b Vector b
* @return The result * @return The result
@ -102,6 +103,7 @@ public class Vector2D {
/** /**
* Subtract two Vectors * Subtract two Vectors
*
* @param a Vector a * @param a Vector a
* @param b Vector b * @param b Vector b
* @return The result * @return The result
@ -112,7 +114,7 @@ public class Vector2D {
/** /**
* Rotate a point around another point * Rotate a point around another point
* * <p>
* This method can now be trusted * This method can now be trusted
* *
* @param center The center of the rotation * @param center The center of the rotation
@ -121,7 +123,7 @@ public class Vector2D {
* @param rotationDirection The direction, -1 for clockwise, 1 for counterclockwise * @param rotationDirection The direction, -1 for clockwise, 1 for counterclockwise
* @return The rotated point * @return The rotated point
*/ */
public static Vector2D rotateAround(Vector2D center, Vector2D value, double rotation, int rotationDirection){ public static Vector2D rotateAround(Vector2D center, Vector2D value, double rotation, int rotationDirection) {
Vector2D dif = Vector2D.subtract(value, center); Vector2D dif = Vector2D.subtract(value, center);
@ -135,7 +137,7 @@ public class Vector2D {
/** /**
* Rotate a point around another point * Rotate a point around another point
* * <p>
* This method can now be trusted * This method can now be trusted
* *
* @param center The center of the rotation * @param center The center of the rotation
@ -143,21 +145,22 @@ public class Vector2D {
* @param rotation The rotation angle in radians * @param rotation The rotation angle in radians
* @return The rotated point * @return The rotated point
*/ */
public static Vector2D rotateAround(Vector2D center, Vector2D value, double rotation){ public static Vector2D rotateAround(Vector2D center, Vector2D value, double rotation) {
return rotateAround(center, value, rotation, COUNTERCLOCKWISE); return rotateAround(center, value, rotation, COUNTERCLOCKWISE);
} }
/** /**
* Get a unit vector with magnitude 1 and the direction * Get a unit vector with magnitude 1 and the direction
*
* @param direction The direction of the vector * @param direction The direction of the vector
* @return The unit vector * @return The unit vector
*/ */
public static Vector2D getUnitVector(double direction){ public static Vector2D getUnitVector(double direction) {
return rotateAround(new Vector2D(), new Vector2D(0, 1), direction); return rotateAround(new Vector2D(), new Vector2D(0, 1), direction);
} }
public static double distance(Vector2D a, Vector2D b){ public static double distance(Vector2D a, Vector2D b) {
Vector2D dif = subtract(a, b); Vector2D dif = subtract(a, b);
return Math.sqrt(dif.x * dif.x + dif.y + dif.y); return Math.sqrt(dif.x * dif.x + dif.y + dif.y);
} }
@ -165,9 +168,10 @@ public class Vector2D {
/** /**
* Copy this object * Copy this object
*
* @return A copy of this object * @return A copy of this object
*/ */
public Vector2D copy(){ public Vector2D copy() {
return new Vector2D(x, y); return new Vector2D(x, y);
} }

View file

@ -0,0 +1,27 @@
package core.physics;
public class Collision {
Collidable a;
Collidable b;
boolean haveCollided;
public Collision(Collidable a, Collidable b, boolean haveCollided) {
this.a = a;
this.b = b;
this.haveCollided = haveCollided;
}
public Collidable getA() {
return a;
}
public Collidable getB() {
return b;
}
public boolean isHaveCollided() {
return haveCollided;
}
}

View file

@ -10,6 +10,8 @@ import java.awt.*;
*/ */
public class RectHitBox extends Hitbox { public class RectHitBox extends Hitbox {
int w,h;
/** /**
* The corners of the rectangle like this: * The corners of the rectangle like this:
* <p>x1 x2</p> * <p>x1 x2</p>
@ -148,7 +150,32 @@ public class RectHitBox extends Hitbox {
@Override @Override
public void draw(Graphics2D g2d, int w, Master master) { public void draw(Graphics2D g2d, int w, Master master) {
g2d.setPaint(Color.BLUE);
g2d.fillRect((int) x1.y, (int) x1.y, (int) (x2.x - x1.x), (int) (y1.y - x1.y)); this.w = w;
int h = (int) (w / Master.SCREEN_RATIO);
int xAbs = (int) getWorldCoords(x1.x, true);
int yAbs = (int) getWorldCoords(x1.y, false);
int sizeXAbs = (int) getWorldCoordsSize(x2.x - x1.x, true);
int sizeYAbs = (int) getWorldCoordsSize(y1.y - x1.y, false);
g2d.fillRect(xAbs, yAbs, sizeXAbs, sizeYAbs);
g2d.setPaint(Color.MAGENTA);
}
public double getWorldCoords(double value, boolean isX) {
if (isX) {
return (value / (Master.SCREEN_Y_COORDINATES * Master.SCREEN_RATIO) * w);
} else {
return (value / Master.SCREEN_Y_COORDINATES * h);
}
}
public double getWorldCoordsSize(double value, boolean isX) {
if (isX) {
return (value / Master.SCREEN_Y_COORDINATES * w);
} else {
return (value / Master.SCREEN_Y_COORDINATES * h);
}
} }
} }

View file

@ -21,6 +21,6 @@ public class DebugPos extends GameObject {
} }
@Override @Override
public void update(Master master) { public void update() {
} }
} }

View file

@ -1,5 +1,6 @@
package objects; package objects;
import core.Coords;
import core.Drawable; import core.Drawable;
import core.Master; import core.Master;
import core.math.Vector2D; import core.math.Vector2D;
@ -9,7 +10,7 @@ import java.awt.*;
/** /**
* The GameObject class is the superclass of every GameObject that can be displayed on screen. It has the 2 * The GameObject class is the superclass of every GameObject that can be displayed on screen. It has the 2
* {@link #update(Master)} and {@link #draw(Graphics2D, int, Master)} methods that have to be * {@link #update()} and {@link #draw(Graphics2D, int, Master)} methods that have to be
*/ */
public abstract class GameObject implements Drawable { public abstract class GameObject implements Drawable {
@ -23,6 +24,8 @@ public abstract class GameObject implements Drawable {
protected Color mainColor; protected Color mainColor;
protected Master master;
public GameObject(double x, double y, double xSize, double ySize) { public GameObject(double x, double y, double xSize, double ySize) {
this(new Vector2D(x, y), new Vector2D(xSize, ySize)); this(new Vector2D(x, y), new Vector2D(xSize, ySize));
} }
@ -32,6 +35,7 @@ public abstract class GameObject implements Drawable {
this.size = size; this.size = size;
this.velocity = new Vector2D(); this.velocity = new Vector2D();
mainColor = Color.BLACK; mainColor = Color.BLACK;
this.master = Master.getMaster();
} }
@ -40,17 +44,15 @@ public abstract class GameObject implements Drawable {
* that is needed for the game to work should be here in this method.</p> * that is needed for the game to work should be here in this method.</p>
* <p>No drawing should be made in this method. The {@code debug} method can be called on the master.</p> * <p>No drawing should be made in this method. The {@code debug} method can be called on the master.</p>
* <p>This function is <i>NOT</i> intended to be called manually.</p> * <p>This function is <i>NOT</i> intended to be called manually.</p>
*
* @param master The master object itself
*/ */
public abstract void update(Master master); public abstract void update();
/** /**
* A simple method to move the object to a Vector2D. This method should be called instead of doing it manually. * A simple method to move the object to a Vector2D. This method should be called instead of doing it manually.
* *
* @param target The target position * @param target The target position
*/ */
public void moveTo(Vector2D target, Master master) { public void moveTo(Vector2D target) {
Vector2D oldPos = position; Vector2D oldPos = position;
this.position = target; this.position = target;
@ -70,13 +72,11 @@ public abstract class GameObject implements Drawable {
public void drawRect(Graphics2D g2d, int w) { public void drawRect(Graphics2D g2d, int w) {
this.w = w; this.w = w;
h = (int) (this.w / Master.SCREEN_RATIO); h = (int) (this.w / Master.SCREEN_RATIO);
int xAbs = (int) getWorldCoords(position.x, true); Vector2D abs = Coords.getWorldCoords(position);
int yAbs = (int) getWorldCoords(position.y, false); Vector2D sizeAbs = Coords.getWorldCoordsSize(size);
int sizeXAbs = (int) getWorldCoordsSize(size.x, true);
int sizeYAbs = (int) getWorldCoordsSize(size.y, false);
g2d.setPaint(mainColor); g2d.setPaint(mainColor);
g2d.fillRect(xAbs, yAbs, sizeXAbs, sizeYAbs); g2d.fillRect((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
} }
/** /**
@ -88,13 +88,11 @@ public abstract class GameObject implements Drawable {
public void drawOval(Graphics2D g2d, int w) { public void drawOval(Graphics2D g2d, int w) {
this.w = w; this.w = w;
h = (int) (this.w / Master.SCREEN_RATIO); h = (int) (this.w / Master.SCREEN_RATIO);
int xAbs = (int) getWorldCoords(position.x, true); Vector2D abs = Coords.getWorldCoords(position);
int yAbs = (int) getWorldCoords(position.y, false); Vector2D sizeAbs = Coords.getWorldCoordsSize(size);
int sizeXAbs = (int) getWorldCoordsSize(size.x, true);
int sizeYAbs = (int) getWorldCoordsSize(size.y, false);
g2d.setPaint(mainColor); g2d.setPaint(mainColor);
g2d.fillOval(xAbs, yAbs, sizeXAbs, sizeYAbs); g2d.fillOval((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y);
} }
/** /**
@ -108,63 +106,41 @@ public abstract class GameObject implements Drawable {
public void drawRoundRect(Graphics2D g2d, int w, int arcW, int arcH) { public void drawRoundRect(Graphics2D g2d, int w, int arcW, int arcH) {
this.w = w; this.w = w;
h = (int) (w / Master.SCREEN_RATIO); h = (int) (w / Master.SCREEN_RATIO);
int xAbs = (int) getWorldCoords(position.x, true); Vector2D abs = Coords.getWorldCoords(position);
int yAbs = (int) getWorldCoords(position.y, false); Vector2D sizeAbs = Coords.getWorldCoordsSize(size);
int sizeXAbs = (int) getWorldCoordsSize(size.x, true);
int sizeYAbs = (int) getWorldCoordsSize(size.y, false);
g2d.setPaint(mainColor); g2d.setPaint(mainColor);
g2d.fillRoundRect(xAbs, yAbs, sizeXAbs, sizeYAbs, arcW, arcH); g2d.fillRoundRect((int) abs.x, (int) abs.y, (int) sizeAbs.x, (int) sizeAbs.y, arcW, arcH);
} }
public double getWorldCoords(double value, boolean isX) { public void destroy() {
if (isX) { master.destroy(this);
return (value / (Master.SCREEN_Y_COORDINATES * Master.SCREEN_RATIO) * w);
} else {
return (value / Master.SCREEN_Y_COORDINATES * h);
}
} }
public Vector2D getMapCoordsFromWorld(Vector2D value){
double x = (value.x / w) * Master.SCREEN_Y_COORDINATES * Master.SCREEN_RATIO; public Vector2D getMapCoords(Vector2D value) {
double y = (value.y / h) * Master.SCREEN_Y_COORDINATES; double x = (position.x + value.x / 100d * size.x);
double y = (position.y + value.y / 100d * size.y);
return new Vector2D(x, y); return new Vector2D(x, y);
} }
public double getWorldCoordsSize(double value, boolean isX) { public Vector2D getMapCoordsSize(Vector2D value) {
if (isX) { double x = (value.x / 100d * size.x);
return (value / Master.SCREEN_Y_COORDINATES * w); double y = (value.y / 100d * size.y);
} else { return new Vector2D(x, y);
return (value / Master.SCREEN_Y_COORDINATES * h);
}
} }
public Vector2D getWorldCoordsFromLocal(Vector2D value) {
public double getMapCoords(double value, boolean isX) { return Coords.getWorldCoords(getMapCoords(value));
if (isX) {
return (position.x + value / 100d * size.x);
} else {
return (position.y + value / 100d * size.y);
}
} }
public double getMapCoordsSize(double value, boolean useX) { public Vector2D getWorldCoordsFromLocalSize(Vector2D value) {
if (useX) { return Coords.getWorldCoordsSize(getMapCoordsSize(value));
return (value / 100d * size.x);
} else {
return (value / 100d * size.y);
}
} }
public int getWorldCoordsFromLocal(double value, boolean isX) { public Vector2D getCenterPosition() {
return (int) getWorldCoords(getMapCoords(value, isX), isX); return new Vector2D(position.x - size.x / 2, position.y - size.y / 2);
}
public int getWorldCoordsFromLocalSize(double value, boolean useX) {
return (int) getWorldCoordsSize(getMapCoordsSize(value, useX), useX);
}
public Vector2D getCenterPosition(){
return new Vector2D(position.x - size.x/2, position.y - size.y/2);
} }
} }

View file

@ -35,8 +35,8 @@ public class BattleShip extends GameObject {
} }
@Override @Override
public void update(Master master) { public void update() {
turrets.forEach((turret -> turret.update(master))); turrets.forEach(Turret::update);
} }
public void addTurret(Turret turret){ public void addTurret(Turret turret){

View file

@ -21,7 +21,7 @@ public class Shell extends GameObject {
} }
@Override @Override
public void update(Master master) { public void update() {
position.add(velocity); position.add(velocity);
} }
} }

View file

@ -1,5 +1,6 @@
package objects.ships; package objects.ships;
import core.Coords;
import core.Master; import core.Master;
import core.math.Vector2D; import core.math.Vector2D;
import core.physics.Collidable; import core.physics.Collidable;
@ -26,11 +27,11 @@ public class Submarine extends GameObject implements Collidable {
} }
@Override @Override
public void update(Master master) { public void update() {
Point mouse = master.getMouseLocation(); Point mouse = master.getMouseLocation();
Vector2D relPos = getMapCoordsFromWorld(new Vector2D(mouse.x, mouse.y)); Vector2D relPos = Coords.getMapCoordsFromWorld(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, master); moveTo(centerRelPos);
} }
@Override @Override

View file

@ -45,26 +45,25 @@ public class Turret extends GameObject {
public void draw(Graphics2D g2d, int w, Master master) { public void draw(Graphics2D g2d, int w, Master master) {
h = w / 16 * 9; h = w / 16 * 9;
g2d.setPaint(mainColor); g2d.setPaint(mainColor);
int xAbs = battleShip.getWorldCoordsFromLocal(position.x, true); Vector2D abs = battleShip.getWorldCoordsFromLocal(position);
int yAbs = battleShip.getWorldCoordsFromLocal(position.y, false); int sizeAbs = (int) battleShip.getWorldCoordsFromLocalSize(size).x;
int sizeAbs = battleShip.getWorldCoordsFromLocalSize(size.x, true); int xCenterAbs = (int) (abs.x + sizeAbs / 2);
int xCenterAbs = xAbs + sizeAbs / 2; int yCenterAbs = (int) (abs.y + sizeAbs / 2);
int yCenterAbs = yAbs + sizeAbs / 2;
g2d.fillOval(xAbs, yAbs, sizeAbs, sizeAbs); g2d.fillOval((int) abs.x, (int) abs.y, (int) sizeAbs, (int) sizeAbs);
g2d.setStroke(new BasicStroke(battleShip.getWorldCoordsFromLocalSize(10, true), BasicStroke.CAP_BUTT, g2d.setStroke(new BasicStroke((int) battleShip.getWorldCoordsFromLocalSize(new Vector2D(10, 0)).x, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_BEVEL)); BasicStroke.JOIN_BEVEL));
//BARRELS--------------------------------------- //BARRELS---------------------------------------
g2d.setPaint(Color.BLACK); g2d.setPaint(Color.BLACK);
int barrelSpacing = sizeAbs / (barrelAmount + 1); int barrelSpacing = (int) (sizeAbs / (barrelAmount + 1));
g2d.rotate(rotation, xCenterAbs, yCenterAbs); g2d.rotate(rotation, xCenterAbs, yCenterAbs);
for (int i = 0; i < barrelAmount; i++) { for (int i = 0; i < barrelAmount; i++) {
int barrelX = xAbs + (i + 1) * barrelSpacing; int barrelX = (int) (abs.x + (i + 1) * barrelSpacing);
int frontPosY = yAbs - sizeAbs / 2; int frontPosY = (int) (abs.y - sizeAbs / 2);
g2d.drawLine(barrelX, yCenterAbs, barrelX, frontPosY); g2d.drawLine(barrelX, yCenterAbs, barrelX, frontPosY);
if (lastShot + SHOT_EFFECT_TIME > System.currentTimeMillis()) { if (lastShot + SHOT_EFFECT_TIME > System.currentTimeMillis()) {
@ -79,13 +78,12 @@ public class Turret extends GameObject {
} }
@Override @Override
public void update(Master master) { public void update() {
int xAbs = battleShip.getWorldCoordsFromLocal(position.x, true); Vector2D abs = battleShip.getWorldCoordsFromLocal(position);
int yAbs = battleShip.getWorldCoordsFromLocal(position.y, false); int sizeAbs = (int) battleShip.getWorldCoordsFromLocalSize(size).x;
int sizeAbs = battleShip.getWorldCoordsFromLocalSize(size.x, true); int xCenterAbs = (int) (abs.x + sizeAbs / 2);
int xCenterAbs = xAbs + sizeAbs / 2; int yCenterAbs = (int) (abs.y + sizeAbs / 2);
int yCenterAbs = yAbs + sizeAbs / 2;
Point msLoc = master.getMouseLocation(); Point msLoc = master.getMouseLocation();
double targetRotation = -Math.atan2(xCenterAbs - msLoc.x, yCenterAbs - msLoc.y); double targetRotation = -Math.atan2(xCenterAbs - msLoc.x, yCenterAbs - msLoc.y);
@ -93,11 +91,11 @@ public class Turret extends GameObject {
rotation = ExMath.angleLerp(rotation, targetRotation, ROTATION_SPEED); rotation = ExMath.angleLerp(rotation, targetRotation, ROTATION_SPEED);
int barrelSpacing = sizeAbs / (barrelAmount + 1); int barrelSpacing = (int) (sizeAbs / (barrelAmount + 1));
for (int i = 0; i < barrelAmount; i++) { for (int i = 0; i < barrelAmount; i++) {
int barrelX = xAbs + (i + 1) * barrelSpacing; int barrelX = (int) (abs.x + (i + 1) * barrelSpacing);
int frontPosY = yAbs - sizeAbs / 2; int frontPosY = (int) (abs.y - sizeAbs / 2);
if (master.isMousePressed()) { if (master.isMousePressed()) {
lastShot = System.currentTimeMillis(); lastShot = System.currentTimeMillis();

View file

@ -41,7 +41,7 @@ public class Grid extends GameObject {
} }
@Override @Override
public void update(Master master) { public void update() {
} }
} }

View file

@ -24,7 +24,7 @@ public class Wall extends GameObject implements Collidable {
} }
@Override @Override
public void update(Master master) { public void update() {
} }
@Override @Override

Binary file not shown.