From dcea14f47222ab17b4539517167cd842d85b474a Mon Sep 17 00:00:00 2001
From: yschl <ys037@hdm-stuttgart.de>
Date: Mon, 15 Jan 2024 21:09:45 +0100
Subject: [PATCH] Add: new png's for bomb animation, InputHandler.java: Add:
 new option for key presses

---
 .../Controller/GameSceneController.java       |   4 ++--
 .../battlearena/Model/Entity/Player.java      |  18 ++++++++++++++---
 .../Model/Inputs/InputHandler.java            |  19 ++++++++++++++++--
 .../battlearena/Model/Map/TileFactory.java    |  18 ++++++++---------
 .../battlearena/Model/Map/TileManager.java    |   6 ++++++
 src/main/resources/textures/map/bigbomba.png  | Bin 0 -> 418 bytes
 .../resources/textures/map/bigexplosion.png   | Bin 0 -> 499 bytes
 src/main/resources/textures/map/bomb.png      | Bin 0 -> 204 bytes
 src/main/resources/textures/map/bomba.png     | Bin 0 -> 421 bytes
 .../resources/textures/map/middlexplosion.png | Bin 0 -> 488 bytes
 .../resources/textures/map/smallexplosion.png | Bin 0 -> 432 bytes
 11 files changed, 49 insertions(+), 16 deletions(-)
 create mode 100644 src/main/resources/textures/map/bigbomba.png
 create mode 100644 src/main/resources/textures/map/bigexplosion.png
 create mode 100644 src/main/resources/textures/map/bomb.png
 create mode 100644 src/main/resources/textures/map/bomba.png
 create mode 100644 src/main/resources/textures/map/middlexplosion.png
 create mode 100644 src/main/resources/textures/map/smallexplosion.png

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 dc9b88e8..f0e697c0 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 0eaf4b2c..f358c976 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 a66f47e8..934bdce8 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 0da1a155..24dc7d78 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 0ac687da..8c66d48b 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
GIT binary patch
literal 418
zcmV;T0bTxyP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px$TuDShR5(wSQ?W|KKop#{(c=n5KR^qAK+sAXQIj7KEGz^Io2w4Q!cVxyDvgC;
zDclz%ci3Di1$((d!NN+sBHUT6%!XN#m<YE`mbY)_&3kWR25Dr!XBl{w7u%TpWbVtO
zyD<QBR+ieZ);&QnLjnf2PHymce}Vn8TdaMI^DF>^H1c;{Nb>wX#m+_xj)36R^D(~e
zHu3V%EddU9JLnI4r5KgynEtS586XM4lzMz{^`|NW$tYJt`6Ys4b`w}RNg9E8_C1+p
z@Cw-1(O$>pSxpK+7>0=BxTL7qk|$uVbzmWzNE`u^Bwf{6xq6Bu+zy472!bG}9bTOZ
zt=A-@+z0G`UIK2+5pXS<K@&-J23#qf>RO<6wSjpEoF`<Ys)0mQtxOQtC^z~c^5OM!
z0oSLO{|=JFdwQE<d%fix>02n;Q}d`Y$w2yReG3ebK=u@{nAjxi7p{83MGK$g<NyEw
M07*qoM6N<$g5cV;MgRZ+

literal 0
HcmV?d00001

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
GIT binary patch
literal 499
zcmV<P0Sx|$P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px$tw}^dR5(v<lQBp_Q51&HZE+|n5}JfSoSGVgq9u86FmP$9wjf8hY6+vZoI)@{
zAqb)t8v-3(J!w&DY-)%Sf`S%9BSEJd|Iu@MK0V8O_nvdU`=4{qRc<w_8|@b5j$BG6
zla$G1NG!1%rHQ~ODMchP@JSr}3V`&%4R6L`F)EcxoG+lA{Wz}?19KdQW5lm4%hK5N
zn}9x7_Sh9Hud_-&gaLB8ZQBDUTs_weyYMka;mQ_u8Z$<vDi(`cq{|obocY^6QQv0~
zUIPNVwx)@D00n+o!;+^qUpWyVKu{7)70PMtzX1b?j(1hKKSm7zfaMP7Xf^cP1=N=>
zIRG1S5=pY8_8<a~F9Q$*2mmmK_yHaz-hQaNN><kv^CsB<@H3<YY>RyK!T_X%K0q%x
zk$N%>T$>FOt`^DM1Dzs`lX6Spfj&r`_M^p<D#q9BIOJAONYz6T?!o<eqOT9wdpJEd
zNth9sjIoTkX(F62Un3OUxG+i}7v>#x0c@w@{Kyy}FHVkoTgdaI`5%}}YGCr6nw{4F
pAPE4qG}~Q=440|F^FlGgVt=Df3+^a4qHX{H002ovPDHLkV1h4o%N+m!

literal 0
HcmV?d00001

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
GIT binary patch
literal 204
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|+B{txLoEE0
zQx*sq1g)6g_=|1N)WDzoMN>aawsw*13%>Z@s_j2d?|(@NNy(2=E+@n$WS=l%c*ASb
za8)6vDdFt@|Nqkq%FEejZ_K`~HzQKw)kRhVlf{w@j~2Z+nAI?QwshC)i7^hl7&B&d
z8aFt+I`W#e;KxJ5h6IH}UxGw>Ri5fQX--^_$grhYSx_iUz!c~r22WQ%mvv4FO#tY0
BO!WW&

literal 0
HcmV?d00001

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
GIT binary patch
literal 421
zcmV;W0b2fvP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px$Ur9tkR5(v{Qn5+{Q4pMGqelw;gZK-AskD*k-46&B7Jfh~K`i_MAqZC2*jots
z0WV1xD+PNi?JP|ZqSeXlWgeT$WeMciw>vvKJ7M&amp{KVFt#^anEuV|pP}y%0M_hm
zwNRG!1myw&m=FlRk1igp=>6%ks;&h=-oEDO>?SY(pV&LQkB!~u9!6P?>4Kqf$V3qa
z<GwLal1#J;^QYZw495MqqUf&xc$Ne^KIknGzkR&Jemenz{lKYYW(*__Mf>>Pz|Hwp
z<L+YOA0q&h)Z*l@nry-V$g&JYQN$jC_!XBl5N+SAP7lI$cmd9c01`~oIoXE?7*2BY
zfeAXCR6gMTRGg8f>Dp#Ka1H9liy44iC4f4JpDqCDU@O$`-gtsVlJvdZ;}yJ>JrfV6
zX69tPB@yX?PCGGy>PGUyy?)NkRIH0DNYy%h&rEMCK45|XvS(A_I$iz&@EFxai0(lD
P00000NkvXXu0mjfu1vZx

literal 0
HcmV?d00001

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
GIT binary patch
literal 488
zcmV<E0T=#>P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px$qDe$SR5(vvQ$0%qK@goyqenzV!732Z{D3H?(nccs0~C}rf)KH_5d^WY(<apw
zo*>u=Li`2ZAwp7F*!zWrMVbT^gNn$?o4dKp-4M9l$-Xyl-s~E`>DssNE+K~cvh@Db
z<u5|k#t`AmaDSGpC7NEV(cQ&1=L`s*W>07|s4xhDgSRhVR2p~UoL)?=)@Wqok%A?c
z%rO=1O71gGNF@PSD2WtGZuw@1!3a|ij&O#nB0wOm2w;BQqx$OrO*E<@$n^BY1X^Od
ze9l`a0}x;DaEoU04w2y>i83b8<_G`;=o8U7E%4eqC?>p$TM+p$6V+ny!eA)O|6r2q
zvrXRW784$byL?K(QE#2f7`HRoti}_<NE05wEG=C~1T3S50x{BDHC&#8T$<;(UK>IN
z`KX@0D}0eaAU93=6B2+VARUr*F%&g+pDd(a{_g2X5=N;jKD0977?oO{LOWMrUU68n
z$aIj?)v=fV5+>faGE~YtiJK;b?6@H+|LyWv{Y97eOrTv&^buWcox?i-82xh#njrmf
e(r+S7j{QG~m*+*p2za&t0000<MNUMnLSTY5kJSSJ

literal 0
HcmV?d00001

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
GIT binary patch
literal 432
zcmV;h0Z;ykP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px$YDq*vR5(wKQ@ct7Q4pP*MwdX86jnk6^8pH`vk`({AP8Crg6aJMi<CB2X(9-M
zjo=@+Vq+==tyM(3RKbWrtya!l&oJ&r@DkX2XXcza^GHa0o$U2<BsfzOWf^{r^ozrL
z2qK7?o-9k2sY_@JAb^1+xFhiT`9m6WNsP`NklegPzY=%@GZ6#!;g3SvkbozgUF@p@
z8bQEP@|js0<QE8hFl$8*d`U~SL?q}>s7w`jz<s}@0oBbDS(|-Vg4@$w1LRd10UYQB
zv#xA)rMms7@q?qfTpqU!>r4FA0}>dxS&5+ZO}gy`neXlBlM_O`5x@cYjanj4%ZJk1
zyNlpvMFtx)1qEzmIKPT};FkvP#q|Tlql|R5W2N~~Vq!|bt%4Kvk)0#un_I|a_-YA%
z&E0qWp<famqf?8!O~J3Sm&v=&&fPEq2C<2L(>wv~m;%(`Z6%BY0X$AwVGr22{2%8(
az4-=Q!Qe$*o1+i_0000<MNUMnLSTZPq`G<l

literal 0
HcmV?d00001

-- 
GitLab