master
Jonathan Hager 6 years ago
parent 7af64d1eef
commit d0b985954a

@ -103,143 +103,138 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
entityMovement = new Timer(); entityMovement = new Timer();
entityMovement.scheduleTask(new Timer.Task() { entityMovement.scheduleTask(new Timer.Task() {
@Override @Override
public void run() { public void run() {
if(gs != null){ if(gs != null){
//m.updateEntitySprite(d.getCurrentEntities()); for(int i = 0; i < d.getCurrentEntities().length; i++){
if(d.getCurrentEntities()[i] != null){
// Gets the collisions relevant sprites
MapObjects mapObjects = gs.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers().get(0).getObjects();
Rectangle playerSprite = gs.getPlayer().getCollisionSprite();
Entity temp = d.getCurrentEntities()[i];
int x = (int) temp.getxPos();
int y = (int) temp.getyPos();
boolean attacks = d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos());
// Attacke wird gestartet, wenn noch keine laueft
if(attacks && gs.entitySprites[i].getAttackState() == 0){
gs.entitySprites[i].startAttack();
}
for(int i = 0; i < d.getCurrentEntities().length; i++){ EntitySprite tempObject = gs.entitySprites[i];
if(d.getCurrentEntities()[i] != null){ tempObject.update((int) temp.getxPos(), (int) temp.getyPos());
// Gets the collisions relevant sprites
MapObjects mapObjects = gs.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers().get(0).getObjects();
Rectangle playerSprite = gs.getPlayer().getCollisionSprite();
Entity temp = d.getCurrentEntities()[i]; boolean overlaps = false;
boolean delete = false;
int x = (int) temp.getxPos(); if(d.getCurrentEntities()[i].getId() == 2){
int y = (int) temp.getyPos(); if(Intersector.overlaps(tempObject.getCollisionSprite(), gs.getPlayer().getFullCollisionSprite())){
overlaps = true;
delete = true;
d.getCurrentEntities()[i].attack(d.getPlayer());
}
}
else if(Intersector.overlaps(tempObject.getCollisionSprite(), playerSprite)){
boolean attacks = d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos()); overlaps = true;
if(d.getCurrentEntities()[i].getId() != 0){
if(attacks && gs.entitySprites[i].getAttackState() == 0){ switch(gs.entitySprites[i].getAttackState()){
case 0:
gs.entitySprites[i].startAttack(); gs.entitySprites[i].startAttack();
} break;
case 1:
break;
case 2:
d.getCurrentEntities()[i].attack(d.getPlayer());
gs.entitySprites[i].resetAttackState();
break;
default:
}
}
}
else{
for(RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)){
Rectangle rectangle = rectangleObject.getRectangle();
EntitySprite tempObject = gs.entitySprites[i]; if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){
tempObject.update((int) temp.getxPos(), (int) temp.getyPos()); overlaps = true;
boolean overlaps = false;
boolean delete = false;
if(d.getCurrentEntities()[i].getId() == 2){ if(d.getCurrentEntities()[i].getId() == 2){
if(Intersector.overlaps(tempObject.getCollisionSprite(), gs.getPlayer().getFullCollisionSprite())){ delete = true;
overlaps = true;
delete = true;
d.getCurrentEntities()[i].attack(d.getPlayer());
}
}
else if(Intersector.overlaps(tempObject.getCollisionSprite(), playerSprite)){
overlaps = true;
if(d.getCurrentEntities()[i].getId() != 0){
switch(gs.entitySprites[i].getAttackState()){
case 0:
gs.entitySprites[i].startAttack();
break;
case 1:
break;
case 2:
d.getCurrentEntities()[i].attack(d.getPlayer());
gs.entitySprites[i].resetAttackState();
break;
default:
}
}
} }
else{
for(RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)){
Rectangle rectangle = rectangleObject.getRectangle();
if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){ break;
}
}
if(d.getCurrentEntities()[i].getId() != 2){
for(int j = 0; j < gs.entitySprites.length; j++){
if(i != j){
if(d.getCurrentEntities()[j] != null && d.getCurrentEntities()[j].getId() != 2){
if(Intersector.overlaps(tempObject.getCollisionSprite(), gs.entitySprites[j].getCollisionSprite())){
overlaps = true; overlaps = true;
if(d.getCurrentEntities()[i].getId() == 2){
delete = true;
}
break; break;
} }
} }
if(d.getCurrentEntities()[i].getId() != 2){
for(int j = 0; j < gs.entitySprites.length; j++){
if(i != j){
if(d.getCurrentEntities()[j] != null && d.getCurrentEntities()[j].getId() != 2){
if(Intersector.overlaps(tempObject.getCollisionSprite(), gs.entitySprites[j].getCollisionSprite())){
overlaps = true;
break;
}
}
}
}
}
}
if(gs.entitySprites[i].getAttackState() == 2 && d.getCurrentEntities()[i].getId() != 0){
gs.entitySprites[i].resetAttackState();
} }
if(gs.player.getAttackState() == 2){ }
playerAttack(d.getCurrentEntities(), d.getPlayer(), d.getPlayer().getDirection()); }
}
if(overlaps){
d.getCurrentEntities()[i].setxPos(x);
d.getCurrentEntities()[i].setyPos(y);
tempObject.update(x, y); }
}
gs.entitySprites[i] = tempObject; if(gs.entitySprites[i].getAttackState() == 2 && d.getCurrentEntities()[i].getId() != 0){
gs.entitySprites[i].resetAttackState();
if(d.getCurrentEntities()[i].getId() == 0 && gs.entitySprites[i].getAttackState() == 2){ }
for(int k = 5; k < d.getCurrentEntities().length; k++){ if(gs.player.getAttackState() == 2){
if(d.getCurrentEntities()[k] == null){ playerAttack(d.getCurrentEntities(), d.getPlayer(), d.getPlayer().getDirection());
Entity arrow = d.getCurrentEntities()[i].shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos()); }
arrow.setxPos(d.getCurrentEntities()[i].getxPos() + 32); if(overlaps){
arrow.setyPos(d.getCurrentEntities()[i].getyPos() + 32); d.getCurrentEntities()[i].setxPos(x);
d.getCurrentEntities()[k] = arrow; d.getCurrentEntities()[i].setyPos(y);
gs.generateNewEntitySprite(arrow, k);
gs.entitySprites[i].resetAttackState(); tempObject.update(x, y);
break; }
}
} gs.entitySprites[i] = tempObject;
}
if(d.getCurrentEntities()[i].getId() == 0 && gs.entitySprites[i].getAttackState() == 2){
if(delete || d.getCurrentEntities()[i].isToDelete()){ for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[i].getId() == 2){ if(d.getCurrentEntities()[k] == null){
d.getCurrentEntities()[i] = null; Entity arrow = d.getCurrentEntities()[i].shoot((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos());
gs.deleteEntitySprite(i); arrow.setxPos(d.getCurrentEntities()[i].getxPos() + 32);
} arrow.setyPos(d.getCurrentEntities()[i].getyPos() + 32);
else{ d.getCurrentEntities()[k] = arrow;
if(gs.entitySprites[i].getDie() == 0){ gs.generateNewEntitySprite(arrow, k);
gs.entitySprites[i].setDie(1); gs.entitySprites[i].resetAttackState();
} break;
else if(gs.entitySprites[i].getDie() == 2){ }
//d.getCurrentEntities()[i] = null; }
} }
}
} if(delete || d.getCurrentEntities()[i].isToDelete()){
if(d.getCurrentEntities()[i].getId() == 2){
d.getCurrentEntities()[i] = null;
gs.deleteEntitySprite(i);
}
else{
if(gs.entitySprites[i].getDie() == 0){
gs.entitySprites[i].setDie(1);
}
else if(gs.entitySprites[i].getDie() == 2){
//d.getCurrentEntities()[i] = null;
} }
} }
} }
} }
},0, 0.03f); }
}
}
},0, 0.03f);
} }

Loading…
Cancel
Save