From cc87c551eb2a1b43dc09a081c3636a609fcacf2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Mon, 12 May 2014 18:26:19 +0200 Subject: [PATCH] =?UTF-8?q?W=C3=A4nde=20werden=20nun=20mit=20runden=20ecke?= =?UTF-8?q?n=20gezeichnet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inf3.csproj | 14 +-- src/Gui/Dummytile.cs | 52 ++++++++++ src/Gui/MapPanel.cs | 153 +++++++++++++++++++++++++++--- textures/wall.jpg | Bin 6711 -> 0 bytes textures/wall.xcf | Bin 0 -> 22647 bytes textures/wall_base.png | Bin 0 -> 1592 bytes textures/wall_corner_botleft.png | Bin 0 -> 608 bytes textures/wall_corner_botright.png | Bin 0 -> 592 bytes textures/wall_corner_topleft.png | Bin 0 -> 577 bytes textures/wall_corner_topright.png | Bin 0 -> 589 bytes textures/wall_edge_botleft.png | Bin 0 -> 635 bytes textures/wall_edge_botright.png | Bin 0 -> 614 bytes textures/wall_edge_topleft.png | Bin 0 -> 621 bytes textures/wall_edge_topright.png | Bin 0 -> 618 bytes textures/wall_inner_botleft.png | Bin 0 -> 338 bytes textures/wall_inner_botright.png | Bin 0 -> 333 bytes textures/wall_inner_topleft.png | Bin 0 -> 370 bytes textures/wall_inner_topright.png | Bin 0 -> 345 bytes 18 files changed, 197 insertions(+), 22 deletions(-) create mode 100644 src/Gui/Dummytile.cs delete mode 100644 textures/wall.jpg create mode 100644 textures/wall.xcf create mode 100644 textures/wall_base.png create mode 100644 textures/wall_corner_botleft.png create mode 100644 textures/wall_corner_botright.png create mode 100644 textures/wall_corner_topleft.png create mode 100644 textures/wall_corner_topright.png create mode 100644 textures/wall_edge_botleft.png create mode 100644 textures/wall_edge_botright.png create mode 100644 textures/wall_edge_topleft.png create mode 100644 textures/wall_edge_topright.png create mode 100644 textures/wall_inner_botleft.png create mode 100644 textures/wall_inner_botright.png create mode 100644 textures/wall_inner_topleft.png create mode 100644 textures/wall_inner_topright.png diff --git a/inf3.csproj b/inf3.csproj index a690624..f67c585 100644 --- a/inf3.csproj +++ b/inf3.csproj @@ -9,29 +9,28 @@ Exe inf3 inf3 - v4.0 - True + true full - False + false bin\Debug DEBUG; prompt 4 x86 - False + false /unsafe true none - True + true bin\Release prompt 4 x86 - False + false true @@ -78,9 +77,10 @@ - + + diff --git a/src/Gui/Dummytile.cs b/src/Gui/Dummytile.cs new file mode 100644 index 0000000..d518cf6 --- /dev/null +++ b/src/Gui/Dummytile.cs @@ -0,0 +1,52 @@ +namespace WorldOfPeacecraft +{ + // A ITile always returning it is a wall and 0,0 as position + public class Dummytile : ITile + { + private static Dummytile Instance = new Dummytile(); + + public Dummytile () + { + } + + public static Dummytile GetInstance() + { + return Instance; + } + + public bool IsWall() + { + return true; + } + + public bool IsWalkable() + { + return false; + } + + public bool IsWater() + { + return false; + } + + public bool IsForest() + { + return false; + } + + public bool IsHuntable() + { + return false; + } + + public int GetX() + { + return 0; + } + + public int GetY () + { + return 0; + } + } +} \ No newline at end of file diff --git a/src/Gui/MapPanel.cs b/src/Gui/MapPanel.cs index cf976ec..5df6957 100644 --- a/src/Gui/MapPanel.cs +++ b/src/Gui/MapPanel.cs @@ -24,8 +24,20 @@ namespace WorldOfPeacecraft private Image Knight; private Image Walkable; private Image Water; - private Image Wall; private Image Flowers; + private Image WallBase; + private Image WallEdgeTopLeft; + private Image WallEdgeTopRight; + private Image WallEdgeBotRight; + private Image WallEdgeBotLeft; + private Image WallCornerTopLeft; + private Image WallCornerTopRight; + private Image WallCornerBotRight; + private Image WallCornerBotLeft; + private Image WallInnerTopLeft; + private Image WallInnerTopRight; + private Image WallInnerBotRight; + private Image WallInnerBotLeft; private Image BeachTop; private Image BeachBottom; private Image BeachLeft; @@ -53,7 +65,6 @@ namespace WorldOfPeacecraft Knight = Image.FromFile (ImagesFolder + "knight.png"); Walkable = Image.FromFile (ImagesFolder + "walkable.jpg"); Water = Image.FromFile (ImagesFolder + "water.jpg"); - Wall = Image.FromFile(ImagesFolder + "wall.jpg"); Flowers = Image.FromFile(ImagesFolder + "flowers.png"); BeachBottom = Image.FromFile (ImagesFolder + "beach.png"); BeachLeft = RotateFlipImage (BeachBottom, RotateFlipType.Rotate90FlipNone); @@ -63,6 +74,19 @@ namespace WorldOfPeacecraft BeachBottomLeft = RotateFlipImage (BeachBottomRight, RotateFlipType.Rotate90FlipNone); BeachTopLeft = RotateFlipImage (BeachBottomRight, RotateFlipType.Rotate180FlipNone); BeachTopRight = RotateFlipImage (BeachBottomRight, RotateFlipType.Rotate270FlipNone); + WallBase = Image.FromFile(ImagesFolder + "wall_base.png"); + WallEdgeBotLeft = Image.FromFile (ImagesFolder + "wall_edge_botleft.png"); + WallEdgeBotRight = Image.FromFile (ImagesFolder + "wall_edge_botright.png"); + WallEdgeTopLeft = Image.FromFile (ImagesFolder + "wall_edge_topleft.png"); + WallEdgeTopRight = Image.FromFile (ImagesFolder + "wall_edge_topright.png"); + WallCornerBotLeft = Image.FromFile (ImagesFolder + "wall_corner_botleft.png"); + WallCornerBotRight = Image.FromFile (ImagesFolder + "wall_corner_botright.png"); + WallCornerTopLeft = Image.FromFile (ImagesFolder + "wall_corner_topleft.png"); + WallCornerTopRight = Image.FromFile (ImagesFolder + "wall_corner_topright.png"); + WallInnerBotLeft = Image.FromFile (ImagesFolder + "wall_inner_botleft.png"); + WallInnerBotRight = Image.FromFile (ImagesFolder + "wall_inner_botright.png"); + WallInnerTopLeft = Image.FromFile (ImagesFolder + "wall_inner_topleft.png"); + WallInnerTopRight = Image.FromFile (ImagesFolder + "wall_inner_topright.png"); } private Image RotateFlipImage(Image image, RotateFlipType type) @@ -140,27 +164,42 @@ namespace WorldOfPeacecraft ITile tile = map [locx, locy]; int x = locx * TileSize; int y = locy * TileSize; - Image image = null; - if (tile.IsWater ()) { + if (tile.IsWall ()) { + PaintImage(g, x, y, WallBase); + ITile top = GetTile(locx, locy - 1, map); + ITile topright = GetTile(locx + 1, locy - 1, map); + ITile right = GetTile(locx + 1, locy, map); + ITile botright = GetTile(locx + 1, locy + 1, map); + ITile bot = GetTile(locx, locy + 1, map); + ITile botleft = GetTile(locx - 1, locy + 1, map); + ITile left = GetTile(locx - 1, locy, map); + ITile topleft = GetTile(locx - 1, locy - 1, map); + int offset = TileSize - 12; + DrawWallEdge(g, CountWater (left, topleft, top), x, y, 0, 0, WallEdgeTopLeft, WallCornerTopLeft); + DrawWallEdge(g, CountWater (top, topright, right), x, y, offset, 0, WallEdgeTopRight, WallCornerTopRight); + DrawWallEdge(g, CountWater (right, botright, bot), x, y, offset, offset, WallEdgeBotRight, WallCornerBotRight); + DrawWallEdge(g, CountWater (bot, botleft, left), x, y, 0, offset, WallEdgeBotLeft, WallCornerBotLeft); + } else if (tile.IsWater ()) { PaintImage(g, x, y, Water); - } else if (tile.IsWall ()) { - PaintImage (g, x, y, Wall); - } else { + PaintWallInnerEdge(g, locx, locy, x, y, map); + } + else { PaintImage (g, x, y, Walkable); + PaintWallInnerEdge(g, locx, locy, x, y, map); bool beachPlaced = false; - if (locx > 0 && map[locx - 1,locy].IsWater()) { + if (NullsafeIsWater(locx - 1, locy, map)) { PaintImage(g, x, y, BeachLeft); beachPlaced = true; } - if (locx < map.GetLength(0) - 1 && map[locx + 1,locy].IsWater()) { + if (NullsafeIsWater(locx + 1, locy, map)) { PaintImage (g, x, y, BeachRight); beachPlaced = true; } - if (locy > 0 && map[locx, locy - 1].IsWater()) { + if (NullsafeIsWater(locx, locy - 1, map)) { PaintImage (g, x, y, BeachTop); beachPlaced = true; } - if (locy < map.GetLength(1) - 1 && map[locx, locy + 1].IsWater()) { + if (NullsafeIsWater(locx, locy + 1, map)) { PaintImage (g, x, y, BeachBottom); beachPlaced = true; } @@ -193,16 +232,16 @@ namespace WorldOfPeacecraft } if (tile.IsForest ()) { PaintImage (g, x, y, Forest); - if (locx > 0 && map[locx - 1,locy].IsForest()) { + if (NullsafeIsForrest(locx - 1, locy, map)) { PaintImage(g, x, y, ForestLeft); } - if (locx < map.GetLength(0) - 1 && map[locx + 1,locy].IsForest()) { + if (NullsafeIsForrest(locx + 1, locy, map)) { PaintImage (g, x, y, ForestRight); } - if (locy > 0 && map[locx, locy - 1].IsForest()) { + if (NullsafeIsForrest(locx, locy - 1, map)) { PaintImage (g, x, y, ForestTop); } - if (locy < map.GetLength(1) - 1 && map[locx, locy + 1].IsForest()) { + if (NullsafeIsForrest(locx, locy + 1, map)) { PaintImage (g, x, y, ForestBottom); } } else if (tile.IsWalkable()) { @@ -219,6 +258,90 @@ namespace WorldOfPeacecraft } } + private void PaintWallInnerEdge (Graphics g, int locx, int locy, int x, int y, ITile[,] map) + { + bool topWall = NullsafeIsWall (locx, locy - 1, map); + bool rightWall = NullsafeIsWall (locx + 1, locy, map); + bool botWall = NullsafeIsWall (locx, locy + 1, map); + bool leftWall = NullsafeIsWall (locx - 1, locy, map); + if (leftWall) { + if (topWall) + PaintImage (g, x, y, WallInnerTopLeft); + if (botWall) + PaintImage (g, x, y, WallInnerBotLeft); + } + if (rightWall) { + if (topWall) + PaintImage (g, x, y, WallInnerTopRight); + if (botWall) + PaintImage (g, x, y, WallInnerBotRight); + } + } + + private void DrawWallEdge (Graphics g, int water, int x, int y, int offsetx, int offsety, Image edgeImage, Image cornerImage) + { + if (water == -1) + PaintImage (g, x, y, edgeImage); + else { + Rectangle src = new Rectangle(0 + offsetx, 0 + offsety, 12, 12); + Rectangle dst = new Rectangle(x + offsetx, y + offsety, 12, 12); + if (water == 3) { + g.DrawImage(Water, dst, src, GraphicsUnit.Pixel); + PaintImage(g, x, y, cornerImage); + } + else if (water == 0) { + g.DrawImage(Walkable, dst, src, GraphicsUnit.Pixel); + PaintImage(g, x, y, cornerImage); + } + else + PaintImage (g, x, y, edgeImage); + } + } + + private static int CountWater (params ITile[] tiles) + { + int water = 0; + foreach (ITile tile in tiles) { + if (tile.IsWall()) + return -1; + if (tile.IsWater()) + water++; + } + return water; + } + + private bool NullsafeIsWater (int x, int y, ITile[,] map) + { + ITile tile = GetTile (x, y, map); + if (tile == null) + return false; + return tile.IsWater(); + } + + private bool NullsafeIsWall (int x, int y, ITile[,] map) + { + ITile tile = GetTile (x, y, map); + if (tile == null) + return true; + return tile.IsWall(); + } + + private bool NullsafeIsForrest (int x, int y, ITile[,] map) + { + ITile tile = GetTile (x, y, map); + if (tile == null) + return false; + return tile.IsForest(); + } + + private static ITile GetTile (int x, int y, ITile[,] map) + { + if (x >= 0 && x < map.GetLength (0) && y >= 0 && y < map.GetLength (1)) { + return map[x,y]; + } + return Dummytile.GetInstance(); + } + public void PaintEntities (Graphics g) { IEnumerable dragons = Backend.GetDragons (); diff --git a/textures/wall.jpg b/textures/wall.jpg deleted file mode 100644 index c33c1c0f764f50b37411af551378f5b5d86756f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6711 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 diff --git a/textures/wall.xcf b/textures/wall.xcf new file mode 100644 index 0000000000000000000000000000000000000000..fbda3a96277737244b6dd88eed0563b5c70f9f5b GIT binary patch literal 22647 zcmYe#%q>u;NKR8o%gjk-U|?WSfMO6^kb!}Lk&%IcL70Jofx~G60|N*%FffQPFfgz% zFfi~iFffQg*&ubI3=FdW85kJ&vIw=t0|SG)00WeEOvz75RS3w)FUc>?$S+WE4mMNJ@J&q4%mWE% zG8h>cnphc_S{Ya<7#dm`8CaQ`F)*-BU|?Ver5*z#Bf|wSwxNN+0!E0t{{LrSSil6g zUts|=f(;5Z1~x`e$TKi7GO!{0lCc8eOU4FdUotVmOknI_f}1Sh1vZU=!2=pfVEX@! z|BrYgJe{561A_eBJbhfjd4b2nCo?afNq~VNH?O29$lXaHA~H&W{Tu@m11AF;gCPS$ zVsdeTZ?Ibk$V^XHXNBS*cP9`ViWwOgzFlJgg(t&hU5@|-P=|g1q=-QEes6X&LjCp43u6nN=gc>^!3Zj%k?r-ll4FW3b%-$0=P=t z3?%#XK=#4IPQfKLEwMDGL;;kllk;=(ON$hW3lfu46?D-PG1(fCoQ32LouJgT)S}e9 z19QwgP?-RaHy_S022jommwygP_aGC%DFe(v5KR3H3=B-gnd#v4;~W&CkX%|+ z29XD4O9oa3E(U%E5e7*HIR<404F+8XBL;H@YX%1fR|YQze})i-NQO9uWQGieT!tcs za)ug)Mus+qZiWdAQyFG4%x74_u##aN!zPC940{+3G8|(#&2WL?D#LAt2MkXcUNd}P z_{Q*?k&%&|k(W`JQIb)fQI%1f(TLH4(T>rT(T6dJF_JNXF`Y4wv6Qifv6-=(aT4P! z#)XV488SLP0w1{a9(>A7qOsAQyGCg2=&GeO-ftj0Gj9HOcm)U~Znc1H?iaCwBh`Elr zi+LLJBIb3>yO@tNUuJ&5{D%1_3mc0tivo)-i#3Y}ODIb+OCd`gOApH|mK7}9SdOq< zW_if+f#n}7FRKizHmen@Cu;<2I%_#=8|yUIWvp9SkFs86eaiZcjg3u=O`Xl0&4VqH zEsL$1t%q$c+j_PGY!}%cvwdY}XP0ExX18VcXHR4=VQ*uf$-ahtKl>&2r|dsCxH;rG zj5yplqB!z6nmDF$tm4?maf#zO$8SynPE}4TPJhl6&PvXH&Ly0?IL~uF<^0Vh$feF@ z%N4?v#ns3)gKHhvQLZ~&pSiiYmAEar1GzJ~8@Ok1Z{R+`{gC@7j}VU*k26mUPbp6y z&vKpvJU4kh^YZel@jCEE@s{xR@vh`O%zKab2cIyX9-k*)3ST|nY`$%Lm-ycCbMmY5 zJMzczSMg8d-^_oW|BV2rfSQ1_K%zjMz-)n?0@nq;3JMDv3i=D?3ib%D5RTON5UKKNVpUQ5W$P$r9-nSu1i*M%#F)j@#5~1v#QMcHiCq)>B`z!OD4r_bDZWnplK6KCX$c33REaK$^%7Sl zen~1wx=LnCPL$j(c~^=>N=qtGs$6QG)KRH7(jwB<(#g_Y(wn4j$uP-i$ppz%%Pf{T zBlA^OPS#zvKz63=Vc9owVsZ|0S#ne4_Q}1J7nZk^&y=4czhC~9f~bO{LXN@=g(C_d z6lD}W6iXEsDxOpPt)#9Ls??;kUg@qfm$HR&n(`FoL&_giJsXn>Q(Bi)$eHVYS?QOYAn*YqRFOdp_#2YSM!1vla{Gg zhSqGY^V&?>X4;wBbG0w(u!@3%yIS|5o|vAGUX$K-y?6R5`ce85 z^^fcSGcYyCF<4@7+fc~R%dp9Cm*FQPEu&y399e>BlHNi~^ga>G>E z)Yr7#^pNRaGjp>dvvp=K%~i}3%;%V2w-B)iu;{TkVaaOgWLa;y$MUC@nN^9^Cad?> zy4Km&tE^wxsN1C4EU|fPt7MyKyU_N5oq}D0-2%G@_KNn2_KWNvIVd}%I4pB`?x^XQ z<+#T2os)r6k<(VE@6J}vway1zm|fgmx?Ik=3b}^5&T_ryrsS6Hw%YB3yQzD%`vDJD z4{wi&9@jl(J(E3GdVcUS_p0?e;?3h7>^;l-k&l*7kY&w)->q zd-_lIzZ;+)P#CZ~kS#DEaCYFcAj6=VpyR>9!STVXg1?10h4hEq4%G-P4Luab9~Kj~ zGVFV}OZcSl2NC)awGpQyr6MyUcSNyAg+(ok`Wo#TJvI7ijA=|;%(Ync*oxSbaZ+(P zaeL$W;}hdIC$J`jC#*{NljxtgDDi8OXVRRc56RBS)01DPIHXKTd6{aPIw|#enr+&o zv=`~N>66o6X4q#;%XpLNoH;A=W0ptO{H*WU{@Kg3|L26~tk31hO~~DuCzO|+cO+jf zzasx)fp$S#!Gl7p!l{KHioA=K6*Csc7Vjt#DJdv9Q>szgTKcfeu55PMkMgkc%@u+b zc@<|WwJJL+pI5n6Ev;s$POd&wqgc~e^RU*jc3~Z3T~ghldgc0-`lk)<4J#VC8nYYE zHW@TcYWmU~-n^?twxyxvajSdl>NdW%qPFYp*6s5RSsy)%0M_oeln>o@D4H-T+J-h^ut?I*67Bsi&R(&Nd#lebM#n9?=n%hdR( zC#RWAn?Idvdg=5BGkj+3n5i;z!puLjGG<+!?KFG+9GN+tbH2|_nR{uT!@PC#W#@O# z|Fs}B?nN%et5SU7ol6!HS?2M^>7zT)9eS zRsU+H)upRnu8CQ5VXe#B9qV-0EnF|QzIy}1hSCkMHYRMmw#j?bq0JVX*KJYVGH0vs z)~;=g+bXwx*q*Wd!H&os7k7H?JhaPt*Vf&7yO-}#+%tQx=-&Q)T>Dz~{oh};|LcK* z18)wdAAEc${?P5i5r?lF2|RM{sQ1wm$J~w`KJIvY{|Va@drn%N+DjI4%+75)Z+?Eq1vtL)bA+YNVE?{wW2xI68h%)LeTHSe!~VD@0|LzjnV9tA(T{W$sY>nFue z{yc4Y#`|pAbNS~hUl_gE^V03*g;&w9p1v-4{rgSZTfw(;-f6ts^4{V7nGX>ko_;L) z`2SPSXUWgYznFYE^fln?y>GeSet+-!A^Bs)Pm7<&e}(^g{=57S`=1$qHUIAV=l$=_ z|J?uo|G#D60r#2WoqZXY{=Z}31M?VC8bGa$|F;=h7G-Fo!u)30G^Wo^@zZ98`D**A0d@bvQb>C3ktzyAEYAOjNjc}I0hybDhab1HBJ-(x!_>X#Sg|RNe_#fCOHR-CKsE0RAmD>fL+b>&?T42 zA&bRRTtm%DQXj#cfZGM?2q*l%#lXW1wo{P7p5gXyyT7*?MK^ws;9Mhc@7~<%Rlnl* zwZ`VJshttLZQAB)v;DQlv*+&I79W4P`px}c<{GnqS-UUoi*?=f{J`D4M>1Z^M#sEg z`ujh_*CRi^J>9nLSGnEh;yJ%%ZarHz!CX2nH+#)@)AnVXt-LPQA9U>2gGbNi%D*qnzqtL6P;bt$I_KNHz83En9ZW3k<0*N2>)G~ce?_fo z!^M&U&U={be4`#Q@m1Bi@@?ncPRsviSoEJ^j`KGIqe;>)^KNBlHza%7y_xTQdFS_E z(`xwx?=6zLw`||))m}`0vKRlqaGTw5nnl>D=9Sr6UlSi5v48P*+4c8j-~aMQ-aB&U z@WyRYn{*`o*DidM?3gW`P}!cF{GZ|Ax$~Fy3Z6f{ZMEwev;CMeowd_aD;Wo@96AR$vqt1y{3D%oxN>8W#iddR)tm#6O#kwH~*}f zU^{cCUzyMK;0Ig6w|;O?*TBRz z;GCL~=}}db8eHWUl3bOYY?-2NZ^va*VO5b^05VpgA~z?m*s8)-JrOicWtCTK1rpX* zx8t%YN=dT{a&dzyDN0GRRY&T8mmBNl7p3bPT3TA_8yM*u8R-_Kr0Et{=9MH?=;jqG ztJ`sLDS*vzNi9w;$}9l)SfSSC7Wn$YP0K6R16!__oS&;-kyxN_sAr&`n+tM-f`Uy2 zNUfD;UU5lcUUI6Zi(N%-fnH{2ij||Iv74iXk%@t`k%5_op`nG5k)xZ5p{t>>tEHil zv73!PhE^`PdHzM2>6v+nIWGChrManjC7v#JhK^=#mS&~~7ABUKrcO@I7S1lFhHj>g zZZ4(_n|yk$RSkQfTfWV2A;%{k_=BN1*Jtf;8d5Ate={b3W~U5eM3D%Xi`Z@ zwo1z{%1tb>1D7WHprLjfeS|2N0x9+uz=mw$)}tg;xHLGqs)KxO0~fP$&dlw{bMm>SsVqYHu@j}Y@o%}X!Iurme)5r!ySsZ(Z2aX@NO zaAIyjPO6=SjsgfljYgG&YXMIeH1{mWfw#BBTK?{KpY8jZa`*5Y7Qv%f<1;V4%ZM7lvz14rmiIP)%?pa7~~Q_@dO};>`R!JFfs&cLneK+ybZoR1>lixIW}CGB<*% zL>7drL=GOfN@PK}O0p z=);>;c3g;tS!!O2t$Got*#&CRL9kpI1A|U91B2-z1_s-31_tkLh&Y%84U2;?sQ)Mu zo|u!9oL`ieT2vgLUs_U}nF5}RW&*2Z08Q?Jr|m#f%N(EyLr^D~fq{V&$_6QuL1J?u zvAL1hpeZWw*gFFQ122*|KX|$oWC{d>CnX_F_*6G&@)as1Zv|z5+z-Mm3=HyqsABSQ zApW!eAMZ|G`v2dfH(#HgeD&}DxjWZa&piD3|NjI3nf^C0oZQs(_}~Axw|1RdvhMV* zzkmKbTCsN7-WS*3{rK|p$BExRj!xY5_ut=ttNUJ@|MYD2wU1BETtBHj|b`Luaf@BHpb^N(EGdtl4?XD^;VytMc9fwO04^*v?b~A^>F15J|E4|s_y6zTH^(2{UA^tw&&?P9K0I{(!L=Vh-abBj^7Y66|8D*L z`|mH~-v&mdcN?y(KKbwW|NoD_9ozo@#f$$JcP)AN_4og6A3yy6|L)D7JzIDF`TqaU z|LwK^ejd2|_14O1PyRkT{p$J2@6Vq+zIl7r@`GEhzx(*}|NL41etf!m?DWRx|2{oA z`+mXEd$(`gxpQFMqo-%)Pn_paUgbp6olb2qQQJ+k$~u9fHi zT|2pS`p>`5KfjpwYHHobH+TL&?Y;Z{@8_47@BMqe@YvO-zdmfbwfo75)7Q`4JFxof z^V_>-Z~g!H;N_d=pM1P?>GtPO2lJo(y)kj+z1h=WfBw1X+=n~sX763M^YrlrCsy?@ zpSkqLlIDNgcbw__d-}$opWpsG`10$~;o@s2cI3v*xwCWT^FROpK7O=q`~UB|_x}I) z|Kay%^A9}S{t-3OUv6r8jGinoA{{MJphr4-qCk&y^hALk>F9|9J<`z=1xBQ!B?|Ny zM~V#U$;EJb?4;%8M7D7+PHq{)cJ?z%~+c^ zXW5K7t0zv}c)Fo%*^<%;Yo|5$ub6*y-}YsbXD*+;qql4I($#Ai*EBHk&1_#)-?Vt; z{(1cy%lc1GT(EEIq^e0fHf$+e(l=vX*R+N8lY1|mIJE6tlmFH&Qzy)uRaScV=K9w5 z#`3)r`zLg@Wi+?9t~zmG-QKc-wWqgDZ|$hxcmD9$|;z2W?y;t^1jN<JiBXYhNnx&; zZNXt>-YJ=WQQ6*+B~#rD6a8HR65Tv}O0&8PE24Z7lf9a39kb&z^Rm*sf{T4@!eYw< z-LmxJr@Muh_(TMGRA*M1r8@d}*t!KdhDS`FT3IpKM!g{3-zPB2)V^(JH)9mD=hE%)Ku)_3`@~R0%k->R6 zHOc@GK9PZbJ~qLy-S1X+be+1O09j?ObmHg}uR8Drs;m=PV~k>q0`u500$oD!8D-x6Dz5L6$o zW;%6Nik)$Yxrvoo2YP&?rw8=-Mo$mu@r|Ay(Bm6DJ)p-odU`;QZ}jwl9^dHc0X@Fa z(*t^Zqo)V-_(o3;=<$u79?;_(Jw2euH+p(Nk8kw!fF9rI=>a{y(bEI_|KF#o9V8jp z7=BASRG<3K^Z)NQ2L?WdzYg2}bN>IA&LG6_Fa1B;|Gys{7(^KUI(+=k^8cR$gBZg< zhyTnVc?pm_fkBGlkHh~{3^ELVPgR4+Y6lSMAju%Z@K2JVp5Z@; zl41BO2@!{=0jd9U3atCL!~g#v)BbJy&j`1H8Ez{Jl3Un7@?aNoBDtFf%};Eg&YA*r zF)^rAI#=yX!D+^`7e89rMpbJ}E z2o=+H1gZIq+?HoxWB3K@-hDvp+%d2*Jjd0s1Igj))Pdx1b?88HxH@wnIb0n%1~!Iw z*gA2)L9KO=MqJ%DkQ}bA8%PdUw+$qRtINi~#(>gY1EuZpgLA_Sw4hmQ!QjZn6a{`h>?yVwsOc>Z081KA9^i+{M zB_Mssy;S552}tfTQV$imGXj!B?wulcL_l)LJyYaP2m>3#7vx^)=Oakn50FM&T@R2P zu5JfN4p)~0B!{cJ0g}Vj)d0!i>SllvDz+}hZ%}Izq!Cx=0wjm4V*!%G)u{l<;p$L; z5-M_M0+LXXo75oP$UQ9N<}^qSxp#%!lm^Km_pFec(V&D1>Q%i4c^TBFLT*5VG$Qw> zkQ>h+Ipn?+a>E%Uhun`sZZw1Bko!=`4Q7xWa{mdru?&(!?mHnjltFUH{U+o_GAN-U z_nAH;H-|tPaW#!Wa=4nsAURx3VvroJ<}gSOS5p`yhpQP3lEc*m2Fc-S{(|IiHGM&H zxSG8nIb2O%P&!3!?n2Tja-$EV8@U63+~5PrAvgY!8+#x*=p#4mKyt{9eB?$QNDjGykKCXG$ssrHksEU$Ipl^tazhT3 zOpzP)-2d4b#7V&1|LYkU7)aLzZ9;(>9iV0uC#V^flvq4yT1}vxMWBWd0|SFuFq8pu zEC{nOFqoyIikX#z_}mQNVZ-4JVhrD51K%JvY>*qoh7D+g*s#HC5F0j74PwIvr9o^^ zJr1hmL2TGaGl&fvRR*zPBgh~&Y_ynxi=ly`3w=lsxrV0qIC0Maj1n_&F?<4b6At-b}W5b|5F0eO3mWMIu|Wg5piw;# z8#HJO8o>jxK?Ag)(K-+t6po;92C+c{ub@#l5F0ee3L0?(u|Wf>pwTr*I)M$Ofn;EV zW*|0ffDFWj4Tgc(uz@cS8#c%VV#5ZsKy29H6^IQRr~#;K2pV1jg$`)w5HyqoVuOYWLBmEMHfTr?G(-eqgNFY=!$BZ6Xs8b~ z^aEmphV?+hJRmk`2oE%*17d^15fsiKHfU%LG*km(gNETi!!jT?XvhsT1OrYd?El3X zh{xOv^^6Svxk=CgG95JM4Bkl#sslllwlJvDhD~ro#y&u`;9wZ^fX#<9FfiB&fgFX@ z-e6&1uv0@7voiznN9VOcbs(tT8=cqw4_(YKIc! z;lVZh3F`#m8UlrNjBpKu!a7U1hC*Q-C|tv#uuc{7kSIIDZ_}3j&p`9q&-S;NGVn0` z_1yoT=|4LI^Z&p5JsCI|{>}K$@}Hf7_5Z&a3~UU4`S$;3{m;(8_W$pGJ_Z(sfBXNl z{by%j|Nn1412af1`+s%@4v<<#hJT*_IsUUVaQ^@8$-uB5%Ko#T!Sp}pe|840|9?$e zV62w?FxLKOP}aX^;6dNkQoAX!jPZ6K$|VXLtj7#MtPK#oG{DKaxK z_<)W@0SSXTy$TErJ_#VsXisspr#QL-8oVqXd4U0J*c^HIV6>+=x&nH11@!0&=yT|U z1L%VX=z|03g9qq?1L%VX=z|03g9pfqI$(1zxE6N6=3{Uz?tsnFATRJ3?J17-6i0iC UC@bDUQ(m|h$iSw-hEq=w0DUI5Qvd(} literal 0 HcmV?d00001 diff --git a/textures/wall_base.png b/textures/wall_base.png new file mode 100644 index 0000000000000000000000000000000000000000..5087413fb017b3402a7c735649687b87ea181544 GIT binary patch literal 1592 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|VB`j-fb^lW$l%g*miWTP19jtXCaFp@?jUu9y~4N+<4F7 zV)2V2e(||dg{HnSR)-daS@U!3nseg|*P^S3*UlD>`M~ieZBvQ6f1>95GP#0(yX6&m zjtJff{BUf?{@@4Z_m^ypOi{Zh@%oS8H47(WsT;3cmpo>(3|*G5!SdB8?f=Yk%yr*? zSKm!zfb%5;av8Y*nM8! z8Xtddw=8LI4qmA;*}FaGd6~p!nTz#LYu&1qYix~Mokcpo@+~%zn!?-p=bz%yH0GCI zyHD<3l$lg&z4D5b&f4?|wra-One*0)uIS{_|HPj2EPF?GYMe+{hMl_k`nZRu?f*;@ z_EenOv++mCOljfR8LcMDVeA*p^A(@2_YSG4w`6n*U3XKe_{tHT+ITxXr-c2EN3T_9XZg*u>ox@6JIJG+u>Z)B z8S{;|3)%d6G{2)vfBL=ucFXjXLa&{WN#(dY>%>Ne`Z;lFC)OFKOb_Ib`twO$K4D_5 z;GSi3b62)+Zt4!4eeUSy#XHv3IMlpkob3I%MV0l6m_>7k9{=X}^9JD?KRvd7eB{{q z;8SmlA8>4ZW!vn3A@QT(9J%z}JGw7lJD_1^SRK=IudaJxtK_ajp1+tg(>BlcSpW4@ zxo=cV)pIM`I(z3TsoC~^j}@4oDkr)1yUq}s zDMe2O;u8hEEj)uK%$R>)sdUq+<*&K!o!uXtW}sY-B3&GUt_V&pEu`o z@>l+Oplp5UYv7~U*cDZC*DjADxY<7o0sp_Fn`UGqr^TlSLEmc zSve&^`6J5NB4*zwyz#rT%hBYbf4{WL?Cx#Me=aV!H`;Gp)pzO^PxK_my3*;hGE<`` z?~wd%^k?&VtJ|EmUEIxLmJ2)Mrk{A4-7`lzP3M(L*ve8n-t4HkL1oQxdyoBi5Lx$Q z@AjGZERN`y9n5-PBi15aZShC=M44n%>5X6F?~mvl*~7JLS(#kI+wKiEwnrNxT(A4h z(7mrMahI{dYZt=XjO>w;t?4|nh+eVhC45AUD9AB`{F zR9YEq%k#ZmGtc&^la5#E{Ux_nmB|^rDOvC<(R}my!^ewNa;-jpKF?VpnzHa(r9*u_ z!_7?9+MLJ!{aka7h|XE$5xZ$&nD$(Do0*m0yym5EUcLTHXW8@p4cq4OP2rUcWnf@n N@O1TaS?83{1OR=A|8@WX literal 0 HcmV?d00001 diff --git a/textures/wall_corner_botleft.png b/textures/wall_corner_botleft.png new file mode 100644 index 0000000000000000000000000000000000000000..50c2e7d796432f2bcc1490a63a50d656b52df869 GIT binary patch literal 608 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S$gr;B4q#NoG>&U;U0lsW$K`(rutyLWCBy=#x!WEr(fN3!%J$4fH~cL5i7{-}1o zxqDno)_S{4a1@a3<}2m$mlPD8q2w7R{p?HOvNP%X=iC1Nm@{`*N!_)j&%cWA`B`V5 zU?9Q6)_gGG$9+z3|Mkn?@^#x!p0uHyE28SJ%C<`xrx>%g9f~+{eB#DrjnJ9$t6$HV z8!hsMN8tLBzwguidVj4}Ys^~PW;^}p+f9!?%?!9Arni1>R@wATL5EUbU-`=<`*_=} z-w%Vj5-0aW1PN$M)|8pgdX}OhbToCl<8<~wfr+!l{xbVnwS>Q1EBlMhspF{0{uikk z7AF=uO^Qk44)XKDp2GXX38vcUzVR^`)~j3v-{o{qQCG{9j*re(=6!JMQ8d_dSq- Pfq}u()z4*}Q$iB};)xH# literal 0 HcmV?d00001 diff --git a/textures/wall_corner_botright.png b/textures/wall_corner_botright.png new file mode 100644 index 0000000000000000000000000000000000000000..b6203c5a48c34c89820904ef57b98da0a823d0c1 GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|OJ2r;B4q#NoFS&t_j{kZ7N;lDo?+_V&eB*TP(`*J^h7upFFx${`@}jsAya)|Hdy zvQ-N62fwN>EkzN>8fj)TgwiSDo6BzBYF_2FXP@s8 zvrcZsH3ti&jw!yL)t3>~GDlWs=YEL~e^^iIa5x@VrawD%%gRrWYG*5+W(`-941H0^ zBV&22H#@oVJafxm-YDMYJQE+M&P_qKDl=X!-4vUc^~y?ibN7WXLB2ap1wS26eimO* z)nF@>pe-X=l{LWnF4>gS1B5sGA)|z>0ay<_=nv@-E z>?$UH{X+acRUOaI+vUW>|9LvZzmt(arRAn{VCp{w@6}qf-Wn9SJbczFT(hQ}Yx#Sd zx&K~P%LT06exl`3%p8ejaW@x<2}t&BpSU?PtAyKG`Q^#@+VjjgrM#Ax66-hjB&tiC zKh>f;xAC$2^J?|9<@Mif`71UDrs;^MuHNFAYJbMTD)_?w%;N3oY2yE$RLgz%(;d0l s_2uQI7kv!hrF;s1Z>RV7?0?3e6(@Hjdw#sfz`(%Z>FVdQ&MBb@0HF2|uK)l5 literal 0 HcmV?d00001 diff --git a/textures/wall_corner_topleft.png b/textures/wall_corner_topleft.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8d750d413f38109201d09ca45d24400581a370 GIT binary patch literal 577 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|Vn{PZ!6Kh{JC$?#&i1lsW$K`_qSd(~Ui|{V%JCM*W@;IOSTCtj(6Lh0ZUZXfy@H zh)n;bZehuJ$^Jkfm*7hsz93dzi;yiBRrY2F&FG_vQ#iao;>u&GeroaE`+2`sX zgqS1netpkUWK+)&08#g`wCyNh3{nlrDg|%8NYq44GWugCqBW2N3Xk6CCt=)vF?Ks zrY#bO(o1jt$Pw^V^)So2!p^k&{a=y?(=6PTdhAozH{{P j#|j&{{^O4eujjwx+u8Hb__qrK0|SGntDnm{r-UW|^jiz{ literal 0 HcmV?d00001 diff --git a/textures/wall_corner_topright.png b/textures/wall_corner_topright.png new file mode 100644 index 0000000000000000000000000000000000000000..d52dd56ed26b9759d0386ae150df8e1b200289db GIT binary patch literal 589 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|VoKPZ!6Kh{JC$@AeO7lxX|7{O!xuIKQflm8_G@t~ngcO6urRo8>U)l*8lrg9(o^ z6!`Rx9XxxGWl?kUIPp@5%WWzU{D@v187zin`C{HkFh4 zL%yZe{c8X7{y$zo+MXhRXqL$e2Z87usb^c9maM^qK`58UKIW;HVea^7$ykk14 z?8mcd>*8aoe}7r_itJ94YWH3Ba_-Jk%`*%9nKteCFrVW>yl=q0x^_wCl~2^SeTpqJR@<|dC+uW* z>4Eyi>iH6T!tF(?^c`*=o7}6`d~ouf|GQ4FZGU~`TXDx*D>cib y9{V{X*KOJ}D6sb06m7yo>(V?6!)z+0&Uv4#u`3=E#GelF{r5}E+~_Z%(& literal 0 HcmV?d00001 diff --git a/textures/wall_edge_botleft.png b/textures/wall_edge_botleft.png new file mode 100644 index 0000000000000000000000000000000000000000..17ac62e68588a2b592258b8883e61c70eaa5a933 GIT binary patch literal 635 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S$;r;B4q#NoG>Px}cc%Cvo4KKCWhQl1OO3p$=I*v1>tBBAW!?BnCX)7I-|ey<^W z`@QzU$6}8!ojBES>JW#}B(1;+Mq9T$HPO9XW)-aQRW0rLpLGvT{{C-QU?IcTe)wU* zpZ77V^XF}!;x|*-wEa<`B761CQ_nJ`j?Y+XwfL}YjMUz?#LPeUZlwG=I_dN|2E)15 z55A=^c^4#_N@+Y5QmnWBC&zd==V8BA#8M{H#a;KGZ>(iBe41?#5;~EUck3IsC5}7H z`vTVs`X4)RDtL3skzJi-dbi~s?7R0;Y5ra1nna0>la_l-Xk6&X^vmq&+Rzl1BI``E z{&Ruclm0Sx?{tpSUAd)GNVxpiN3YaN+V2BJqr}O_aH4ApWD-gIJ$QEe+@XYZ;yFA}tWyzMDI(_~0 zm9lRxSEeb17JbwIpt)9c4iQvSbnn3i>BguStM%-(ng#9Ze)QbFee}s6=O|xu sr`+x}(^P}(U3W=5csuLw{s;2Mb?>g)GFAUL0|Nttr>mdKI;Vst0Dg=nivR!s literal 0 HcmV?d00001 diff --git a/textures/wall_edge_botright.png b/textures/wall_edge_botright.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e1713df84aa24c241f78cc2944b634f34a5a3f GIT binary patch literal 614 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S$Ur;B4q#NoFW@A_S4kZAw7{OvVEt7`|_a#kyzl1S(<>^O2nIoZO%%Os|;d|`VP z|2)aZsuLYI1nJ7Us*ko$$o=@pM8i|XYxUo||RdW8Gwr_f{T z!cU~f*hC(DJNZPHqPtsv)Aff@OOGUEHN1bF-7(Q$tD5B*=atec&lLa8>(yFPa4gN@ zZOKhT9hcjRPvsw;R#s7}cZ_3JF07)!ofs_?BVea^)?~0b5_hFNo&!JCQi!Lz?Szm5HjC z%?fgx&)UboDC!fn`0>q9!uq2AgC&{s@L%zT5{z6CFSh#YIz z(P@9OCn%yv09D;6EOd(voCeA;@|4;j1qA1-86Ilj!QdVbYg^D1w3ov@$mffFAs VT)s*?oq>UY!PC{xWt~$(6999RAhZAg literal 0 HcmV?d00001 diff --git a/textures/wall_edge_topleft.png b/textures/wall_edge_topleft.png new file mode 100644 index 0000000000000000000000000000000000000000..a0344d5eba58df6922ab38bb2ce374f5b9a3103d GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S%1r;B4q#NoG>^1X!_8IFH^pS%5T-t#-x!gifK^MA3E6K6}6(8`Hl6l!L$T(o`} zsjsqVo{ET|-J~uL?lUhAy3EbZ-tPOnZ|>V~*LTO}KdLI5AO7L#asLhbZ8rbUQooWj zu~&C$N5V!ktA^TAxvvS66a1a+@)qBp<^EMQV#oKG1CEPiy^JI{lEuD7?9-d5zx9SF ztC4=Zu*{bt%R9^CzHYh^B*Dd6ILkxXd4HzBUZc~`W|xb6X3OqRX?dFMbL_E1So@#t zHox1KFG*_q%y_JBnm>D~R@lU2J5RP=RM3xmtKeB%$JcLcYw1>H;-(tDaFzBs_8j?_ zUu^5DmL1KqI``wRXjcC9o0+aBuI?7uR9~^9q}f5fWbdn*1BF|CtIC>oPC4YUx%cls z=8vZ@>!`P#6z6`j)v@TT-o*tjE5!!xgmKOn;hZIV zsL7=~sV{2tUwOY7_meVRQdD#jzw>k~b@;%jb}^)D%d$_Fmy=gzH@_{fYvkQ}I-sb_ z&9Hg-LPe9JIe+ghjXRrUp8ZE-`$yi6DP5{z;qn&y9nQQzJl|tcc4W`ChP#59f(I9u zNB&v$gf#4e!v;gYLv_7Tz6*@gCTx0hV{xM6SY zlbQo(=H3=LovyK$Z(B`ghDX}^1($j{?#O=n_%~o_UeuYGkcv$P$AV+@rk{RVv@=F8 c{V%hr;nOGQJx&~AU|?YIboFyt=akR{0R3kjzW@LL literal 0 HcmV?d00001 diff --git a/textures/wall_edge_topright.png b/textures/wall_edge_topright.png new file mode 100644 index 0000000000000000000000000000000000000000..0343039c12b941fdb73c2442bcfc05f545e96566 GIT binary patch literal 618 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S$cr;B4q#NoFWPWlNmGBiA_zm>^;%cvx3nwXHlgrz#1j=e{A98s2YsAYa%_5E4! z42MU;6{d!Y7g-)1?G4fDzQxouW!sc@XWY`G;*NHEXliag>Bzyt!~A+`l_>~os(~* zdv2Sg*|$WZ`=1o^+fAPtn~Xf1bp`d_DI8PF;ED@cx!>pNzYVh{zSy_*O!xEeE9IAD zzTQ8V|3rpa*3%h!hCDxux9yX?B*2uiJ4u6Cjr+Q5U7hcvkF6U2R$0g^wExz)qMMb) zxp-0W_j@+Z#labAGiSc7J@bh3^X1|dFVEko)qT$V>MED57lZ0ESL0h6e`9A%m04BR zDfA`LTQMr)NvqnnhoyE7SM*=>s$VFXdgKhpjPw=DT2@F;i5B{&-CXspVaHnK_~;{# zOC08D98O;B@=9{m%l94?mbP~i|1UaPc+UUK8Nq-gma6uHMgnvAZdB~O)Mu9KmMR~) zdUA@I?@HN(%F5P?`wFdlOE*<7=czV%vwGHNb}_eKA3c=p@2}} z`R^HDeIC8+edK*+)47(IwJ1v_K(rk{RVwDTYH Z5ASo}rP_~@#%{aF5lUJ>SY{G%Rr>h)f z7o0!-!hQkYjgL>ZX0F}8>u`hRgQMbRY>}=TH!&7Bv@Wu6-mq`c^SL(_Uot;pP&G7T zV+>4WduRSVy=I=Y!}k>lRwYk`4}boBUP5kPdfJY{=a-MY-fLG<$})LPqt4-5v*%07 zZR#@M$j1|WM@aVT=~$p+S~lb28ExDXR!P-{`3FzlaqhGZhL+>Z};V-`}^~1 r^cPo@Jl}cTTzL7M8b4ol28R8$LHDQKE!x7sz`)??>gTe~DWM4f9T$+T literal 0 HcmV?d00001 diff --git a/textures/wall_inner_botright.png b/textures/wall_inner_botright.png new file mode 100644 index 0000000000000000000000000000000000000000..b590fbcc31cfe1cdb7e7bd92eb41989aaf35dafb GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|UcCYdNm*Bmks-K9$jOW zV*USp`urqGjnn^gRu?2Zm~JL(!2aj&$5lN)|N65XYur#1)>!&$fBgRRKk2DU_cO2a z?JE9p=1cwmx%~Gf>}vm=b-1okvCHVV$J@)#OUBjxKa!xOe$ruk(Sy(Prj=}q z=gIbaZ+ptF_O)r-1_o}n$l&Z-?FT-+QfT*=kDrojRdVw3jQ-Y#AJ6aSQPNt(Bji-X zW1a51tWK(<_|nuZ!H>hr1H`xN`yGDj|G{*(VEfK|o<&Z3c+S|@8~m9Znp*Mgi`wCO iL(VpB^EhJ$hOP%e>!vvtC^0ZFFnGH9xvXRl`K`o4!)0N=TCXC zYEiOF!Nh6p4(XFGyms}leH@olTKx8CN+iGE3hveIzJC-CR@*Fgx_|8YYhj+-E#JO1 zXQ=cFVdQ&MBb@0PcmE?EnA( literal 0 HcmV?d00001 diff --git a/textures/wall_inner_topright.png b/textures/wall_inner_topright.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf22ab156494021af5f193469300af444f8e5aa GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|O(sr;B4q#Np(W1x6Mz4>d9uEM9spSv2KrL23X0gR7_eyluT9DKR5bLSjd&q{I|c zNwf1aP8K}W)^<*65M)+n?mgJA>BlE-w|T1MY0c_?wUzT8zVUWzGoEiLVe-E|rC{6S zg?pJ39yqrK{pzuPWBkMSuf(OrZzSyQ?mc_p^Ix^UG6xPEIACCW{?fq{_cE2GnbqZm zwfPUfmR5i9nt_dttxefDN%qXvlJE6*tFk_zmi)1?o~Pa@&fs6#kKfIW z{}dUR<vjsO4v literal 0 HcmV?d00001