diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java index f0e697c0d2b16d0e51ec9754ea8d3111f6800328..79fd84cbd08c260c68a07f5ad1fdd948c2b74e41 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java @@ -64,10 +64,10 @@ public class GameSceneController implements Initializable { "4 1 1 2 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " + "4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 " + "4 1 1 1 2 2 4 3 3 1 3 3 3 3 3 2 2 3 " + - "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3"; + "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 "; int horizontalTileCount = 18; int verticalTileCount = 18; - int diffTileCount = 8; + int diffTileCount = 10; int scaledTileSize = 48; @@ -107,14 +107,17 @@ public class GameSceneController implements Initializable { enemy.updateEntityMovement(this); player.attack(enemy, graphicsContext2D); enemy.attack(player, graphicsContext2D); + player.checkHealTile(player, graphicsContext2D); + enemy.checkHealTile(enemy, graphicsContext2D); + player.placeBomb(player, graphicsContext2D); + enemy.placeBomb(enemy, graphicsContext2D); } private void renderContent(GraphicsContext graphicsContext) { tileManager.renderMap(); player.renderEntity(graphicsContext); enemy.renderEntity(graphicsContext); - player.checkHealTile(player, graphicsContext2D); - enemy.checkHealTile(enemy, graphicsContext2D); + } public IEntity getEnemy() { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java index f98ddeb7452f60866c2dfe661dff29162c0004b7..97e4a532f79a438c4ab0778f93f33737c81dde67 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/IEntity.java @@ -14,7 +14,9 @@ public interface IEntity { void checkHealTile(IEntity entity, GraphicsContext graphicsContext); - void attack(IEntity entity, GraphicsContext graphicsContext); + void placeBomb(IEntity entity, GraphicsContext graphicsContext); + + void attack(IEntity entity, GraphicsContext graphicsContext); void updateEntityWalkAnimation(); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/NetworkPlayerTwo.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/NetworkPlayerTwo.java index d045a108bf051f2e40573e084199808f2edbc630..36fa8143770bd5d59fccb933f2c4261063de620c 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/NetworkPlayerTwo.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/NetworkPlayerTwo.java @@ -41,6 +41,11 @@ class NetworkPlayerTwo implements IEntity{ } + @Override + public void placeBomb(IEntity entity, GraphicsContext graphicsContext) { + + } + @Override public void attack(IEntity entity, GraphicsContext graphicsContext) { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java index f358c976dcc43631f647c5f0d7c64859e7830323..49430df1ee6e5489c1a4c3ef4d52f8e70707bd27 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/Player.java @@ -291,19 +291,58 @@ class Player implements IEntity { } } - + @Override public void placeBomb(IEntity entity, GraphicsContext graphicsContext){ + boolean isDestructible; int xTile = entity.getMapPosX() / gameSceneController.getScaledTileSize(); int yTile = entity.getMapPosY() / gameSceneController.getScaledTileSize(); - if(inputHandler.isBomb() || inputHandler.isSdBomb()){ - TileManager.tileMap[yTile][xTile] = 7; + if(inputHandler.isBomb() && PLAYER_MODE == PlayerMode.PLAYER_ONE || + inputHandler.isSdBomb() && PLAYER_MODE == PlayerMode.PLAYER_TWO) { + isDestructible = checkTileNon_Destructible(yTile, xTile); + if(isDestructible){ + TileManager.tileMap[yTile][xTile] = 7; + for (int i=0;i<3; i++){ + isDestructible = checkTileNon_Destructible(yTile +1 +i, xTile); + if(isDestructible && (yTile < 18 && xTile <18)){ + TileManager.tileMap[yTile +1 + i][xTile] = 8; + } + isDestructible = checkTileNon_Destructible(yTile -1 -i, xTile); + if(isDestructible && (yTile < 18 && xTile <18)){ + TileManager.tileMap[yTile -1 -i][xTile] = 8; + } + isDestructible = checkTileNon_Destructible(yTile , xTile +1 +i); + if(isDestructible && (yTile < 18 && xTile <18)){ + TileManager.tileMap[yTile][xTile +1 +i] = 8; + } + isDestructible = checkTileNon_Destructible(yTile, xTile -1 -i); + if(isDestructible && (yTile < 18 && xTile <18)){ + TileManager.tileMap[yTile][xTile -1 -i] = 8; + } + } + } + + /*isDestructible = checkTileNon_Destructible(yTile, xTile); //for loop + if(isDestructible){ + TileManager.tileMap[yTile][xTile] = 7; + isDestructible = checkTileNon_Destructible(yTile-1, xTile); //for loop + }else if(isDestructible) TileManager.tileMap[yTile-1][xTile] = 8; - TileManager.tileMap[yTile-2][xTile] = 8; + TileManager.tileMap[yTile-2][xTile] = 8; //Change it with a DestructionHandler like CollisionHandler + TileManager.tileMap[yTile+1][xTile] = 8; + TileManager.tileMap[yTile+2][xTile] = 8; //Why doesnt it work like in CollisionHandler with tileSet TileManager.tileMap[yTile][xTile+1] = 8; TileManager.tileMap[yTile][xTile+2] = 8; + TileManager.tileMap[yTile][xTile-1] = 8; + TileManager.tileMap[yTile][xTile-2] = 8;*/ } } - + public boolean checkTileNon_Destructible(int y, int x){ //Change it with a DestructionHandler like CollisionHandler + //tileSet[xTile].getDestruction(); + if(TileManager.tileMap[y][x] != 4 && TileManager.tileMap[y][x] != 3){ + return true; + } + return false; + } @Override public void attack(IEntity entity, GraphicsContext graphicsContext) { diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java index 934bdce8b04b5d34f13626345479284d139e9b06..e307c3892690a66a62de3743814b882d0dea5a24 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Inputs/InputHandler.java @@ -154,7 +154,11 @@ public class InputHandler { public boolean isSdAttack() { return sdAttack; } - public boolean isBomb(){return bomb;} - public boolean isSdBomb(){return sdbomb;} + public boolean isBomb(){ + return bomb; + } + public boolean isSdBomb(){ + return sdbomb; + } } \ No newline at end of file diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java index 8c66d48b7c49649403f3decc6bb6712712fdba80..29c09eef38f5ccea95f6d83dacd6d9416317026c 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileManager.java @@ -51,7 +51,7 @@ public class TileManager { tileSet[7] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/bigbomba.png")))); tileSet[8] = TileFactory.createTile(TileType.WALKABLE,TileType.NON_DESTRUCTIBLE, - new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/middleexplosion.png")))); + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/middlexplosion.png")))); } catch (Exception e) { log.error(e); }