From 46acb06393ac6c7b93cc086ebcf55322f2175873 Mon Sep 17 00:00:00 2001
From: ms622 <ms622@hdm-stuttgart.de>
Date: Sat, 9 Dec 2023 16:02:01 +0100
Subject: [PATCH] update: added test map in GameSceneController.java, add:
 textures, update: variables in TileManager.java #41 #39

---
 .../Controller/GameSceneController.java       |  30 ++++++++++++++++++
 .../battlearena/Model/Entity/Player.java      |   2 +-
 .../battlearena/Model/Map/TileManager.java    |  19 ++++++++---
 src/main/resources/fxml/GameScene.fxml        |   5 ++-
 src/main/resources/textures/map/Grass01.png   | Bin 0 -> 1802 bytes
 src/main/resources/textures/map/Grass02.png   | Bin 0 -> 1800 bytes
 src/main/resources/textures/map/Grass04.png   | Bin 0 -> 1956 bytes
 src/main/resources/textures/map/Stone01.png   | Bin 0 -> 1859 bytes
 src/main/resources/textures/map/Stone02.png   | Bin 0 -> 1953 bytes
 .../resources/textures/map/mapPlaceholder.png | Bin 3227 -> 0 bytes
 .../textures/map/stoneExampleTexture.png      | Bin 3100 -> 0 bytes
 11 files changed, 48 insertions(+), 8 deletions(-)
 create mode 100644 src/main/resources/textures/map/Grass01.png
 create mode 100644 src/main/resources/textures/map/Grass02.png
 create mode 100644 src/main/resources/textures/map/Grass04.png
 create mode 100644 src/main/resources/textures/map/Stone01.png
 create mode 100644 src/main/resources/textures/map/Stone02.png
 delete mode 100644 src/main/resources/textures/map/mapPlaceholder.png
 delete mode 100644 src/main/resources/textures/map/stoneExampleTexture.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 9c8b490d..3882c1e0 100644
--- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
+++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java
@@ -4,6 +4,7 @@ import de.hdm_stuttgart.battlearena.Model.Entity.EntityFactory;
 import de.hdm_stuttgart.battlearena.Model.Entity.EntityType;
 import de.hdm_stuttgart.battlearena.Model.Entity.IEntity;
 import de.hdm_stuttgart.battlearena.Model.Inputs.InputHandler;
+import de.hdm_stuttgart.battlearena.Model.Map.TileManager;
 
 import javafx.animation.AnimationTimer;
 import javafx.fxml.FXML;
