diff --git a/core/src/controller/Controller.java b/core/src/controller/Controller.java index 6063985..29e7afb 100644 --- a/core/src/controller/Controller.java +++ b/core/src/controller/Controller.java @@ -46,7 +46,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ boolean isColliding; Level[] level; int currentLevel; - int beatenLevel; + int beatenLevel = 9; OrthographicCamera camera; @@ -85,6 +85,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ level[7] = new Level(new Goal(1000,600,450,100, 0.2f), new Projectile(0,0,0),200,200); level[8] = new Level(new Goal(760,460,450,100, 0.2f), new Projectile(0,0,0),200,200); level[9] = new Level(new Goal(1000,580,350,100, 0.2f), new Projectile(0,0,0),200,200); + level[9].addRectangle(400, 400, 50,200); stepTimer = new Timer(); stepTimer.scheduleTask(new Timer.Task() { @@ -119,18 +120,20 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ } } } - for(Rectangle rect : gs.getObjectRects()){ - if(Intersector.overlaps(gs.getProjectileCirc(), rect)) { - - collision = true; - if (!isColliding) { - if (rect.getHeight() == 1) { - level[currentLevel].horizontalCollision(); - } else if (rect.getWidth() == 1) { - level[currentLevel].verticalCollision(); + if(gs.getObjectRects() != null) { + for (Rectangle rect : gs.getObjectRects()) { + if (Intersector.overlaps(gs.getProjectileCirc(), rect)) { + + collision = true; + if (!isColliding) { + if (rect.getHeight() == 1) { + level[currentLevel].horizontalCollision(); + } else if (rect.getWidth() == 1) { + level[currentLevel].verticalCollision(); + } + isColliding = true; + break; } - isColliding = true; - break; } } } diff --git a/core/src/model/Level.java b/core/src/model/Level.java index bdc7579..fd918df 100644 --- a/core/src/model/Level.java +++ b/core/src/model/Level.java @@ -46,6 +46,8 @@ public class Level { this.yPosPivot = yPosPivot; this.angle = 0; this.angleSpeed = 0; + + objects = new ArrayList<>(); traceIndex = 0; isTraceInitialised = new boolean[50]; diff --git a/core/src/view/Gamescreen.java b/core/src/view/Gamescreen.java index 8e81544..fa7e277 100644 --- a/core/src/view/Gamescreen.java +++ b/core/src/view/Gamescreen.java @@ -62,13 +62,15 @@ public class Gamescreen{ pivotX = level.getPivotX(); pivotY = level.getPivotY(); g = level.getGoal(); - objects = level.getObjects(); + x = g.getxPos(); y = g.getyPos(); w = g.getSizeX(); h = g.getSizeY(); th = g.getThickness(); p = level.getProjectile(); + objects = level.getObjects(); + objectRects = new ArrayList<>(); win = false; @@ -83,12 +85,14 @@ public class Gamescreen{ goalRects[5] = new Rectangle(x + th*4 * w ,y + h - 1f ,w *th ,1 ); goalRects[6] = new Rectangle(x + w-1 ,y ,1 ,h ); goalRects[7] = new Rectangle(x ,y ,w ,1 ); - - for(Rectangle object : objects){ - objectRects.add(new Rectangle(object.getX(), object.getY(), 1, object.getHeight())); - objectRects.add(new Rectangle(object.getX(), object.getY() + object.getHeight() - 1, object.getWidth(), 1)); - objectRects.add(new Rectangle(object.getX() + object.getWidth()-1, object.getY(), 1, object.getHeight())); - objectRects.add(new Rectangle(object.getX(), object.getY(),object.getWidth(), 1)); + + if(objects != null) { + for (Rectangle object : objects) { + objectRects.add(new Rectangle(object.getX(), object.getY(), 1, object.getHeight())); + objectRects.add(new Rectangle(object.getX(), object.getY() + object.getHeight() - 1, object.getWidth(), 1)); + objectRects.add(new Rectangle(object.getX() + object.getWidth() - 1, object.getY(), 1, object.getHeight())); + objectRects.add(new Rectangle(object.getX(), object.getY(), object.getWidth(), 1)); + } } goalRect = new Rectangle(x + w*th, y + h*th, w * th * 3, h * 0.1f); @@ -106,6 +110,7 @@ public class Gamescreen{ pivotY = level.getPivotY(); g = level.getGoal(); + objects = level.getObjects(); shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(Color.BLACK); @@ -129,9 +134,11 @@ public class Gamescreen{ shapeRenderer.rect(x + th * w,y, th*3 * w,th * h); shapeRenderer.rect(x + th *w + th*3 * w, y, th * w,h); shapeRenderer.circle((float) p.getxPos(), (float) p.getyPos(), p.getRadius()); - - for(Rectangle object : objects){ - shapeRenderer.rect(object.getX(), object.getY(), object.getWidth(), object.getHeight()); + + if(objects != null) { + for (Rectangle object : objects) { + shapeRenderer.rect(object.getX(), object.getY(), object.getWidth(), object.getHeight()); + } } shapeRenderer.setColor(Color.RED); @@ -152,8 +159,10 @@ public class Gamescreen{ shapeRenderer.rect(g.getxPos(), g.getyPos(), g.getSizeX(), g.getSizeY()); */ // object hitboxes - for(Rectangle object: objectRects){ - shapeRenderer.rect(object.getX(), object.getY(), object.getWidth(), object.getHeight()); + if(objects != null) { + for (Rectangle object : objectRects) { + shapeRenderer.rect(object.getX(), object.getY(), object.getWidth(), object.getHeight()); + } }