auf neue gegner umgestellt

master
Jonathan Hager 6 years ago
parent d0b985954a
commit a6a768ee54

@ -105,12 +105,18 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
entityMovement.scheduleTask(new Timer.Task() { entityMovement.scheduleTask(new Timer.Task() {
@Override @Override
public void run() { public void run() {
if(gs != null){ if(gs != null){
if(gs.player.getAttackState() == 2){
playerAttack(d.getCurrentEntities(), d.getPlayer(), d.getPlayer().getDirection());
}
for(int i = 0; i < d.getCurrentEntities().length; i++){ for(int i = 0; i < d.getCurrentEntities().length; i++){
if(d.getCurrentEntities()[i] != null){ if(d.getCurrentEntities()[i] != null){
// Gets the collisions relevant sprites // Gets the collisions relevant sprites
MapObjects mapObjects = gs.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers().get(0).getObjects(); MapObjects mapObjects = gs.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers().get(0).getObjects();
Rectangle playerSprite = gs.getPlayer().getCollisionSprite(); Rectangle playerSprite = gs.getPlayer().getFullCollisionSprite();
Entity temp = d.getCurrentEntities()[i]; Entity temp = d.getCurrentEntities()[i];
@ -130,28 +136,27 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
boolean overlaps = false; boolean overlaps = false;
boolean delete = false; boolean delete = false;
if(d.getCurrentEntities()[i].getId() == 2){ if(Intersector.overlaps(tempObject.getCollisionSprite(), playerSprite)){
if(Intersector.overlaps(tempObject.getCollisionSprite(), gs.getPlayer().getFullCollisionSprite())){ overlaps = true;
overlaps = true;
if(d.getCurrentEntities()[i].getType() == 2){
delete = true; delete = true;
d.getCurrentEntities()[i].attack(d.getPlayer()); d.getCurrentEntities()[i].attack(d.getPlayer());
} }
} else{
else if(Intersector.overlaps(tempObject.getCollisionSprite(), playerSprite)){ if(d.getCurrentEntities()[i].getType() == 0){
switch(gs.entitySprites[i].getAttackState()){
overlaps = true; case 0:
if(d.getCurrentEntities()[i].getId() != 0){ gs.entitySprites[i].startAttack();
switch(gs.entitySprites[i].getAttackState()){ break;
case 0: case 1:
gs.entitySprites[i].startAttack(); break;
break; case 2:
case 1: d.getCurrentEntities()[i].attack(d.getPlayer());
break; gs.entitySprites[i].resetAttackState();
case 2: break;
d.getCurrentEntities()[i].attack(d.getPlayer()); default:
gs.entitySprites[i].resetAttackState(); }
break;
default:
} }
} }
} }
@ -162,7 +167,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){ if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){
overlaps = true; overlaps = true;
if(d.getCurrentEntities()[i].getId() == 2){ if(d.getCurrentEntities()[i].getType() == 2){
delete = true; delete = true;
} }
@ -170,7 +175,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
} }
} }
if(d.getCurrentEntities()[i].getId() != 2){ if(d.getCurrentEntities()[i].getType() != 2){
for(int j = 0; j < gs.entitySprites.length; j++){ for(int j = 0; j < gs.entitySprites.length; j++){
if(i != j){ if(i != j){
if(d.getCurrentEntities()[j] != null && d.getCurrentEntities()[j].getId() != 2){ if(d.getCurrentEntities()[j] != null && d.getCurrentEntities()[j].getId() != 2){
@ -186,12 +191,10 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
} }
if(gs.entitySprites[i].getAttackState() == 2 && d.getCurrentEntities()[i].getId() != 0){ if(gs.entitySprites[i].getAttackState() == 2 && d.getCurrentEntities()[i].getType() != 0){
gs.entitySprites[i].resetAttackState(); gs.entitySprites[i].resetAttackState();
} }
if(gs.player.getAttackState() == 2){
playerAttack(d.getCurrentEntities(), d.getPlayer(), d.getPlayer().getDirection());
}
if(overlaps){ if(overlaps){
d.getCurrentEntities()[i].setxPos(x); d.getCurrentEntities()[i].setxPos(x);
d.getCurrentEntities()[i].setyPos(y); d.getCurrentEntities()[i].setyPos(y);
@ -201,12 +204,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
gs.entitySprites[i] = tempObject; gs.entitySprites[i] = tempObject;
if(d.getCurrentEntities()[i].getId() == 0 && gs.entitySprites[i].getAttackState() == 2){ if(d.getCurrentEntities()[i].getType()== 0 && gs.entitySprites[i].getAttackState() == 2){
Entity arrow = d.getCurrentEntities()[i].shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos());
for(int k = 5; k < d.getCurrentEntities().length; k++){ for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[k] == null){ if(d.getCurrentEntities()[k] == null){
Entity arrow = d.getCurrentEntities()[i].shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos());
arrow.setxPos(d.getCurrentEntities()[i].getxPos() + 32);
arrow.setyPos(d.getCurrentEntities()[i].getyPos() + 32);
d.getCurrentEntities()[k] = arrow; d.getCurrentEntities()[k] = arrow;
gs.generateNewEntitySprite(arrow, k); gs.generateNewEntitySprite(arrow, k);
gs.entitySprites[i].resetAttackState(); gs.entitySprites[i].resetAttackState();

@ -11,6 +11,7 @@ public abstract class Entity {
protected float movementX; protected float movementX;
protected float movementY; protected float movementY;
protected int id; protected int id;
protected int type;
protected int direction; protected int direction;
protected Inventory inv; protected Inventory inv;
private boolean toDelete; private boolean toDelete;
@ -177,5 +178,12 @@ public abstract class Entity {
public void setToDelete(boolean toDelete) { public void setToDelete(boolean toDelete) {
this.toDelete = toDelete; this.toDelete = toDelete;
} }
/**
* @return the type
*/
public int getType() {
return type;
}
} }

@ -14,6 +14,7 @@ public class Archer extends Entity{
this.direction = 2; this.direction = 2;
this.dmg = 3*lvl; this.dmg = 3*lvl;
this.id = 0; this.id = 0;
this.type = 1;
counter = 0; counter = 0;
// TODO: Sinnvolle Werte finden // TODO: Sinnvolle Werte finden
@ -113,7 +114,7 @@ public class Archer extends Entity{
alpha = 2*Math.PI - alpha; alpha = 2*Math.PI - alpha;
} }
} }
a = new Arrow(this.xPos, this.yPos, this.lvl, 0); a = new Arrow(this.xPos + 32, this.yPos + 32, this.lvl, 0);
movementX = (int) (6 * Math.cos(alpha)); movementX = (int) (6 * Math.cos(alpha));
movementY = (int) (6 * Math.sin(alpha)); movementY = (int) (6 * Math.sin(alpha));

@ -21,6 +21,7 @@ public class Arrow extends Entity{
this.direction = direction; this.direction = direction;
this.dmg = 3*lvl; this.dmg = 3*lvl;
this.id = 2; this.id = 2;
type = 2;
this.lifetime = 0; this.lifetime = 0;
} }

@ -27,6 +27,7 @@ public class Player extends Entity {
this.dmg = 3*lvl; this.dmg = 3*lvl;
this.standartDmg = dmg; this.standartDmg = dmg;
id = -1; id = -1;
type = -1;
inv = new Inventory(3,2); inv = new Inventory(3,2);
// TODO: Sinnvolle Werte finden // TODO: Sinnvolle Werte finden

@ -12,6 +12,7 @@ public class Swordsman extends Entity {
this.direction = 2; this.direction = 2;
this.dmg = 3*lvl; this.dmg = 3*lvl;
this.id = 1; this.id = 1;
this.type = 0;
// TODO: Sinnvolle Werte finden // TODO: Sinnvolle Werte finden
direction = 2; direction = 2;

Loading…
Cancel
Save