@@ -31,14 +32,42 @@ public class GameSceneController implements Initializable {
     IEntity player;
     IEntity enemy;
 
+    TileManager tileManager;
+
+    //map data
+    String mapString =  "4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 " +
+                        "4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " +
+                        "4 2 1 1 1 1 1 2 2 2 1 1 1 1 2 1 1 3 " +
+                        "4 1 1 1 2 2 4 3 3 1 4 3 3 3 3 2 2 3 " +
+                        "4 1 1 1 2 2 4 1 1 1 1 1 1 1 3 1 2 3 " +
+                        "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 1 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 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 " +
+                        "4 1 1 1 1 1 4 3 3 1 3 3 3 3 3 1 2 3 " +
+                        "4 1 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1 3 " +
+                        "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";
+    int horizontalTileCount = 18;
+    int verticalTileCount = 18;
+    int diffTileCount = 5;
+
 
     @Override
     public void initialize(URL url, ResourceBundle resourceBundle) {
         graphicsContext2D = canvas2D.getGraphicsContext2D();
+        graphicsContext2D.setImageSmoothing(false);
 
         player = EntityFactory.createEntity(EntityType.PLAYER, graphicsContext2D, inputHandler);
         enemy = EntityFactory.createEntity(EntityType.ENEMY_PLAYER, graphicsContext2D, inputHandler);
 
+        tileManager = new TileManager(graphicsContext2D, diffTileCount, horizontalTileCount, verticalTileCount, mapString);
+
         AnimationTimer gameLoop = new AnimationTimer() {
             @Override
             public void handle(long l) {
@@ -58,6 +87,7 @@ public class GameSceneController implements Initializable {
     }
 
     private void renderContent(GraphicsContext graphicsContext) {
+        tileManager.renderMap();
         player.renderEntity(graphicsContext);
         enemy.renderEntity(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 838affe1..f3242a2d 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
@@ -61,7 +61,7 @@ class Player implements IEntity {
         mapPosX = 10;
         mapPosY = 10;
         boxCollider = new BoundingBox(mapPosX+15,mapPosY+10, playerWidth, playerHeight);
-        playerSpeed = 3;
+        playerSpeed = 5;
         playerDirection = EntityDirection.DOWN;
     }
 
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 885d2308..cc320b3a 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
@@ -16,9 +16,14 @@ public class TileManager {
     private final ITile[] tileSet;
     private final int[][] tileMap;
 
+    private final int horizontalTileCount;
+    private final int verticalTileCount;
+
     public TileManager(GraphicsContext graphicsContext2D, int diffTileCount,
                        int horizontalTileCount, int verticalTileCount, String mapString) {
         this.graphicsContext2D = graphicsContext2D;
+        this.horizontalTileCount = horizontalTileCount;
+        this.verticalTileCount = verticalTileCount;
 
         tileSet = new BackgroundTile[diffTileCount];
         tileMap = new int[horizontalTileCount][verticalTileCount];
@@ -30,9 +35,15 @@ public class TileManager {
     private void createTiles() {
         try {
             tileSet[0] = TileFactory.createTile(TileType.WALKABLE,
-                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/mapPlaceholder.png"))));
-            tileSet[1] = TileFactory.createTile(TileType.NON_WALKABLE,
-                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/stoneExampleTexture.png"))));
+                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Grass01.png"))));
+            tileSet[1] = TileFactory.createTile(TileType.WALKABLE,
+                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Grass02.png"))));
+            tileSet[2] = TileFactory.createTile(TileType.WALKABLE,
+                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Grass04.png"))));
+            tileSet[3] = TileFactory.createTile(TileType.NON_WALKABLE,
+                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Stone01.png"))));
+            tileSet[4] = TileFactory.createTile(TileType.NON_WALKABLE,
+                    new Image(Objects.requireNonNull(getClass().getResourceAsStream("/textures/map/Stone02.png"))));
         } catch (Exception e) {
             log.error(e);
         }
@@ -51,7 +62,7 @@ public class TileManager {
         }
     }
 
-    public void renderMap(int horizontalTileCount, int verticalTileCount) {
+    public void renderMap() {
         int currentTile;
         int scaledTileSize = 48; //todo: later replace "48" with value from gameScene.
         int tilePosX;
diff --git a/src/main/resources/fxml/GameScene.fxml b/src/main/resources/fxml/GameScene.fxml
index f6f5b8cd..f046db58 100644
--- a/src/main/resources/fxml/GameScene.fxml
+++ b/src/main/resources/fxml/GameScene.fxml
@@ -4,12 +4,11 @@
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.StackPane?>
 
-
-<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.GameSceneController">
+<AnchorPane prefHeight="864.0" prefWidth="864.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.hdm_stuttgart.battlearena.Controller.GameSceneController">
    <children>
       <StackPane prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <children>
-            <Canvas fx:id="canvas2D" height="400.0" width="600.0" />
+            <Canvas fx:id="canvas2D" height="864.0" width="864.0" />
          </children>
       </StackPane>
    </children>
diff --git a/src/main/resources/textures/map/Grass01.png b/src/main/resources/textures/map/Grass01.png
new file mode 100644
index 0000000000000000000000000000000000000000..e835d4676d2f80105626ece4d99b485a30b289fe
GIT binary patch
literal 1802
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3
z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+<
zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx
zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1
zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT
zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb
zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x<
z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc
z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q?
z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn
zW}I@WSD%4_IVUqDq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI
z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw
zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9
znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A
zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@
zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt
zDA~CeB^DPO7~1GV6rpN{h@zTlqmRXU8<3~1B7;(k^K(i;!ER@0Y-9rt3KUU91VD5|
zVAX*vimoFdBflgcn4pR>lRfiFQi}?TfQbuiBg{VBD$vbBSRR^}Sz-q>08JQ47gFR{
zITn?a=NDy%fFlAPia1q3O@V|cQu>4>esJgmQ@<UTjXpdl*>OFxXIlo$x%Qqejv*F;
zrIRoE9SY!SJ1yC1$i!W)_c1E|%=ZtBHBLL!F78g%GBo6|iTB?Aj=^`^=B@Srx7BaI
z`TF;5&rNIJX|D`Ax_HZPd)tq(o0r9%aNmACpsQh7-GqNPv?c$ozaMvaPF-)st9dE^
zK1HN&lmGhu)_cXi{a%{Fa>YgFKYCBxJE$@#^Q6ym$pb3F=^_V~=Gt4&obHz&ePox?
zJ645FKabDIdeAf_#nAHD9D(~TE)!=y+QD3;ur|s6_0)MEmnkpU7hP<bb?p|9uR=9n
zm5<4dIog(z%e&osp3m^vBf&Ub^`^nMcjx08zV7n1`jE9IuQE(VA@t)$MfHQ{!-7f<
z@qCyzb-tNW|K2BSqF=jM+~-h<={dT8@}rtRE+tPAc6EL}cJ5lY_06qwmjs166!L_X
r^A^A0Keb%R?PJo^Njk?~Omh0)AUP@SQzNGWsG#z6^>bP0l+XkKx$S;E

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/map/Grass02.png b/src/main/resources/textures/map/Grass02.png
new file mode 100644
index 0000000000000000000000000000000000000000..144fad81f75b681454b58768081394cb40aaeead
GIT binary patch
literal 1800
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3
z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+<
zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx
zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1
zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT
zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb
zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x<
z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc
z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q?
z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn
zW}I@WSD%4_IVUqDq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI
z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw
zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9
znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A
zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@
zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt
zDA~CeB^DPO7}@AU6rpN{h@zTlqmRXU8<3~1B7;(k^K(i;!ER@03^Wr%6cGUs9T8Y{
zAd8~w2*}7U$p<E=qReE^ypq(Sf+Aqz0^10)54Q?*vk;bt=4F=H!3;nXM$&~8IaZEE
zCFS`=*&*PFfQKSZ6;M+kA&QhfA&DOx`oPq0$7Q1r&q;P%m4dY;z?^IA>Eak-As9Q!
z*YB_cPwQMQ?f}7@$ZZ9UQyv#dl&yKl^hf7r(AK8d6VFdhpB2@Wma{+IzWS1_t$p8p
z`{M`J>0jIU-}YJO`@OG~4%~@Zmn?JAMI!p)gaZl*D)ILGlF$1(FV_Fe_^IP?_51ol
zM#meu>n)nvO4iG}p80;te8Q5>rBXG$g6DNb1-3AkTZI^W3Y=lqzhu+A1*aFjzRmLH
zk-%Y-rsC#<_s^d`c3q6MZ14WJkMe$<J9u^dt4$5n8&;`*jI3DYC^%o=WuXisQ^J$?
zX1TvLl)|i|D>P<^hE8FTRFZd_)Aua;%NHk;6M`xmT>hIJ`1M3L#jwy;p?T7qklJ~H
zFP}Yp$`_JwX!5#S8#2wMl8XNAW%6F4b;K+0iknj3tW=gs6IT4#AX;S=d1a?zm)Ep(
lmLs#Tr?1|<(p5$HH}hS&<t2Zfi<g6nDNk2Fmvv4FO#m$Rc*Ot!

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/map/Grass04.png b/src/main/resources/textures/map/Grass04.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ce012b5eac6c41488efe96c5f66eb43c28c98ce
GIT binary patch
literal 1956
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3
z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+<
zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx
zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1
zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT
zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb
zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x<
z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc
z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q?
z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn
zW}I@WSD%4_IVUqDq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI
z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw
zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9
znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A
zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@
zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt
zDA~CeB^DPOnAqq;6rpN{h@zTlqmRXU8<3~1B7;(k^K(i;!ER@0Y-9rt3KUU91VD5|
zVAX*vimoFdBflgcn4pR>lRfiFQi}?TfQbuiBg{VBD$vbBSRR^}Sz-q>08JQ47gFR{
zITn?a=NDy%fFlAPia1q3O@V|cQu>4>esJgmQ@<UTjXpdl*>O#=>6r-3xi>vs978Mw
zODEs<iVhTLOJAO;<dobiqCD-A!pbJIZ`)X-Cvd&`{KfE>-d8Wyy;*_zwnyBAvYXhq
zgyg*b7BKt7yBgs%bFF_9&a9dF^Z(4P-=YqFyXGU}sj_tMu9D@|PoLj^|7b@1Z(aFi
z?n_Gorsu4>en>s{=fr={g+flxUvyZ$e#v{!cF`bLB{zkjTkDT|pI79XWT8L*S?<I7
zc{QIGC@$aG^kqrWw5<F`TRrFW{++cpURyDQ>4Z#Z>d#*bdsgsYTyS|ybEXi>3zo1c
z3>VdBNSr#J-TgXjMehAJ&I>19t+@45bZ!c~ITUtQ$1*GL@m@0nMxoPZr*Q<AiLj*x
zp5#arWY#;<a?hag)Q<&ni;VVWFOi@2qcmlYbjqU%D_w08>%Gcc-?(m7n*Olx%&~Ot
z2`kwh53KoA&#j}uQxs{rT4qy^pzPc&C!XG#S{|?QKH}av2BjrSn=dr&Vs7S6T&el)
z&9ck~!3Ea7438FXKOFRDTlSGNyAwI>^N$%8eLu+JQB~f-FzNT2*a=ovpC88_VG>!(
zZ*%yL<BzASIje*_{;hapSUV?n^2v+qB0}Yt*M^z$+Gg)}^zBu99#((y%If1~(hp}c
x=>GlnC_Q+mc8>8ytB^mJPZzsf{&8UaXZx(sUw$14GoOHpP)}Dsmvv4FO#tph$vgl6

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/map/Stone01.png b/src/main/resources/textures/map/Stone01.png
new file mode 100644
index 0000000000000000000000000000000000000000..b6cf13f66633060803264739b889f64c32877a0e
GIT binary patch
literal 1859
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3
z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+<
zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx
zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1
zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT
zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb
zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x<
z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc
z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q?
z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn
zW}I@WSD%4_IVUqDq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI
z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw
zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9
znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A
zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@
zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt
zDA@&<<maUt7~1GV6rpN{h@zTlqmRXU8<3~1B7;(k^K(i;!ER@0Y-9rt3KUU91VD5|
zVAX*vimoFdBflgcn4pR>lRfiFQi}?TfQbuiBg{VBD$vbBSRR^}Sz-q>08JQ47gFR{
zITn?a=NDy%fFlAPia1q3O@V|cQu>4>esJgmQ@<UTjXpdl*>SnOaySCaxfPx+jv*F;
zslkp#%?3PEj9X%MY`10p`CqswQ$Fy7<w?mRg_AwIcSjrvILol@N$gq`;eGXf7mcjH
z&%IijEtdBDZB^u=#}-j{6`rxBB(^L+{3Sdz^?C7f<rv{7ZXYHc$YFXHpkVRP^23F<
zWr7Dbr?g8>Q~cJjzr`!Dj3IO3i&YZU)16vt7EPME^Hh=q`{vaTiofleE1G+vglUrF
zr$e(&t$kmgd)>sHaj)Zw_^v(tO#9;fHT0As0uH&XnXxBr-sC+doazhpZ`!F=C9HQ*
z`tai0>&Gd^cY`)v`feTn;P-<wn)%rZRjFDx&ip)>9>&0)rOmmo|NGa}nKwhWPj{a_
zJ@$vMG@B2znA5IM8OdGm3WYA;u=!Q$Ua-;R7=!<1xzYxGwu!#JpJuP<nQ|`h(2nO4
zhrh)qOo-&{F<jU2(BYc`)4auhXE!zPb(_!dU7+AZowVSS;0UADer=0wIlnyHXdg1w
yKhbqVkHOW>s_##J{`e#0d4FM=*-WEJQ|$A;A6fTXZ~Jsm3FqnR=d#Wzp$P!5CYELZ

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/map/Stone02.png b/src/main/resources/textures/map/Stone02.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ac41bee77062960aa2d8cfc921f66e45de629ba
GIT binary patch
literal 1953
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKU@Xmab`HpPc6ZLt$u9~nNK8(3
z$t*6&NvsSoW?;~mSUO>^_u&AMqyDRdE?9N&$;udYI$ycORaTgxE#hhr!n!(mRvl+<
zjf!Sap>Vk75BZ3Lkp&w%LJA5C1YFn!@6NH(+>udnZ+gfrrF+Mp{<WA>yffy2bbzGx
zHztjj(<b^HS+e!Yt|!&a?el_HrEOZVNQdj+-`%f2U;KK{za!FjcbULV|Cs6L^rn~1
zV+yYS8+&#B$yri=?_Y83l@xn0v2$u}H|IT7Il~OiN2?y}Ieon8vfg~_c~ev7{FoMT
zi7TsZho{bR>n}Cz)4NjFZf(ACZ~oQr=|^Q=1)fP1R+H!o2yA3weOUkJa-V&lZc%tb
zfL=e7&M6m9LE%kDK3`avC}dQ~;rMF8j^fvK{A+)o%*}l-IwQB>oc^s_PRtf_7f!x<
z`&I>ugcL*GD<9Jk_g4$QJu5o!o6}$hQ`>uu&56$rDVA5)^Sr2j_$Qg?gDg|o)X(dc
z&%Kpuo!_Yamt9;lYfmtn<7r?#RHR0Druq6ZXaU(A46KZ749q|lBLfqVkYZp3vl$q?
z7^UItAVv*@n)XZv7O0viAPoX7K+FiInHDg?RR}C#MzBFj4W%+?0x8Y{kH}&M1`%Hn
zW}I@WSD%4_IVUqDq9nrC$0|8LS1&OoKPgqOBDVmfi@~PC3dqb&ElE_U$j!+swyLmI
z0;{kBvO&W7N(x{lCE2!05xxNm&iO^D3TAo+dIm~%TnY*bHbp6ERzWUqQ0+jTtx`rw
zNr9EVetCJhUb(Seeo?x<p{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9
znfZANAafIw@=Hr>m6Sjh!2!gbDamkq3QCJ|z_z3$>!;?V=BDPA6zd!68R}!xSCW~A
zaA96CG&q0(qYsh+YBRv9&9k5+*#sC;t`$J{K>Y`FXfoK|;*u17BnA3L1_l<o21dF@
zmilo20iAD?l5ACyS(1|q4mh}fz#-_EQ-UfAQV$A(oJ>&2TID3>rQ0f1=%%EmC6?xt
zDA@&<<maUt7}@AU6rpN{h@zTlqmRXU8<3~1B7;(k^K(i;!ER@03^Wr%6cGUs9T8Y{
zAd8~w2*}7U$p<E=qReE^ypq(Sf+Aqz0^10)54Q?*vk;bt=4F=H!3;nXM$&~8IaZEE
zCFS`=*&*PFfQKSZ6;M+kA&QhfA&DOx`oPq0$7Q1r&q;P%caK<$0dwv(PZ!4!3&GUj
z-9?8Sc&-?lnTQ0aO3HPzI}82_Xo>Im8UBe;Q-Sp-gAub@VFk}ZMlOvCp1!bcJU%AO
zc6U8@U0rvs<o<o9WS-VUkIgq*_U&hC+8?#{#nI0hAFb85o=tNW-M&gM&?DvSvdN#_
z_C)DT4_R;TWi;u^1e;IoAuBy5%1WM!aQv|Nd5P8BjJ<J_uV<aS=UO0i*!A0<`OlOj
zbCxm0@?I$3DYJLm?M<rYl5wx}m&jJX%rWy`d@&#?sPD7G)m7f-&#GCT+ne+3^Uoz6
zIWOd$pY7{^_3K~58mEm*>_od#BiRo|c=+<2>pq-hxZQc(p%+Sg|0YXlHkFB}DI8Bb
z?)B!TINv%C7XgdLmU-fWo&Ow{Md>6*{hgxcuvBF;*Mtw3B;I{wYJJf!*$}C~pQ|B$
z*RTE8-}A2<A6k6TeRDjcWP#3?D4nT`J@?3Hc^q5wS|!gsdS~Ft$&wEbZdx{Zql^ZV
zh>P}_Z4;JE)-Y!>TawbOZ}dv#l{kx;lz)qhNYQH3oeICWD<|}bG`!zs>g91o!zXF|
zcSUmr$$(H+wh1cPdk$t_iFA-wm^fc~?MJEjJ<QJA4mz*dzrg5%*fDuW2BC>-S|25|
p-00Z7bFVP#pN9_fc0D=nSpRO`;|88rt2sdBr>Co*%Q~loCICt2wg~_L

literal 0
HcmV?d00001

diff --git a/src/main/resources/textures/map/mapPlaceholder.png b/src/main/resources/textures/map/mapPlaceholder.png
deleted file mode 100644
index ca3f707dff2cf59fbcf284b896a786fafa5e9180..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3227
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
N002ovPDHLkV1kdF9nk;)

diff --git a/src/main/resources/textures/map/stoneExampleTexture.png b/src/main/resources/textures/map/stoneExampleTexture.png
deleted file mode 100644
index 29dfde5c4e557cfd2b1e4dc536f774faabea40a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3100
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

-- 
GitLab