From 8ecd09deb40b4d12006a6a92b1f97f63e9d859fd Mon Sep 17 00:00:00 2001 From: Jonathan Hager Date: Sat, 2 May 2020 00:20:26 +0200 Subject: [PATCH] =?UTF-8?q?zur=C3=BCckgesetzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dungeoncrawler/control/Controller.java | 11 ++++ core/src/com/dungeoncrawler/model/Entity.java | 2 +- .../dungeoncrawler/model/entities/Archer.java | 66 ++++++++++++++++++- .../dungeoncrawler/model/entities/Arrow.java | 7 +- .../dungeoncrawler/model/entities/Player.java | 4 +- .../model/entities/Swordsman.java | 4 +- 6 files changed, 86 insertions(+), 8 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 5e20ea7..cefbce2 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -131,6 +131,17 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ break; } } + + for(int j = 0; j < m.entitySprites.length; j++){ + if(i != j){ + if(m.entitySprites[j] != null /*&& d.getCurrentEntities().get(j).getId() != 2*/){ + if(Intersector.overlaps(tempObject.getBoundingRectangle(), m.entitySprites[j].getBoundingRectangle())){ + overlaps = true; + break; + } + } + } + } } if(overlaps){ diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 80b4d17..46047ce 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -65,7 +65,7 @@ public abstract class Entity { } } - abstract public void move(int xPosPlayer, int yPosPlayer); + abstract public Entity move(int xPosPlayer, int yPosPlayer); // GETTER + SETTER public float getxPos() { diff --git a/core/src/com/dungeoncrawler/model/entities/Archer.java b/core/src/com/dungeoncrawler/model/entities/Archer.java index f36509c..2ca75d1 100644 --- a/core/src/com/dungeoncrawler/model/entities/Archer.java +++ b/core/src/com/dungeoncrawler/model/entities/Archer.java @@ -4,6 +4,8 @@ import com.dungeoncrawler.model.Entity; public class Archer extends Entity{ + int counter; + public Archer(float xPos, float yPos, int lvl) { super(xPos, yPos, lvl); @@ -12,6 +14,7 @@ public class Archer extends Entity{ this.direction = 2; this.dmg = 3*lvl; this.id = 0; + counter = 0; // TODO: Sinnvolle Werte finden direction = 2; @@ -19,8 +22,67 @@ public class Archer extends Entity{ } @Override - public void move(int xPosPlayer, int yPosPlayer) { - // Nothing + public Entity move(int xPosPlayer, int yPosPlayer) { + int deltaX = xPosPlayer - (int) xPos; + int deltaY = yPosPlayer - (int) yPos; + + double alpha; + if(deltaX == 0 && deltaY >= 0){ + alpha = Math.PI / 2; + } + else if(deltaX == 0 && deltaY < 0){ + alpha = Math.PI / -2; + } + else{ + alpha = Math.abs(Math.atan(deltaY / deltaX)); + + if(deltaX < 0 && deltaY < 0){ + alpha = Math.PI + alpha; + } + else if(deltaX < 0 && deltaY > 0){ + alpha = Math.PI - alpha; + } + else if(deltaX > 0 && deltaY < 0){ + alpha = 2*Math.PI - alpha; + } + } + + int distance = (int) Math.abs((deltaY / Math.sin(alpha))); + + Arrow a = null; + if(distance >= 124 && distance <= 164 && counter % 10 == 0){ + a = new Arrow(this.xPos, this.yPos, this.lvl, 0); + + movementX = (int) (4 * Math.cos(alpha)); + movementY = (int) (4 * Math.sin(alpha)); + + a.setMovementX(movementX); + a.setMovementY(movementY); + } + else{ + movementX = (int) (3 * Math.cos(alpha)); + movementY = (int) (3 * Math.sin(alpha)); + + System.out.println(distance); + if(distance < 124){ + movementX *= -1; + movementY *= -1; + } + else if(distance >= 124/* && distance <= 164*/){ + movementX = 0; + movementY = 0; + } + else if(distance > 164){ + + } + + + xPos += movementX; + yPos += movementY; + } + + counter++; + return a; } diff --git a/core/src/com/dungeoncrawler/model/entities/Arrow.java b/core/src/com/dungeoncrawler/model/entities/Arrow.java index 95b40e6..598d4e6 100644 --- a/core/src/com/dungeoncrawler/model/entities/Arrow.java +++ b/core/src/com/dungeoncrawler/model/entities/Arrow.java @@ -31,7 +31,10 @@ public class Arrow extends Entity{ } @Override - public void move(int xPosPlayer, int yPosPlayer) { - // Nothing + public Entity move(int xPosPlayer, int yPosPlayer) { + xPos += movementX; + yPos += movementY; + + return null; } } diff --git a/core/src/com/dungeoncrawler/model/entities/Player.java b/core/src/com/dungeoncrawler/model/entities/Player.java index 6c417d8..7085061 100644 --- a/core/src/com/dungeoncrawler/model/entities/Player.java +++ b/core/src/com/dungeoncrawler/model/entities/Player.java @@ -50,8 +50,8 @@ public class Player extends Entity { } } - public void move(int x, int y){ - + public Entity move(int x, int y){ + return null; } diff --git a/core/src/com/dungeoncrawler/model/entities/Swordsman.java b/core/src/com/dungeoncrawler/model/entities/Swordsman.java index 3baa52f..e8278a7 100644 --- a/core/src/com/dungeoncrawler/model/entities/Swordsman.java +++ b/core/src/com/dungeoncrawler/model/entities/Swordsman.java @@ -18,7 +18,7 @@ public class Swordsman extends Entity { } @Override - public void move(int xPosPlayer, int yPosPlayer){ + public Entity move(int xPosPlayer, int yPosPlayer){ int deltaX = xPosPlayer - (int) xPos; int deltaY = yPosPlayer - (int) yPos; @@ -48,6 +48,8 @@ public class Swordsman extends Entity { xPos += movementX; yPos += movementY; + + return null; }