master
Jonathan Hager 6 years ago
parent 8ecd09deb4
commit 758d9c7059

@ -102,51 +102,70 @@ 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() {
for(int i = 0; i < d.getCurrentEntities().length; i++){ if(m != null){
if(d.getCurrentEntities()[i] != null){ m.updateEntitySprite(d.getCurrentEntities());
if(m != null){
// Gets the collisions relevant sprites
MapObjects mapObjects = m.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers().get(0).getObjects();
Rectangle playerSprite = m.getPlayer().getCollisionSprite();
Entity temp = d.getCurrentEntities()[i]; for(int i = 0; i < d.getCurrentEntities().length; i++){
if(d.getCurrentEntities()[i] != null){
// Gets the collisions relevant sprites
MapObjects mapObjects = m.getM().getMaps()[level][roomPosX][roomPosY].getMap().getLayers().get(0).getObjects();
Rectangle playerSprite = m.getPlayer().getCollisionSprite();
int x = (int) temp.getxPos(); Entity temp = d.getCurrentEntities()[i];
int y = (int) temp.getyPos();
d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos()); int x = (int) temp.getxPos();
Sprite tempObject = m.entitySprites[i]; int y = (int) temp.getyPos();
Entity test = d.getCurrentEntities()[i].move((int) d.getPlayer().getxPos(), (int) d.getPlayer().getyPos());
Sprite tempObject = m.entitySprites[i];
tempObject.setPosition(temp.getxPos(), temp.getyPos());
boolean overlaps = false;
if(Intersector.overlaps(tempObject.getBoundingRectangle(), playerSprite)){
overlaps = true;
}
else{
for(RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)){
Rectangle rectangle = rectangleObject.getRectangle();
if(Intersector.overlaps(tempObject.getBoundingRectangle(), rectangle)){ boolean overlaps = false;
overlaps = true; if(Intersector.overlaps(tempObject.getBoundingRectangle(), playerSprite)){
break; overlaps = true;
}
else{
for(RectangleMapObject rectangleObject : mapObjects.getByType(RectangleMapObject.class)){
Rectangle rectangle = rectangleObject.getRectangle();
if(Intersector.overlaps(tempObject.getBoundingRectangle(), rectangle)){
overlaps = true;
break;
}
} }
if(d.getCurrentEntities()[i].getId() != 2){
for(int j = 0; j < m.entitySprites.length; j++){
if(i != j){
if(d.getCurrentEntities()[j] != null && d.getCurrentEntities()[j].getId() != 2){
if(Intersector.overlaps(tempObject.getBoundingRectangle(), m.entitySprites[j].getBoundingRectangle())){
overlaps = true;
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){ if(overlaps){
d.getCurrentEntities()[i].setxPos(x); d.getCurrentEntities()[i].setxPos(x);
d.getCurrentEntities()[i].setyPos(y); d.getCurrentEntities()[i].setyPos(y);
tempObject.setPosition(x, y);
}
m.entitySprites[i] = tempObject;
if(test != null){
for(int k = 5; k < d.getCurrentEntities().length; k++){
if(d.getCurrentEntities()[k] == null){
d.getCurrentEntities()[k] = test;
m.updateEntitySprite(d.getCurrentEntities());
}
}
} }
} }
} }

@ -144,7 +144,7 @@ public class DungeonGenerator {
int itemAmount = (int) (Math.random() * 2); int itemAmount = (int) (Math.random() * 2);
int enemyAmount = (int) (Math.random() * 6); int enemyAmount = (int) (Math.random() * 6);
Room tempRoom = new Room(new ArrayList<ItemContainer>(itemAmount), new Entity[enemyAmount]); Room tempRoom = new Room(new ArrayList<ItemContainer>(itemAmount), new Entity[15]);
// Items werden generiert // Items werden generiert
int[][] belegt = new int[itemAmount][2]; int[][] belegt = new int[itemAmount][2];

@ -50,7 +50,7 @@ public class Archer extends Entity{
int distance = (int) Math.abs((deltaY / Math.sin(alpha))); int distance = (int) Math.abs((deltaY / Math.sin(alpha)));
Arrow a = null; Arrow a = null;
if(distance >= 124 && distance <= 164 && counter % 10 == 0){ if(distance >= 124 && distance <= 164 || counter % 30 == 0){
a = new Arrow(this.xPos, this.yPos, this.lvl, 0); a = new Arrow(this.xPos, this.yPos, this.lvl, 0);
movementX = (int) (4 * Math.cos(alpha)); movementX = (int) (4 * Math.cos(alpha));

@ -90,7 +90,7 @@ public class GameScreen {
//ENTITIES //ENTITIES
entityTextures = new Texture[5]; entityTextures = new Texture[5];
entitySprites = new Sprite[5]; entitySprites = new Sprite[15];
arrowTextures = new Texture[10]; arrowTextures = new Texture[10];
arrowSprites = new Sprite[10]; arrowSprites = new Sprite[10];
@ -231,26 +231,9 @@ public class GameScreen {
camera.update(); camera.update();
batch.setProjectionMatrix(camera.combined); batch.setProjectionMatrix(camera.combined);
for(int i = 0; i < e.length; i++){
if(e[i] != null){
if(e[i].getId() == 0){ //nimmt entity ID -> 0 = Archer || 1 = Swordsman || 2 = Arrow
entityTextures[i] = new Texture("sprites/archer.png");
archerRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(archerRegions[0][2]);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
if(e[i].getId() == 1){
entityTextures[i] = new Texture("sprites/swordsman.png");
swordsmanRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(swordsmanRegions[0][2]);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
}
}
updateEntitySprite(e);
//BATCH //BATCH
@ -351,7 +334,33 @@ public class GameScreen {
batch.end(); batch.end();
} }
public void updateEntitySprite(Entity[] e){
for(int i = 0; i < e.length; i++){
if(e[i] != null){
if(e[i].getId() == 0){ //nimmt entity ID -> 0 = Archer || 1 = Swordsman || 2 = Arrow
entityTextures[i] = new Texture("sprites/archer.png");
archerRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(archerRegions[0][2]);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
if(e[i].getId() == 1){
entityTextures[i] = new Texture("sprites/swordsman.png");
swordsmanRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(swordsmanRegions[0][2]);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
if(e[i].getId() == 2){
Texture tx = new Texture("sprites/sword.png");
//swordsmanRegions = TextureRegion.split(entityTextures[i], 48, 48);
entitySprites[i] = new Sprite(tx);
entitySprites[i].setX(e[i].getxPos());
entitySprites[i].setY(e[i].getyPos());
}
}
}
}
public Entity[] playerAttack(Entity e[], Player p, SpriteBatch batch){ public Entity[] playerAttack(Entity e[], Player p, SpriteBatch batch){

@ -15,6 +15,6 @@ public class DesktopLauncher {
config.resizable = true; config.resizable = true;
//config.addIcon("logo.png", Files.FileType.Internale); //config.addIcon("logo.png", Files.FileType.Internale);
new LwjglApplication(new Controller(), config); new LwjglApplication(new Controller(), config);
} }
} }

Loading…
Cancel
Save