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 dc9b88e85c746bab7c651e5a6baae246eb4b94c4..f0e697c0d2b16d0e51ec9754ea8d3111f6800328 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java @@ -55,7 +55,7 @@ public class GameSceneController implements Initializable { "4 1 1 1 2 2 4 1 3 3 3 1 1 1 3 2 2 3 " + "4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 2 1 3 " + "4 1 5 1 2 2 4 3 3 1 4 3 3 3 3 2 1 3 " + - "4 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " + + "4 6 1 1 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 1 3 " + "4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 1 1 3 " + "4 1 1 1 1 2 4 3 3 1 3 3 3 3 3 2 2 3 " + @@ -67,7 +67,7 @@ public class GameSceneController implements Initializable { "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 = 6; + int diffTileCount = 8; int scaledTileSize = 48; 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 0eaf4b2ca5c23f540e284e5ef6e80bf1be36037f..f358c976dcc43631f647c5f0d7c64859e7830323 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 @@ -5,6 +5,7 @@ import de.hdm_stuttgart.battlearena.Controller.GameSceneController; import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler; import de.hdm_stuttgart.battlearena.Model.Map.TileManager; +import javafx.animation.AnimationTimer; import javafx.geometry.BoundingBox; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; @@ -290,19 +291,30 @@ class Player implements IEntity { } } + + public void placeBomb(IEntity entity, GraphicsContext graphicsContext){ + int xTile = entity.getMapPosX() / gameSceneController.getScaledTileSize(); + int yTile = entity.getMapPosY() / gameSceneController.getScaledTileSize(); + if(inputHandler.isBomb() || inputHandler.isSdBomb()){ + TileManager.tileMap[yTile][xTile] = 7; + TileManager.tileMap[yTile-1][xTile] = 8; + TileManager.tileMap[yTile-2][xTile] = 8; + TileManager.tileMap[yTile][xTile+1] = 8; + TileManager.tileMap[yTile][xTile+2] = 8; + } + } + + @Override public void attack(IEntity entity, GraphicsContext graphicsContext) { BoundingBox hitBox; int xTile = mapPosX / gameSceneController.getScaledTileSize(); int yTile = mapPosY / gameSceneController.getScaledTileSize(); - //log.info(xTile); - //log.info(yTile); //int xTile = (int) (Math.random() * (18 - 1)); //Get xTile Coordinate +1 /-1 of playerTile //int yTile = (int) (Math.random() * (18 - 1)); //Get yTile Coordinate +1 /-1 of playerTile double dropChance = 0.5; double randomDropChance = Math.random() * 1; - //log.info(randomDropChance); //Added and subtracted numbers from variables are the pixel insets of the player sprite 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 a66f47e852aac620010f786bbff62a0700292535..934bdce8b04b5d34f13626345479284d139e9b06 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 @@ -19,10 +19,10 @@ public class InputHandler { } //Local Player/Player one controls - private boolean moveUp, moveDown, moveLeft, moveRight, attack; + private boolean moveUp, moveDown, moveLeft, moveRight, attack, bomb; //Local player two controls - private boolean sdMoveUp, sdMoveDown, sdMoveLeft, sdMoveRight, sdAttack; + private boolean sdMoveUp, sdMoveDown, sdMoveLeft, sdMoveRight, sdAttack, sdbomb; public void handleKeyPress(KeyEvent event) { KeyCode code = event.getCode(); @@ -48,6 +48,9 @@ public class InputHandler { attack = true; log.debug("Player attack"); break; + case Q: + bomb = true; + break; case UP: sdMoveUp = true; break; @@ -63,6 +66,9 @@ public class InputHandler { case MINUS: sdAttack = true; break; + case CONTROL: + sdbomb = true; + break; } } @@ -85,6 +91,9 @@ public class InputHandler { case E: attack = false; break; + case Q: + bomb = false; + break; case UP: sdMoveUp = false; break; @@ -100,6 +109,9 @@ public class InputHandler { case MINUS: sdAttack = false; break; + case CONTROL: + sdbomb = false; + break; } } @@ -142,4 +154,7 @@ public class InputHandler { public boolean isSdAttack() { return sdAttack; } + 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/TileFactory.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileFactory.java index 0da1a1558d0e6888a73fa456d3dd81f021d936fc..24dc7d78e70a57b79370cf76275ac591e44d0332 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileFactory.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Map/TileFactory.java @@ -9,18 +9,18 @@ public class TileFactory { private static final Logger log = LogManager.getLogger(TileFactory.class); - public static ITile createTile(TileType tileType, TileType tileType2, Image tileSprite) { - if (tileType == TileType.WALKABLE && tileType2 == TileType.DESTRUCTIBLE) { - log.info("Tile with type: " + tileType + " " + tileType2 + " created."); + public static ITile createTile(TileType tileType, TileType destructible, Image tileSprite) { + if (tileType == TileType.WALKABLE && destructible == TileType.DESTRUCTIBLE) { + log.info("Tile with type: " + tileType + " " + destructible + " created."); return new BackgroundTile(tileSprite, true, true); - }else if (tileType == TileType.WALKABLE && tileType2 == TileType.NON_DESTRUCTIBLE) { - log.info("Tile with type: " + tileType + " " + tileType2 +" created."); + }else if (tileType == TileType.WALKABLE && destructible == TileType.NON_DESTRUCTIBLE) { + log.info("Tile with type: " + tileType + " " + destructible +" created."); return new BackgroundTile(tileSprite, true, false); - }else if (tileType == TileType.NON_WALKABLE && tileType2 == TileType.DESTRUCTIBLE) { - log.info("Tile with type: " + tileType + " " + tileType2 +" created."); + }else if (tileType == TileType.NON_WALKABLE && destructible == TileType.DESTRUCTIBLE) { + log.info("Tile with type: " + tileType + " " + destructible +" created."); return new BackgroundTile(tileSprite, false, true); - }else if (tileType == TileType.NON_WALKABLE && tileType2 == TileType.NON_DESTRUCTIBLE) { - log.info("Tile with type: " + tileType + " " + tileType2 +" created."); + }else if (tileType == TileType.NON_WALKABLE && destructible == TileType.NON_DESTRUCTIBLE) { + log.info("Tile with type: " + tileType + " " + destructible +" created."); return new BackgroundTile(tileSprite, false, false); } 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 0ac687dab223e1933fe99bbf42db3dfd3ed8b8b5..8c66d48b7c49649403f3decc6bb6712712fdba80 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 @@ -46,6 +46,12 @@ public class TileManager { new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Stone02.png")))); tileSet[5] = TileFactory.createTile(TileType.WALKABLE,TileType.NON_DESTRUCTIBLE, new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/finalheart.png")))); + tileSet[6] = TileFactory.createTile(TileType.NON_WALKABLE,TileType.NON_DESTRUCTIBLE, + new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/bomba.png")))); + 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")))); } catch (Exception e) { log.error(e); } diff --git a/src/main/resources/textures/map/bigbomba.png b/src/main/resources/textures/map/bigbomba.png new file mode 100644 index 0000000000000000000000000000000000000000..397890b30b50d8f6db539981082f099e4299f8c3 Binary files /dev/null and b/src/main/resources/textures/map/bigbomba.png differ diff --git a/src/main/resources/textures/map/bigexplosion.png b/src/main/resources/textures/map/bigexplosion.png new file mode 100644 index 0000000000000000000000000000000000000000..d2d390c838dc644ecd40b469517d01c76b1b6586 Binary files /dev/null and b/src/main/resources/textures/map/bigexplosion.png differ diff --git a/src/main/resources/textures/map/bomb.png b/src/main/resources/textures/map/bomb.png new file mode 100644 index 0000000000000000000000000000000000000000..6f29b3f6124a917afe8492f2e318d15dd93ff7c7 Binary files /dev/null and b/src/main/resources/textures/map/bomb.png differ diff --git a/src/main/resources/textures/map/bomba.png b/src/main/resources/textures/map/bomba.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab018d7f6f8c7372251cbe996f84ad5b6f2066e Binary files /dev/null and b/src/main/resources/textures/map/bomba.png differ diff --git a/src/main/resources/textures/map/middlexplosion.png b/src/main/resources/textures/map/middlexplosion.png new file mode 100644 index 0000000000000000000000000000000000000000..843dbf6549a384cf54b32445326531920fc40391 Binary files /dev/null and b/src/main/resources/textures/map/middlexplosion.png differ diff --git a/src/main/resources/textures/map/smallexplosion.png b/src/main/resources/textures/map/smallexplosion.png new file mode 100644 index 0000000000000000000000000000000000000000..9101661a8083d755d5a43b32ef1e7ec2d62901bd Binary files /dev/null and b/src/main/resources/textures/map/smallexplosion.png differ