master
Jonathan Hager 6 years ago
parent 7af64d1eef
commit d0b985954a

@ -103,142 +103,137 @@ public class Controller extends ApplicationAdapter implements InputProcessor{
entityMovement = new Timer();
entityMovement.scheduleTask(new Timer.Task() {
@Override
public void run() {
if(gs != null){
//m.updateEntitySprite(d.getCurrentEntities());
@Override
public void run() {
if(gs != null){
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();
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];
Entity temp = d.getCurrentEntities()[i];
int x = (int) temp.getxPos();
int y = (int) temp.getyPos();
int x = (int) temp.getxPos();
int y = (int) temp.getyPos();
boolean attacks = d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().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();
}
if(attacks && gs.entitySprites[i].getAttackState() == 0){
gs.entitySprites[i].startAttack();
}
EntitySprite tempObject = gs.entitySprites[i];
tempObject.update((int) temp.getxPos(), (int) temp.getyPos());
boolean overlaps = false;
boolean delete = false;
if(d.getCurrentEntities()[i].getId() == 2){
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)){
EntitySprite tempObject = gs.entitySprites[i];
tempObject.update((int) temp.getxPos(), (int) temp.getyPos());
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();
boolean overlaps = false;
boolean delete = false;
if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){
overlaps = true;
if(d.getCurrentEntities()[i].getId() == 2){
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)){
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:
}
}
delete = true;
}
else{
for(RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)){
Rectangle rectangle = rectangleObject.getRectangle();
if(Intersector.overlaps(tempObject.getCollisionSprite(), rectangle)){
overlaps = true;
break;
}
}
if(d.getCurrentEntities()[i].getId() == 2){
delete = true;
}
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(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);
}
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);
gs.entitySprites[i] = tempObject;
if(d.getCurrentEntities()[i].getId() == 0 && gs.entitySprites[i].getAttackState() == 2){
for(int k = 5; k < d.getCurrentEntities().length; k++){
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;
gs.generateNewEntitySprite(arrow, k);
gs.entitySprites[i].resetAttackState();
break;
}
}
}
tempObject.update(x, y);
}
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;
}
}
}
gs.entitySprites[i] = tempObject;
if(d.getCurrentEntities()[i].getId() == 0 && gs.entitySprites[i].getAttackState() == 2){
for(int k = 5; k < d.getCurrentEntities().length; k++){
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;
gs.generateNewEntitySprite(arrow, k);
gs.entitySprites[i].resetAttackState();
break;
}
}
}
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