From 9f611b2da47a11c980e90e1dea886f819a1a989d Mon Sep 17 00:00:00 2001
From: yschl <ys037@hdm-stuttgart.de>
Date: Tue, 20 Feb 2024 22:45:21 +0100
Subject: [PATCH] Add: BombClockItem that reduces the time a player is able to
 place bombs Update: Blastradius and bombplacementRate pickup logic and
 Blastradius Up and Down png's #83 # 79

---
 .../Model/Entity/EntityFactory.java           |   4 +-
 .../Model/Entity/GameplayObjects/BigBomb.java |  14 +++---
 .../GameplayObjects/BlastUpItemFrame.java     |   8 ++--
 .../Model/Entity/GameplayObjects/Bomb.java    |  14 +++---
 ...ItemFrame.java => BombClockItemFrame.java} |  16 +++----
 .../Entity/GameplayObjects/ObjectType.java    |   2 +-
 .../battlearena/Model/Entity/Player.java      |  40 ++++++++++++------
 .../itemFrames/BlastDownItemFrameDown.png     | Bin 312 -> 288 bytes
 .../itemFrames/BlastDownItemFrameMiddle.png   | Bin 312 -> 289 bytes
 .../itemFrames/BlastDownItemFrameUp.png       | Bin 321 -> 293 bytes
 .../objects/itemFrames/BlastItemFrameDown.png | Bin 291 -> 0 bytes
 .../itemFrames/BlastItemFrameDownBlue.png     | Bin 292 -> 0 bytes
 .../itemFrames/BlastItemFrameMiddle.png       | Bin 292 -> 0 bytes
 .../itemFrames/BlastItemFrameMiddleBlue.png   | Bin 292 -> 0 bytes
 .../objects/itemFrames/BlastItemFrameUp.png   | Bin 300 -> 0 bytes
 .../itemFrames/BlastItemFrameUpBlue.png       | Bin 295 -> 0 bytes
 .../itemFrames/BlastUpItemFrameDown.png       | Bin 0 -> 318 bytes
 .../itemFrames/BlastUpItemFrameMiddle.png     | Bin 0 -> 318 bytes
 .../objects/itemFrames/BlastUpItemFrameUp.png | Bin 0 -> 321 bytes
 .../objects/itemFrames/ClockItemFrame1Up.png  | Bin 0 -> 224 bytes
 .../itemFrames/ClockItemFrame2Middle.png      | Bin 0 -> 218 bytes
 .../itemFrames/ClockItemFrame3Down.png        | Bin 0 -> 222 bytes
 .../itemFrames/ClockItemFrame4Middle.png      | Bin 0 -> 223 bytes
 .../battlearena/Model/Entity/PlayerTest.java  |  29 +++++++++++++
 24 files changed, 85 insertions(+), 42 deletions(-)
 rename src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/{ShieldItemFrame.java => BombClockItemFrame.java} (84%)
 delete mode 100644 src/main/resources/textures/objects/itemFrames/BlastItemFrameDown.png
 delete mode 100644 src/main/resources/textures/objects/itemFrames/BlastItemFrameDownBlue.png
 delete mode 100644 src/main/resources/textures/objects/itemFrames/BlastItemFrameMiddle.png
 delete mode 100644 src/main/resources/textures/objects/itemFrames/BlastItemFrameMiddleBlue.png
 delete mode 100644 src/main/resources/textures/objects/itemFrames/BlastItemFrameUp.png
 delete mode 100644 src/main/resources/textures/objects/itemFrames/BlastItemFrameUpBlue.png
 create mode 100644 src/main/resources/textures/objects/itemFrames/BlastUpItemFrameDown.png
 create mode 100644 src/main/resources/textures/objects/itemFrames/BlastUpItemFrameMiddle.png
 create mode 100644 src/main/resources/textures/objects/itemFrames/BlastUpItemFrameUp.png
 create mode 100644 src/main/resources/textures/objects/itemFrames/ClockItemFrame1Up.png
 create mode 100644 src/main/resources/textures/objects/itemFrames/ClockItemFrame2Middle.png
 create mode 100644 src/main/resources/textures/objects/itemFrames/ClockItemFrame3Down.png
 create mode 100644 src/main/resources/textures/objects/itemFrames/ClockItemFrame4Middle.png
 create mode 100644 src/test/java/de/hdm_stuttgart/battlearena/Model/Entity/PlayerTest.java

diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
index af43fcc6..e15dec50 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/EntityFactory.java
@@ -36,8 +36,8 @@ public class EntityFactory {
             return new BlastUpItemFrame(cordX, cordY, graphicsContext);
         } else if (objectType == ObjectType.BLASTDOWN_ITEMFRAME) {
             return new BlastDownItemFrame(cordX, cordY, graphicsContext);
-        } else if (objectType == ObjectType.SHIELD_ITEMFRAME) {
-            return new ShieldItemFrame(cordX, cordY, graphicsContext);
+        } else if (objectType == ObjectType.BOMBCLOCK_ITEMFRAME) {
+            return new BombClockItemFrame(cordX, cordY, graphicsContext);
         } else if (objectType == ObjectType.EXPLOSION) {
             return new Explosion(cordX, cordY, graphicsContext);
         } else if (objectType == ObjectType.TELEPORT_ITEMFRAME) {
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BigBomb.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BigBomb.java
index b058fe8f..f1b78b0e 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BigBomb.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BigBomb.java
@@ -209,8 +209,8 @@ public class BigBomb implements IEntity {
         final double dropChanceHeart = 0.15;
         final double dropChanceBlastUpItemFrame = 0.15;
         final double dropChanceBlastDownItemFrame = 0.15;
-        final double dropChanceShieldItemFrame = 0.1;
-        final double dropChanceTeleportItemFrame = 0.3;
+        final double dropChanceBombClock = 0.1;
+        final double dropChanceTeleportItemFrame = 0.15;
         double randomDropChance = Math.random() * 1;
 
         if (randomDropChance < dropChanceBigBombItemFrame) {
@@ -241,14 +241,14 @@ public class BigBomb implements IEntity {
             runtimeInfo.setGameplayObjects(gameplayObjects);
             log.info("BlastUpItemFrame dropped");
         }
-        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceBlastDownItemFrame + dropChanceShieldItemFrame) {
+        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceBlastDownItemFrame + dropChanceBombClock) {
             List<IEntity> gameplayObjects = runtimeInfo.getGameplayObjects();
-            IEntity shieldItemFrame = EntityFactory.createGameplayObject(ObjectType.SHIELD_ITEMFRAME, x, y, graphicsContext);
-            gameplayObjects.add(shieldItemFrame);
+            IEntity bombClockItemFrame = EntityFactory.createGameplayObject(ObjectType.BOMBCLOCK_ITEMFRAME, x, y, graphicsContext);
+            gameplayObjects.add(bombClockItemFrame);
             runtimeInfo.setGameplayObjects(gameplayObjects);
-            log.info("ShieldItemFrame dropped");
+            log.info("BombClockItemFrame dropped");
         }
-        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceShieldItemFrame + dropChanceTeleportItemFrame) {
+        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceBombClock + dropChanceTeleportItemFrame) {
             List<IEntity> gameplayObjects = runtimeInfo.getGameplayObjects();
             IEntity teleportItemFrame = EntityFactory.createGameplayObject(ObjectType.TELEPORT_ITEMFRAME, x, y, graphicsContext);
             gameplayObjects.add(teleportItemFrame);
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BlastUpItemFrame.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BlastUpItemFrame.java
index 7f6a9381..4651559b 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BlastUpItemFrame.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BlastUpItemFrame.java
@@ -43,10 +43,10 @@ public class BlastUpItemFrame implements IEntity {
 
     @Override
     public void loadEntitySprites() {
-        frames[0] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastItemFrameUpBlue.png")));
-        frames[1] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastItemFrameMiddleBlue.png")));
-        frames[2] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastItemFrameDownBlue.png")));
-        frames[3] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastItemFrameMiddleBlue.png")));
+        frames[0] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastUpItemFrameUp.png")));
+        frames[1] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastUpItemFrameMiddle.png")));
+        frames[2] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastUpItemFrameDown.png")));
+        frames[3] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/BlastUpItemFrameMiddle.png")));
     }
 
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java
index e6681cba..ac60f927 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/Bomb.java
@@ -207,8 +207,8 @@ public class Bomb implements IEntity {
         final double dropChanceHeart = 0.15;
         final double dropChanceBlastUpItemFrame = 0.15;
         final double dropChanceBlastDownItemFrame = 0.15;
-        final double dropChanceShieldItemFrame = 0.1;
-        final double dropChanceTeleportItemFrame = 0.3;
+        final double dropChanceBombClock = 0.1;
+        final double dropChanceTeleportItemFrame = 0.15;
         double randomDropChance = Math.random() * 1;
 
         if (randomDropChance < dropChanceBigBombItemFrame) {
@@ -239,14 +239,14 @@ public class Bomb implements IEntity {
             runtimeInfo.setGameplayObjects(gameplayObjects);
             log.info("BlastUpItemFrame dropped");
         }
-        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceBlastDownItemFrame + dropChanceShieldItemFrame) {
+        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceBlastDownItemFrame + dropChanceBombClock) {
             List<IEntity> gameplayObjects = runtimeInfo.getGameplayObjects();
-            IEntity shieldItemFrame = EntityFactory.createGameplayObject(ObjectType.SHIELD_ITEMFRAME, x, y, graphicsContext);
-            gameplayObjects.add(shieldItemFrame);
+            IEntity bombClock = EntityFactory.createGameplayObject(ObjectType.BOMBCLOCK_ITEMFRAME, x, y, graphicsContext);
+            gameplayObjects.add(bombClock);
             runtimeInfo.setGameplayObjects(gameplayObjects);
-            log.info("ShieldItemFrame dropped");
+            log.info("BombClockItemFrame dropped");
         }
-        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceShieldItemFrame + dropChanceTeleportItemFrame) {
+        else if (randomDropChance < dropChanceHeart + dropChanceBigBombItemFrame + dropChanceBlastUpItemFrame + dropChanceBlastDownItemFrame + dropChanceBombClock + dropChanceTeleportItemFrame) {
             List<IEntity> gameplayObjects = runtimeInfo.getGameplayObjects();
             IEntity teleportItemFrame = EntityFactory.createGameplayObject(ObjectType.TELEPORT_ITEMFRAME, x, y, graphicsContext);
             gameplayObjects.add(teleportItemFrame);
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/ShieldItemFrame.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BombClockItemFrame.java
similarity index 84%
rename from src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/ShieldItemFrame.java
rename to src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BombClockItemFrame.java
index 8a87adaf..eed22f29 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/ShieldItemFrame.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/BombClockItemFrame.java
@@ -12,9 +12,9 @@ import org.apache.logging.log4j.Logger;
 import java.util.Objects;
 
 
-public class ShieldItemFrame implements IEntity {
+public class BombClockItemFrame implements IEntity {
 
-    private static final Logger log = LogManager.getLogger(ShieldItemFrame.class);
+    private static final Logger log = LogManager.getLogger(BombClockItemFrame.class);
     private final int posX;
     private final int posY;
 
@@ -23,10 +23,10 @@ public class ShieldItemFrame implements IEntity {
     private Image[] frames = new Image[4];
     private final GraphicsContext graphicsContext;
     private BoundingBox boxCollider;
-    private final ObjectType OBJECT_TYPE = ObjectType.SHIELD_ITEMFRAME;
+    private final ObjectType OBJECT_TYPE = ObjectType.BOMBCLOCK_ITEMFRAME;
     private ObjectStatus OBJECT_STATUS = ObjectStatus.UNUSED;
 
-    public ShieldItemFrame(int posX, int posY, GraphicsContext graphicsContext) {
+    public BombClockItemFrame(int posX, int posY, GraphicsContext graphicsContext) {
         this.posX = posX;
         this.posY = posY;
         this.graphicsContext = graphicsContext;
@@ -42,10 +42,10 @@ public class ShieldItemFrame implements IEntity {
 
     @Override
     public void loadEntitySprites() {
-        frames[0] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ArmorFrameGreyUp.png")));
-        frames[1] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ArmorFrameGreyMiddle.png")));
-        frames[2] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ArmorFrameGreyDown.png")));
-        frames[3] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ArmorFrameGreyMiddle.png")));
+        frames[0] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ClockItemFrame1Up.png")));
+        frames[1] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ClockItemFrame2Middle.png")));
+        frames[2] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ClockItemFrame3Down.png")));
+        frames[3] = new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/objects/itemFrames/ClockItemFrame4Middle.png")));
     }
 
 
diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/ObjectType.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/ObjectType.java
index a91e415d..b11ccc5f 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/ObjectType.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Entity/GameplayObjects/ObjectType.java
@@ -3,7 +3,7 @@ package de.hdm_stuttgart.battlearena.Model.Entity.GameplayObjects;
 public enum ObjectType {
     BLASTUP_ITEMFRAME,
     BLASTDOWN_ITEMFRAME,
-    SHIELD_ITEMFRAME,
+    BOMBCLOCK_ITEMFRAME,
     BLASTUP,
     BIG_BOMB_ITEMFRAME,
     BIG_BOMB,
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 1cc7dc43..2f186bcd 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
@@ -73,10 +73,11 @@ class Player implements IEntity {
     private int iFrameCounter = 0;
     private int attackRate = 0;
     private int bombPlacementRate = 0;
+    private int bombReducedPlacementRate = 100;
     private boolean isBigBombItemFrame = false;
     private boolean isBlastUpItemFrame = false;
     private boolean isBlastDownItemFrame = false;
-    private boolean isShieldItemFrame = false;
+    private boolean isBombClockItemFrame = false;
     private boolean markerPlacedPlayerOne = false;
     private boolean markerPlacedPlayerTwo = false;
     private boolean isTeleportItemFrame = false;
@@ -292,12 +293,12 @@ class Player implements IEntity {
 
 
         int pos;
-        if(PLAYER_MODE == PlayerMode.PLAYER_ONE && !markerPlacedPlayerOne /* && isShieldItemFrame*/){
+        if(PLAYER_MODE == PlayerMode.PLAYER_ONE && !markerPlacedPlayerOne){
             markerPlacedPlayerOne = findNearestTpTile(yTile, xTile, graphicsContext);
 
 
         }
-        if(PLAYER_MODE == PlayerMode.PLAYER_TWO && !markerPlacedPlayerTwo /* && isShieldItemFrame*/){
+        if(PLAYER_MODE == PlayerMode.PLAYER_TWO && !markerPlacedPlayerTwo){
             markerPlacedPlayerTwo = findNearestTpTile(yTile, xTile, graphicsContext);
 
         }
@@ -434,7 +435,7 @@ class Player implements IEntity {
                         gameplayObject.setObjectStatus(ObjectStatus.USED);
                     }
                 }
-            }           //TODO: Marker gets ONLY visually removed when explosion is set to USED ??
+            }           //TODO: Marker - AND other Bombs - get ONLY visually removed when explosion is set to USED ??
             return false;
         }
 
@@ -477,20 +478,23 @@ class Player implements IEntity {
                 }
             } else if (gameplayObject.getOBJECT_TYPE() == ObjectType.BLASTUP_ITEMFRAME) {
                 if (gameplayObject.getBoxCollider().intersects(boxCollider)) {
-                    isBlastUpItemFrame = true;
                     log.info("Collision with blastUpItemFrame");
+                    isBlastUpItemFrame = true;
+                    blastradius = updateBlastradius(blastradius);
                     gameplayObject.setObjectStatus(ObjectStatus.USED);
                 }
             } else if (gameplayObject.getOBJECT_TYPE() == ObjectType.BLASTDOWN_ITEMFRAME) {
                 if (gameplayObject.getBoxCollider().intersects(boxCollider)) {
-                    isBlastDownItemFrame = true;
                     log.info("Collision with blastDownItemFrame");
+                    isBlastDownItemFrame = true;
+                    blastradius = updateBlastradius(blastradius);
                     gameplayObject.setObjectStatus(ObjectStatus.USED);
                 }
-            }else if (gameplayObject.getOBJECT_TYPE() == ObjectType.SHIELD_ITEMFRAME) {
+            }else if (gameplayObject.getOBJECT_TYPE() == ObjectType.BOMBCLOCK_ITEMFRAME) {
                 if (gameplayObject.getBoxCollider().intersects(boxCollider)) {
-                    isShieldItemFrame = true;
-                    log.info("Collision with shieldItemFrame");
+                    log.info("Collision with bombClockItemFrame");
+                    isBombClockItemFrame = true;
+                    bombPlacementRate = updateBombPlacementRate(bombPlacementRate);
                     gameplayObject.setObjectStatus(ObjectStatus.USED);
                 }
             }else if (gameplayObject.getOBJECT_TYPE() == ObjectType.TELEPORT_ITEMFRAME) {
@@ -513,7 +517,7 @@ class Player implements IEntity {
             blastradius = updateBlastradius(blastradius);
             if(isBigBombItemFrame && !isTeleportItemFrame) {
                 log.debug("We have Big_Bomb ItemFrames in the List");
-                bombPlacementRate = 100;
+                bombPlacementRate = updateBombPlacementRate(bombPlacementRate);
                 int xTile = (pixelpadding + mapPosX) / scaledTileSize;
                 int yTile = (pixelpadding + mapPosY) / scaledTileSize;
 
@@ -553,7 +557,8 @@ class Player implements IEntity {
             }
             else if(!isTeleportItemFrame){
                 log.debug("No Big_Bomb ItemFrames in the List");
-                bombPlacementRate = 100;
+                bombPlacementRate = bombReducedPlacementRate;
+                bombPlacementRate = updateBombPlacementRate(bombPlacementRate);
                 int xTile = (pixelpadding + mapPosX) / scaledTileSize;
                 int yTile = (pixelpadding + mapPosY) / scaledTileSize;
 
@@ -566,15 +571,24 @@ class Player implements IEntity {
             }
         }
     }
+    private int updateBombPlacementRate(int bombPlacementRate){
+        if(isBombClockItemFrame && bombReducedPlacementRate > 10){
+            bombReducedPlacementRate -= 10;
+            log.info("Reducing bomb Placementrate:" + bombReducedPlacementRate);
+            isBombClockItemFrame = false;
+        }
+        return bombReducedPlacementRate;
+    }
+
     public int updateBlastradius(int blastradius){
         if(isBlastUpItemFrame){
             blastradius ++;
-            log.debug("Upping blastradius:" + blastradius);
+            log.info("Upping blastradius:" + blastradius);
             isBlastUpItemFrame = false;
         } else if(isBlastDownItemFrame){
             if(blastradius > 1) {
                 blastradius--;
-                log.debug("Lowering blastradius:" + blastradius);
+                log.info("Lowering blastradius:" + blastradius);
             }
             isBlastDownItemFrame = false;
         }
diff --git a/src/main/resources/textures/objects/itemFrames/BlastDownItemFrameDown.png b/src/main/resources/textures/objects/itemFrames/BlastDownItemFrameDown.png
index 396307ff82f7e7c36d47af5b3df5409728423ac7..9147e7e301037b901445a3492aac6ce9c4351c30 100644
GIT binary patch
delta 247
zcmV<T00{rM0-yqrF@M@gL_t(IPh(`D5HM1xp8;&Z!a4E($uTHCWg#Qn07+?8uo-%~
zibR>UbH^?Q3<DC{BpA*u=L8#I6!{&_2Jt`2q`?j5e=>^!!vJ>=H?XEZ>;?>%7Tjde
zOHgNE`FR1w5M-y}H2|9*&<!Km0Fa@`h7dI1)gBWDF_$x7$8aFCVTO=x0LVa47!fo8
zUtAJxz~MdiU~_C;4x*Tc(*RifgQBwRLI7Bk@0<51hJZAK0M>*AONF5HfDT~k0~`jI
x?=w7qdK)t(5|flcnn3`=0HQJgnj%nM008G_vJq0z5|aP`002ovPDHLkV1g)3V<7+l

delta 272
zcmV+r0q_2x0=NQ@F@N$&L_t(IPh(`D5HM1xp8;&ZmMvTUlVgyNj}If<fG_Wtg3WNS
z;XpB~()=ug_P=)wF{fSO;!8|-GhAg7VwnHx5~=}t3yT>p&7KNYDA6>V;YD34n2l@*
zOmpzOHU<<Im}swM&`Zr`cqMB9)(A2H1keou+1!58nBmOTV1L{O;0lk#twvzYAV8J@
z$Sxvmz<d@4hQvP*#~`zz-lBs6coGIEU<tc`fq~)Xe15Po>WLpwjKgUFNEIw9dp0Y8
zHTk}Ik75WcS}|MzN{O&k2r>j6z|sdu{J@bP3_OC-sObP#Qbsojq!|P-3?Mf%0RWQR
WxDov>P1pbc00{s|MNUMnLSTZQjc~XC

diff --git a/src/main/resources/textures/objects/itemFrames/BlastDownItemFrameMiddle.png b/src/main/resources/textures/objects/itemFrames/BlastDownItemFrameMiddle.png
index fb6e3e5a438fcd5ddee5c6f76343bdcedf208b6f..30e08a4dac0225a815d2587ffe4d06f2312317e1 100644
GIT binary patch
delta 248
zcmV<U00;lL0-*wsF@M`hL_t(IPh(`D5HN!DFPszqpB!`IQx-D94Um*p1)HI#t4Net
zJ9q42z%U@8O@iUva!#-TMv>p)Y!LsWOd8x^{wK2-Fbr__a06@l!*0NEX~9hfy##dz
zmY)|;3_*4pUIVcC0o^c?4FDO6YzRREUhOeq5OX;Lb__BbW^oAF27n9%g%Lpm@Wmz3
z1{~gF4>rfv<sgcAI1PZsKPW28E(Cxz`M!CNVhBhx2w+V}uv7?259k1vKEPpc`98z*
yr?)XvA~8uBq!|P-3?M24pecgq1#&dQ^Z)=H8L|-^91XDm0000<MNUMnLSTY7s$SXv

delta 272
zcmV+r0q_2y0=NQ@F@N$&L_t(IPh(`D5HN!DZ`rctKRM?3`1mlw4fyhYDcB4L8x9n+
zD$UO_X#ac15OdlUF22NcH^WsXA%^*{E}<Hbx3HMu((I{Vg%VA(8D7+-g4xK1z%&QX
zYhyrhfr<872EEj5hF7u%V2vOHKmgqkkj?EUjTz2d4aRK%u7B`I+-d~Y3<6{sfb1f|
z2Fzz+U`YG}aSSpW>Mc4LfG1&q0+z4~7#J9C&gTakqn`K?#W<V>fK<VvvS+gbSd;IY
z_b7(Iq7}mhpp*zpg&;%F0W5uh#19<#!N4OJjhYT{C1rGjK$<}S!vKmh6FHh;dH_wG
WxDiRAE585$00{s|MNUMnLSTZjE_J;C

diff --git a/src/main/resources/textures/objects/itemFrames/BlastDownItemFrameUp.png b/src/main/resources/textures/objects/itemFrames/BlastDownItemFrameUp.png
index 36a1b3ca360bfb460b390582b1397c5f1d965257..9e295e1b884e5a89489d81c61aaa5f343e5424ff 100644
GIT binary patch
delta 252
zcmV<Y00aNQ0;K|wF@N7lL_t(IPh(_YU|?7{C;mT(CKbe|EM#Pa86YXG3f8Zut4NeN
zJ9q42z%U@8O@iUva!#-TMv>p)Y!LsWOd8x^{wK2-Fbr__a06@l!*0NEX~9hfy##dz
zmY)|;3_*4pUIVcC0o^c?4FDO6YzRREUhOeq5OX;Lb__BbW_1YJ27n9%g%Lpm@Wmz3
z1{~gF4>rfv<sgcAI1PZsKPW28E(Cxz`M!CNVhBhx2w+V}uv7?259k1vKEPpc`98z*
zr?)XvA~8uBq!|P-3?M24pecgq1#&dQ^ni0CB>(_Wys{BKq30$50000<MNUMnLSTa8
C9AL))

delta 281
zcmV+!0p|Xt0>J{1F@O6>L_t(IPh(_YU|`s?Wy^mMO)Bv5@nK|y8Sv%(Qm}pp8x9n6
zD$UO_X#ac15OdlUF22NcH^WsXA%^*{E}<Hbx3HMu((I{Vg%VA(8D7+-g4xK1z%&QX
zYhyrhfr<872EEj5hF7u%V2vOHKmgqkkj?EUjTz2d4aRK%u79vd+-d~Y3<6{sfb1f|
z2Fzz+U`YG}aSSpW>Mc4LfG1Ia0+z4~7#J9C&gTakqn`K?#W<V>fK<VvvS+gbSd;IY
z_b7(Iq7}mhpp*zpg&;%F0W5uh#19<#!N4OJjhYT{C1rGjK$<}S!vH*ChEocjl*!Qy
f(*w?plmGw-UJ|$wy_Sa!00000NkvXXu0mjfG!=OA

diff --git a/src/main/resources/textures/objects/itemFrames/BlastItemFrameDown.png b/src/main/resources/textures/objects/itemFrames/BlastItemFrameDown.png
deleted file mode 100644
index e5d250bb9b20c7e192358a4dd143cd8b7a908f6f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 291
zcmV+;0o?wHP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#-AP12R5(v#WS|f*QmCH+Y`{$h?*HT%q|We_5pKZ7Wi!EMJae$aYnIf3LtuIT
zsB{Jl18`~XdK$n`CcOcyvFp4t!-S9XF%6jh>^fGPL7JHuE;E!!-(~1|s?6~36$3+=
z;a!GIDNR%tAR7SFgv~^P2H?{SG7zr;FwHEczZw3VW(7L{nN83DkRQ=Ck!1kBc*N@k
zm<vD#+%;uGF-Q6IFNS{%x(p1jF5`~{<Uj-&vW|n9q4e-~6wM%$F`^Na5@87mWC+M6
pbO4Hf5CEk{tSOPAq)cvR0s!l;sS#_2$&CO2002ovPDHLkV1mHiajyUX

diff --git a/src/main/resources/textures/objects/itemFrames/BlastItemFrameDownBlue.png b/src/main/resources/textures/objects/itemFrames/BlastItemFrameDownBlue.png
deleted file mode 100644
index cb81f78ecdaba5f80a9eba129ed7f45e0aa41d5e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 292
zcmV+<0o(qGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#-bqA3R5(v#WS|f*QmCH+V!-zI|H(4QQ;-pEfWf|LU^BkHeo2&Bx5FD57|;#C
zrFo6bN`{al;b4PdYzzZbSJq>-8Kgm5{~d$o)J%r!+0z-WUK9cwhSva?CTu1WGytDw
zkb!s&fN5qi{mt;_G%MHv$ZUcJfc%KAi7W%~#UoxXz+3<_;I1hfiaE-se=+=H&}F!O
z@hSdTxSD;0fr;TVSTo3wbsWqLrH8+xXa>pQO-LX^7+ygPK?d5ZGr?SLQE`R~PFa{K
qk(i_m(hLF^1`w42&=q+KG6Db|JggDMQu&Yo0000<MNUMnLSTZV?{ZN9

diff --git a/src/main/resources/textures/objects/itemFrames/BlastItemFrameMiddle.png b/src/main/resources/textures/objects/itemFrames/BlastItemFrameMiddle.png
deleted file mode 100644
index 2c8a93e650aaed70057b6e64fcd1233e19f307f5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 292
zcmV+<0o(qGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#-bqA3R5(v#WS|f*g7n{H;QmjJIqD2w8Q}(OTs9MI#xn;yyk<!qI0TmWk4k62
zFaVe4uBQPEWzrkK8oSObGfen6AJc&8&#q&&8Kjws;W9&s^j(IYr^*cfUNJC~8Qx{c
zl+r|X0kQ!wP1sB%XaGLVAOrCl0MpE3`kUd;X;!cUkl6$c0QnJJ6Ilk}i$}a(fVlu<
zz+F=|6myhM|6=&Zpv%DU>N5UVKn_HZA?rAp8A=a-N6`#286z4&DG`>CK!$*9LI<Gu
q2LVuO#F`Q*O3D;vCUP{x^Z)?YG^r8W%e8?30000<MNUMnLSTaCesOXD

diff --git a/src/main/resources/textures/objects/itemFrames/BlastItemFrameMiddleBlue.png b/src/main/resources/textures/objects/itemFrames/BlastItemFrameMiddleBlue.png
deleted file mode 100644
index bfc9384b34fa50ac840c577bc8b295024dba8f5f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 292
zcmV+<0o(qGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#-bqA3R5(v#WS|f*g7t5I|DP;#JOvry1{my{1~%jC>z72CbvwL~fdSnBT$<O|
ztYio|5)L*P#>Ox}b!9zPn?V}1_1`gQPR(Svo;{u6>O~>2VR#LIX~JeAK?Cq<1{sLg
z0GMVL)87n#PP2j?fXpUn0LYK%n#eK$Up(UV0?Y*<1MZr#p_rq5`WM4L23>~h7oXyf
zg{#>|7?>C?gEfN;S;xW5P<r?~ie``;-h>1)gy9v$5M-deIup$078Pf>;FN`#5{XI5
qAk83vVE|DX09_G0FOa1hq6q-Z!K@M4xS-<z0000<MNUMnLSTY7S#ys7

diff --git a/src/main/resources/textures/objects/itemFrames/BlastItemFrameUp.png b/src/main/resources/textures/objects/itemFrames/BlastItemFrameUp.png
deleted file mode 100644
index 4a633765b869cac0f47b399aa37a047b9e6bb85b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 300
zcmV+{0n`48P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#=1D|BR5(v#WME)mxXHl%A4HQ1)ET}qGQtelxNIg^|1$?Wyyi$9I0TmWk4k62
zFaVe4uBQPEWzrkK8oSObGfen6AJc&8&#q&&8Kjws;W9&s^j(IYr^*cfUNJC~8Qx{c
zl+r|X0kQ!wP1sB%XaGLVAOrCl0MpE3`kUd;X;!cUkl6$c0QnJJ6Ilk}i$}a(fVlu<
zz+F=|6myhM|6=&Zpv%DU>N5UVKn_HZA?rAp8A=a-N6`#286z4&DG`>CK!$*9LI<Gu
y2LVuO#F`Q*O3I{WB#?S|ULZ#^Ob<9WQUU<Nxv3FDwGVCp0000<MNUMnLSTYK({oz@

diff --git a/src/main/resources/textures/objects/itemFrames/BlastItemFrameUpBlue.png b/src/main/resources/textures/objects/itemFrames/BlastItemFrameUpBlue.png
deleted file mode 100644
index 661efdffe3bfdd0c75b65d3a60c25be089b1b6f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 295
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|9(uYshFJI~
zr!X|WegD5XGpKR7g0k`%hUVJK2hOZtA1{=8=IsYJHntMxg3P$&&65<Lcv##>kdQvi
zaCPd}h+MYJ3)kw8FR(P7{IKd<N!x1i)&p%1O&OMP&hBL4J+NFdMInwkVOFG1z40H*
zvs`5iMza?%D%dZ|Ryxg4^ReSPw}E&A&yMU<ZApEfUdHqMmne~37hlt5FSagCJ~1I_
z2hTMgqZC<oW9OF--)qcrEUFL|Iw8;&F5o<&@!KmOgXz&Ba~?JYi=}y~sA)EvG&8g@
qx}-9cxPI8<FfFe`%_DCK(1+EbYXnzlUQ+-v89ZJ6T-G@yGywqar*9Yl

diff --git a/src/main/resources/textures/objects/itemFrames/BlastUpItemFrameDown.png b/src/main/resources/textures/objects/itemFrames/BlastUpItemFrameDown.png
new file mode 100644
index 0000000000000000000000000000000000000000..d27512a067b1c26e0e09f951cd81c7370ba10905
GIT binary patch
literal 318
zcmV-E0m1%>P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#_(?=TR5(v#WS|f*QmCH+V!-zI|H(4QQ;-pEfa=P6hTHRRF{mc0;Wdj}R2(dS
z!6}P@0oecsk4U&ibVJtItYio|5)PIJvEy&%VH$wT1t1OD`tKMtr)Dx-&z{b3^`a2i
zu-oB{s4f5*00S^h*!)7!0DPK32I4gUrkTa`H^ZOPtY8Nqvk4ji@*}z?vJAi%k9fTR
za{<VJyQXX?<|v>3#qf_om*M)wr}$&xYW5KZCWgyk%^*Y8aWFHK9{!G^86<}hjRyOs
zF?@af608wq2*WFgA;>^`btae#N{tvP5o7=ezzo3^4!DytzL3Ku=PAet09n1P5$v85
Q+5i9m07*qoM6N<$f`Czhz5oCK

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/objects/itemFrames/BlastUpItemFrameMiddle.png b/src/main/resources/textures/objects/itemFrames/BlastUpItemFrameMiddle.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdab779804418a03f86897ec058dd742fecffc85
GIT binary patch
literal 318
zcmV-E0m1%>P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#_(?=TR5(v#WS|f*g7t5I|DP;#JOvry2B@yAXShB87K3V{8eX%wMa9AL7o4&f
z7?2HM@Q8$KL^ouO%}R!lBjI3q5Ig>69;N}fTmaIbt^bZeb805T_3Y^kS1$^I4Z9uQ
zi0T560Wbj5gv~Dm4Zx=vWFTGxV47J>e>40!%?fq^GMk_QAU~pOBFg}L@rc(8Fc*Lf
zxNFLWVvh3ZUkv{kbQ!K+e2PC7u4W%$U}Cro)(kRa9S1W*>EZ7vnn7|H(P*%58pGGu
zFTol?hA_N>7=jG6S7(B`pwx(w5<v!l0L&0v;eb0S;|n=la`3!Bj%KJH00>d65qkTd
QHvj+t07*qoM6N<$g2wuLo&W#<

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/objects/itemFrames/BlastUpItemFrameUp.png b/src/main/resources/textures/objects/itemFrames/BlastUpItemFrameUp.png
new file mode 100644
index 0000000000000000000000000000000000000000..b334ff57e7f0d255e966ff4eb858e490c43bdabb
GIT binary patch
literal 321
zcmV-H0lxl;P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp)
z=>Px#`$<GWR5(v#WB`Hf@Bf2oQh}!+BO}ZJ)s^)Ox98ttP)$_BYYexjI9UFIQx*dQ
zvH=Vpk#LRZhODt!$q;fR94rrF$KTAuGys<iKpM35-!W)T&1ATqJ)Pm|MIo?Zx5FDz
zT>vrw24I@7`GueX_%wqI#A^UdGmGhOhCioS!45!X6EpziM|4eO8GtVy@p=K~0+0cB
zP1#V)Q9k{P;U9x8!}W_#@yEi|>>~_J441*0L58g3U}h*i{2fIzNDd<!4faiA`1<-K
zSR=>~hF1_nkb(B<OfVOe8ZlBL$N&(48G<Vua3^JaA%{y2o)^f`4Ale4jT8U?w$`i>
TcaFTj00000NkvXXu0mjfofUlU

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/objects/itemFrames/ClockItemFrame1Up.png b/src/main/resources/textures/objects/itemFrames/ClockItemFrame1Up.png
new file mode 100644
index 0000000000000000000000000000000000000000..26f4f749eb98775f1b4a74112002103d357dc54d
GIT binary patch
literal 224
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_h|ehFJI~
zrz8MDN$(&2MV_qx%k|S!S|m4E+Rsw?yH9w!(F4;1$B(n;JeZ~%y+O+70>ccw363{-
z6f+pku%5W4EZuUQVZyWj{}mtp@(UBqYx^+Sy5RZ)6NX6RU5pBLX9O1UCbYPS+;LT~
zJE83&-5|%h#hf8Uxys@|4C7|mBg=D5geEUDjB)5uD>41B$DuE+Vn@It$tB_pr@f{M
UPO$zv9q391Pgg&ebxsLQ0FW3^tN;K2

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/objects/itemFrames/ClockItemFrame2Middle.png b/src/main/resources/textures/objects/itemFrames/ClockItemFrame2Middle.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f8bd6847d5bb4a895e3711e527ea821621564d8
GIT binary patch
literal 218
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|rg*wIhFJI~
zrz{XKX!>Hj%k7`~@j3r@Pd7fqdt;8g?<C26!qbf&m>xKOoIU5kG~MV8Qa%?LX6Q|D
zyuqWG!ElE4#5HB<mg@`?p8fxCczEi>iGuH>=CD1u#8b?9Mqm*yLuQ5cVy5q%A0}HT
zgkLz%FyZR^l+ey{Mi130ivv6jmhwy5wq5k_nRTpy(Qwv<s|P+aS<XtVVwlD_L$IR3
R`2o;<44$rjF6*2UngC%JQ;Yxr

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/objects/itemFrames/ClockItemFrame3Down.png b/src/main/resources/textures/objects/itemFrames/ClockItemFrame3Down.png
new file mode 100644
index 0000000000000000000000000000000000000000..3de4f072c037347a39f92e37de9f0f90614a0242
GIT binary patch
literal 222
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_Y?dhFJI~
zrz{XK2wE|pF^6Gs_LKS|o?rW`EtT&yoc(!GW#&WcLQUp4=9-$C18jLWH?gih$imz3
zl1Z}VtUwdnftZFI+f9xYybPKD{>vN3NJ>gRTz4>&LGP@=^aDJKrx+$A2{@GT2D0s$
z8tBMbx$yY*hc&mP88&f=@SRxKu(M%>gG*oi7ZH~d6QRk=43ioqd|zZaR5CI=QR)|*
Tk$n9M(2We9u6{1-oD!M<YmZMa

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/objects/itemFrames/ClockItemFrame4Middle.png b/src/main/resources/textures/objects/itemFrames/ClockItemFrame4Middle.png
new file mode 100644
index 0000000000000000000000000000000000000000..7782b908bfe01fd7f40ac489fe2d643f9ee3fbe8
GIT binary patch
literal 223
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_r3fhFJI~
zrz{XKX!>Hj%k7`~@j3r@Pd7fqdt;8g?<C26!qbf&m>xKOoIU5kG~MV8Qa%?LX6Q|D
zyuqWG!ElE4#5HB<mg@`?o^3bMO4#evpMUslLP|=@Znou&CuTWXwa&kj_~XC4pr?Uz
zMmEEy-WP!mQ@AyZ7*doqWHv}Tg(xT;x8L=-v(GK*l8Kv+z+%o=UK{-hizSz_Gi*tp
VB<NS+@(Jij22WQ%mvv4FO#lykP+|Z8

literal 0
HcmV?d00001

diff --git a/src/test/java/de/hdm_stuttgart/battlearena/Model/Entity/PlayerTest.java b/src/test/java/de/hdm_stuttgart/battlearena/Model/Entity/PlayerTest.java
new file mode 100644
index 00000000..7055c8ba
--- /dev/null
+++ b/src/test/java/de/hdm_stuttgart/battlearena/Model/Entity/PlayerTest.java
@@ -0,0 +1,29 @@
+package de.hdm_stuttgart.battlearena.Model.Entity;
+
+import de.hdm_stuttgart.battlearena.Controller.Enum.PlayerMode;
+import de.hdm_stuttgart.battlearena.Controller.GameSceneController;
+import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
+import de.hdm_stuttgart.battlearena.Model.Entity.EntityClass;
+import de.hdm_stuttgart.battlearena.Model.Entity.EntityDirection;
+import de.hdm_stuttgart.battlearena.Model.Map.TileManager;
+import javafx.fxml.FXML;
+import javafx.scene.layout.BorderPane;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.*;
+
+public class PlayerTest {
+    @FXML
+    private BorderPane gameScene;
+
+
+    GameSceneController GameSceneController = new GameSceneController();
+    //TileManager tileManager = new TileManager()
+    Player player = new Player(null, InputHandler.getInstance(), EntityClass.HUMAN, GameSceneController, PlayerMode.PLAYER_ONE);
+    @Test
+    public void checkTileWalkable(){
+
+        int x = 1, y =1;
+        if(TileManager.tileMap[y][x] < 10)
+        assertTrue(player.checkTilePlacing(x,y));
+    }
+}
-- 
GitLab