From eac141e01bcd2d01e3d2c9d7855273705735adbf Mon Sep 17 00:00:00 2001 From: Chris Bell Date: Sun, 17 Nov 2024 18:52:54 -0600 Subject: [PATCH] Load tiles from json --- Tiles/Game.cs | 147 ++++++++++-------- Tiles/Program.cs | 1 + Tiles/Tile.cs | 85 ++++++++-- Tiles/Tiles.csproj | 4 + Tiles/bin/Debug/net8.0/Tiles.dll | Bin 10752 -> 12800 bytes Tiles/bin/Debug/net8.0/Tiles.pdb | Bin 13092 -> 14052 bytes .../core}/tiles/images/bedrock.png | Bin .../data => data/core}/tiles/images/dirt.png | Bin .../data => data/core}/tiles/images/grass.png | Bin .../data => data/core}/tiles/images/rock.png | Bin Tiles/data/tiles/images/bedrock.png | Bin 4420 -> 0 bytes Tiles/data/tiles/images/dirt.png | Bin 674 -> 0 bytes Tiles/data/tiles/images/grass.png | Bin 654 -> 0 bytes Tiles/data/tiles/images/rock.png | Bin 678 -> 0 bytes Tiles/obj/Debug/net8.0/Tiles.AssemblyInfo.cs | 2 +- .../net8.0/Tiles.AssemblyInfoInputs.cache | 2 +- .../net8.0/Tiles.csproj.FileListAbsolute.txt | 12 +- Tiles/obj/Debug/net8.0/Tiles.dll | Bin 10752 -> 12800 bytes Tiles/obj/Debug/net8.0/Tiles.pdb | Bin 13092 -> 14052 bytes Tiles/obj/Debug/net8.0/ref/Tiles.dll | Bin 6144 -> 6144 bytes Tiles/obj/Debug/net8.0/refint/Tiles.dll | Bin 6144 -> 6144 bytes 21 files changed, 168 insertions(+), 85 deletions(-) rename Tiles/{bin/Debug/net8.0/data => data/core}/tiles/images/bedrock.png (100%) rename Tiles/{bin/Debug/net8.0/data => data/core}/tiles/images/dirt.png (100%) rename Tiles/{bin/Debug/net8.0/data => data/core}/tiles/images/grass.png (100%) rename Tiles/{bin/Debug/net8.0/data => data/core}/tiles/images/rock.png (100%) delete mode 100644 Tiles/data/tiles/images/bedrock.png delete mode 100644 Tiles/data/tiles/images/dirt.png delete mode 100644 Tiles/data/tiles/images/grass.png delete mode 100644 Tiles/data/tiles/images/rock.png diff --git a/Tiles/Game.cs b/Tiles/Game.cs index 4ce1245..02a0fee 100644 --- a/Tiles/Game.cs +++ b/Tiles/Game.cs @@ -7,13 +7,15 @@ public class Game { const int _tileSize = 8; const int _worldWidth = 2000; - const int _worldHeight = 2000; + const int _worldHeight = 1000; private int _screenWidth; private int _screenHeight; - private Dictionary _tiles = new(); - private Dictionary<(int x, int y), string> _worldGrid = new(); + + private Dictionary _tileNameToId = new(); + private Dictionary _tileIdToTile = new(); + private Dictionary<(int x, int y), int> _worldGrid = new(); private Vector2 _playerPosition; private float _playerSpeed = 2f; @@ -22,7 +24,7 @@ public class Game private Camera2D _camera; - private string _currentSelectedTile = "dirt"; + private int _currentSelectedTileId = 1; private int _currentSelectedIndex = 0; public Game(int screenWidth, int screenHeight) @@ -32,7 +34,7 @@ public class Game Raylib.InitWindow(_screenWidth, _screenHeight, "Tiles"); Raylib.SetTargetFPS(60); - _playerPosition = GetGlobalPositionFromGrid(_worldWidth/2, _worldHeight/2); + _playerPosition = GetGlobalPositionFromGrid(500, 500); _camera = new Camera2D() { @@ -44,7 +46,7 @@ public class Game SetupTiles(); - GenerateWorld(); + GenerateWorld(); while (!Raylib.WindowShouldClose()) { @@ -72,24 +74,24 @@ public class Game if (Raylib.IsKeyDown(KeyboardKey.S)) _playerPosition += new Vector2(0, 1) * _playerSpeed; if (Raylib.IsKeyDown(KeyboardKey.D)) _playerPosition += new Vector2(1, 0) * _playerSpeed; - if (Raylib.IsKeyReleased(KeyboardKey.Right)) - { - _currentSelectedIndex = (_currentSelectedIndex + 1) % _tiles.Count; - _currentSelectedTile = _tiles.Keys.ElementAt(_currentSelectedIndex); - } - if (Raylib.IsKeyReleased(KeyboardKey.Left)) - { - _currentSelectedIndex = (_currentSelectedIndex - 1 + _tiles.Count) % _tiles.Count; - _currentSelectedTile = _tiles.Keys.ElementAt(_currentSelectedIndex); - } + // if (Raylib.IsKeyReleased(KeyboardKey.Right)) + // { + // _currentSelectedIndex = (_currentSelectedIndex + 1) % _tiles.Count; + // _currentSelectedTile = _tiles.Keys.ElementAt(_currentSelectedIndex); + // } + // if (Raylib.IsKeyReleased(KeyboardKey.Left)) + // { + // _currentSelectedIndex = (_currentSelectedIndex - 1 + _tileIdToTile.Count) % _tileIdToTile.Count; + // _currentSelectedTile = _tiles.Keys.ElementAt(_currentSelectedIndex); + // } if (Raylib.IsMouseButtonDown(MouseButton.Left)) { - SetTile((int)_pointerPosition.X, (int)_pointerPosition.Y, _currentSelectedTile); + SetTile((int)_pointerPosition.X, (int)_pointerPosition.Y, _currentSelectedTileId); } if (Raylib.IsMouseButtonDown(MouseButton.Right)) { - SetTile((int)_pointerPosition.X, (int)_pointerPosition.Y, "air"); + SetTile((int)_pointerPosition.X, (int)_pointerPosition.Y, 0); } if (Raylib.IsKeyReleased(KeyboardKey.Up)) _playerSpeed += 1f; @@ -98,10 +100,31 @@ public class Game private void SetupTiles() { - _tiles.Add("dirt", new("dirt", "data/tiles/images/dirt.png")); - _tiles.Add("grass", new("grass", "data/tiles/images/grass.png")); - _tiles.Add("rock", new("rock", "data/tiles/images/rock.png")); - _tiles.Add("bedrock", new("bedrock", "data/tiles/images/bedrock.png")); + _tileNameToId.Add("air", 0); + + int index = 1; + + foreach (var path in Directory.GetFiles("data/core/tiles/", "*.json")) + { + Tile tile; + + try + { + tile = Tile.GenerateTileFromJson(path); + + if (tile == null) throw new Exception($"Couldn't load tile {path}"); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + + Console.WriteLine($"Tile {tile.Name} loaded"); + _tileIdToTile.Add(index, tile); + _tileNameToId.Add(tile.Name, index); + index++; + } } private void DrawWorld() @@ -118,9 +141,9 @@ public class Game for (int y = startY; y <= endY; y++) { (int x, int y) position = new(x, y); - if (_worldGrid.TryGetValue(position, out var tileType) && tileType != "air") + if (_worldGrid.TryGetValue(position, out var tileType) && tileType != 0) { - Raylib.DrawTexture(_tiles[tileType].Texture, x * _tileSize, y * _tileSize, Color.White); + Raylib.DrawTexture(_tileIdToTile[tileType].Texture, x * _tileSize, y * _tileSize, Color.White); } } } @@ -134,48 +157,37 @@ public class Game private void DrawPointer() { - // Get the mouse position in screen space Vector2 mousePosition = Raylib.GetMousePosition(); - - // Convert screen space to world space using the camera transformation Vector2 worldPosition = Raylib.GetScreenToWorld2D(mousePosition, _camera); - - // Calculate the pointer's grid coordinates based on the world position - Vector2 gridPosition = new Vector2( - (int)(worldPosition.X / _tileSize), - (int)(worldPosition.Y / _tileSize) - ); - - // Update _pointerPosition to reflect top-left corner of that tile - _pointerPosition = new Vector2( - gridPosition.X, - gridPosition.Y - ); - - // Draw a semi-transparent tile over the current grid tile - Raylib.DrawRectangle( - (int)_pointerPosition.X*_tileSize, - (int)_pointerPosition.Y*_tileSize, - _tileSize, - _tileSize, - new Color(255, 255, 0, 80) - ); + Vector2 gridPosition = new Vector2((int)(worldPosition.X / _tileSize), (int)(worldPosition.Y / _tileSize)); + _pointerPosition = new Vector2(gridPosition.X, gridPosition.Y); + + Raylib.DrawRectangle((int)_pointerPosition.X*_tileSize, (int)_pointerPosition.Y*_tileSize, _tileSize, _tileSize, new Color(255, 255, 0, 80)); } private void DrawDebug() { int textSize = 10; - - // Position the text relative to the camera's offset + int textPositionX = (int)(_camera.Target.X - _screenWidth / 2 / _camera.Zoom) + 10; int textPositionY = (int)(_camera.Target.Y - _screenHeight / 2 / _camera.Zoom) + 10; + + string lookingAt = ""; + if (GetTile((int)_pointerPosition.X, (int)_pointerPosition.Y) != 0) + { + lookingAt = _tileIdToTile[GetTile((int)_pointerPosition.X, (int)_pointerPosition.Y)].Name; + } + else + { + lookingAt = "air"; + } Raylib.DrawText("FPS: " + Raylib.GetFPS(), textPositionX, textPositionY, textSize, Color.White); - Raylib.DrawText(_currentSelectedTile, textPositionX, textPositionY + (textSize*2), textSize, Color.White); + Raylib.DrawText(_tileIdToTile[_currentSelectedTileId].Name, textPositionX, textPositionY + (textSize*2), textSize, Color.White); Raylib.DrawText("Coords: " + GetGridPositionFromGlobalPosition((int)_playerPosition.X, (int)_playerPosition.Y).ToString().ToUpper(), textPositionX, textPositionY + (textSize * 3), textSize, Color.White); Raylib.DrawText("Speed: " + _playerSpeed, textPositionX, textPositionY + (textSize*4), textSize, Color.White); - Raylib.DrawText("Pointer: " + _pointerPosition, textPositionX, textPositionY + (textSize*5), textSize, Color.White); + Raylib.DrawText("Pointer: " + _pointerPosition + " " + lookingAt, textPositionX, textPositionY + (textSize*5), textSize, Color.White); } private void GenerateWorld() @@ -192,17 +204,22 @@ public class Game for (int y = 0; y < totalHeight; y++) { string tileType; - - if (y < airHeight) - tileType = "air"; - else if (y < airHeight + grassHeight) + + if (y >= airHeight && y < airHeight + grassHeight) + { tileType = "grass"; - else if (y < airHeight + grassHeight + dirtHeight) + SetTile(x, y, _tileNameToId[tileType]); + } + else if (y >= airHeight + grassHeight && y < airHeight + grassHeight + dirtHeight) + { tileType = "dirt"; - else + SetTile(x, y, _tileNameToId[tileType]); + } + else if (y >= airHeight + grassHeight + dirtHeight) + { tileType = "rock"; - - SetTile(x, y, tileType); + SetTile(x, y, _tileNameToId[tileType]); + } } } } @@ -220,9 +237,15 @@ public class Game return new Vector2(0, 0); } - private void SetTile(int x, int y, string tileType) + private void SetTile(int x, int y, int id) { - _worldGrid[(x,y)] = tileType; + _worldGrid[(x, y)] = id; + } + + private int GetTile(int x, int y) + { + if (_worldGrid.ContainsKey((x,y))) return _worldGrid[(x,y)]; + return 0; } private Vector2 GetGlobalPositionFromGrid(int x, int y) diff --git a/Tiles/Program.cs b/Tiles/Program.cs index 8eb5900..c03e2cf 100644 --- a/Tiles/Program.cs +++ b/Tiles/Program.cs @@ -1,5 +1,6 @@ // Entry point +using System.Reflection.PortableExecutable; using Tiles; Game game = new(1920, 1080); \ No newline at end of file diff --git a/Tiles/Tile.cs b/Tiles/Tile.cs index c8ee61f..a436340 100644 --- a/Tiles/Tile.cs +++ b/Tiles/Tile.cs @@ -1,30 +1,64 @@ +using System.Text.Json; +using Newtonsoft.Json; using Raylib_cs; +using JsonSerializer = System.Text.Json.JsonSerializer; namespace Tiles; public class Tile { - public string Name { get; private set; } = string.Empty; + public string Name { get; private set; } + public string ImagePath { get; private set; } public Image Image { get; private set; } public Texture2D Texture { get; private set; } public bool Transparent { get; private set; } - // public static Tile GenerateTileFromJson() - // { - // - // } - // - // public static void GenerateTileJson() - // { - // - // } - - public Tile(string name, string pathToImage, bool transparent = false) + private static JsonSerializerOptions _jsonSerializerOptions = new() { - Name = name; - Image = LoadImage(pathToImage); - Texture = LoadTexture(Image); - Transparent = transparent; + WriteIndented = true + }; + + public static Tile GenerateTileFromJson(string jsonPath) + { + try + { + var json = File.ReadAllText(jsonPath); + var tileData = JsonSerializer.Deserialize(json); + + if (tileData == null) throw new Exception($"Could not deserialize tile data from {jsonPath}"); + + var tile = new Tile() + { + Name = tileData.Name, + ImagePath = tileData.ImagePath, + Transparent = tileData.Transparent, + }; + + tile.Image = tile.LoadImage(tile.ImagePath); + tile.Texture = tile.LoadTexture(tile.Image); + + return tile; + } + catch (Exception e) + { + Console.WriteLine($"Error loading tile from {jsonPath}: {e.Message}"); + throw; + } + } + + public static void GenerateTileJson(string outputDir, string name, string imagePath, bool transparent = false) + { + var tile = new TileData() + { + Name = name, + ImagePath = imagePath, + Transparent = transparent + }; + + string json = JsonSerializer.Serialize(tile, _jsonSerializerOptions); + + File.WriteAllText(outputDir + name + ".json", json); + Console.WriteLine($"Tile JSON saved to {outputDir + name + ".json"}"); } private Image LoadImage(string path) @@ -43,6 +77,23 @@ public class Tile private Texture2D LoadTexture(Image img) { - return Raylib.LoadTextureFromImage(img); + try + { + var texture = Raylib.LoadTextureFromImage(img); + return texture; + } + catch (Exception e) + { + Console.WriteLine($"Failed to load texture: {e}"); + throw; + } } +} + +[Serializable] +public class TileData +{ + public string Name { get; set; } + public string ImagePath { get; set; } + public bool Transparent { get; set; } } \ No newline at end of file diff --git a/Tiles/Tiles.csproj b/Tiles/Tiles.csproj index bf55cb8..3971e1d 100644 --- a/Tiles/Tiles.csproj +++ b/Tiles/Tiles.csproj @@ -15,5 +15,9 @@ + + + + diff --git a/Tiles/bin/Debug/net8.0/Tiles.dll b/Tiles/bin/Debug/net8.0/Tiles.dll index 4cbeb678138553cf2419042df1f43a08d28d776f..6403b3ede5cfaac49c8233215a57cc47ff630a98 100644 GIT binary patch literal 12800 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 diff --git a/Tiles/bin/Debug/net8.0/Tiles.pdb b/Tiles/bin/Debug/net8.0/Tiles.pdb index c5d764c843825154f12955e598818e07c2777ba8..06a4bad30734454eba175e82d50743570a954646 100644 GIT binary patch delta 2991 zcmZ`*eQZQlJ`?BrcSt$`=lEN$fUp zMNCWl96riEy0*Njt*S)}2rbLH7cuPmwq1ELx1Bv61WL4;w3a)fP~@qpY&Z#r?V0+XXE| z1T}OBS_AFt6f_Qc38Zxix&^u?DySE9AnKxN&>ZMEC=WUddJ*&rXbE%?^akh>C}Fth z>!6<*IFelSFUS;gksIU()x=z0s)NvsWDr@)qAr(0%nJTXJ9wfMV6_Bag(G7Z>`}-_ zzl{}OzTI&LtH6gKmxDC;YtDYd*pIOX_*bxf&9Qrd-y_P=w4?Ar@jm1skQ)p9&IUce zdI>%aTn1d}*stOM4{(ixn;cvVycNEG2eExK@D9k=9b5;rCe za1gk>1am4oREq`8P6oK_Hv_jgxV8lIdY^+^VdwAf z1=Yd7&GFw}f{XraZzqwn7jPjpKoM~k6tcmOklnc+h(e$u<{RBpg4xbNm)e_4Fx$f= znAh{aef<52Zi8Gj3$D-}aLq1C&H+DZE+T1%;KGgA=TmT%?tp8w4DP03aH4Y{L8rha z9b*M0K*G+Cq%O!VT4Oc+93<$ET>p|j0&wwTz}8p5Rr>(VKA^ZY=K+lYyil-$1|Ug0 zT-6DeLl<^A6Qyh`zb&FCN@PLLp#eP+L1Tb#kC9U$gmC1m?QIC+1JQ;cHY;P$WFscH zyJH#r+a2$M8=WLnI@=inztg!L{Cd|I_{QjK0w1q)8S-HCUGQWykXy<-b`{j@!)u7oLHbE<1-0c8qPiiAu*qMX14Gpx1b|H-*@il)=)qZk7N87r!O-knSxPRvu*I;vg_eRQ+0;!^kfmlj6; z@W{lIZ~f`Lsdw5Y<(1o2-@kiuV&;X9t(dm)v94R~4S##Pe%=2YrE2HE(n78G!iitZ zUpL;Y|7rA>&z}FpJ&dS~$vIz)gysv>G=#(EtD%*bCr2-Cimzs8e&_jj%eM5~KefT{ z?r!<*_UHSq27YpW##+*Dg)W=9^&fq@w12+o!?!AOH_m)~;UCw;iF4(t9oGi$t|t~Q zueklK9!+RN*||(&rq=q4uiCm1jkksi3S%%aHJzBuB-1J5(e!L)d}2EB(0pR@8C$Bg zL@XHj-T@Jo;!$%2!>B)?dZ|z10d8X!(!jbEur{6C)~FG#?N=zMDGCizc>r}AP$b?4 zdcT&lmW*cuJH+Y`X2D{G`8+B_JZ!bc?rV?L-iKF>hR-u%Q0iy{GApQC^4oRP_e(uw zy%THB1*KP}r1^W9@0BNiC{G=fr`F}^FPy-56jQ38I;mHYpXZI6M@Tnypcks>fl1ye zElB9Ppf;)NRH^W*Q>cf+X!bJhqH4*pau_x2pfNPGY#lX9wBWF$4KdQC9TNh?uY5dQ zMxrBLDeiUeFWWEn3-hwfM@0Uc$5HsgJZZIb_xpEA9`DXgMy+J`NbYrnIx6*UzG^E* zx-h>3O^?(y+QaugD$yOkDA9M#7ZmDeH@B!3dxd#EfuM!C3im3hy9oL0q+tmb(5&@ZMY#9FUXVMkoggr4@Jv3 zVY{pZ2abDb}j-BFomApRN!QF(UGH()>YCh{bb_czdEp z6{;fj271VkA=9TIjGbJQNQR2?FyA!r&BTE9*Pia92L477`-*pp@trF8sUT$Bliw7o oJNmznbrHci=2ua&+q&`&bjy8 zbMHOx=`Xz}cRX7iK5rl@ev0UXLi8m;Zy6lu>g(JMm3oXsFjMim7TN{9UFwbNnwDbx z3Vf{}d`VCLR`7{`7mW7*qclz5h>oAR_(g$j=k+%Qk-9#A!fe)vpi>zj@FDOia2ZJP8>rqdh_Sg$C!VnZX-SLxbz)Fvc^HP( zOk|ujfR6%d65ogglB)=C3BIv}-voXYy1Z}c*TAnqe;6=qfon;81l$as0>9j! z7GeVn4EDr=&ta218+;-3LkXS(UI)D|!E?cvL2m`DnD0oeZvwZ0I}DF8wlSvOg<{OMi9}m+NzIXHII4zll6WZp;wp z&Ll1^wgk_^iBh1;Vsl{roWu#GU;Y;B!k8bv0L@797FCj$ZHg5t(H`i6x*(Z0K@v3s zA{L#=7qg7VETP8UL(n{>9hMd45y*^+^N?36NEoTi>kukks>!;jM#A^R+{6^__q` z?7PWEy3bDrsUvLXK-czG>ga=+uh!j&wI4K$-aeIH6FoNZ;&}GZ=9T`Ut!MV;Sym17 zcMfdnowsebH9$hO*|Q5go;LSSlYe}F>$>aQ&`?JI`mwhwQ@5-<=cvD+Y@C_8S$6NC zV|ufeVayP+3m)*bBYuJc~bvfMs+G=K8+=6Qct{*~FFk7&QT8-HlCW!{)M zyQeU4XZd4e$B)!Bo_gTUf$q^e%kRD?8g89AY)&l|M*Vo;(b`-wd0R~WCZ^0{DpO3k z#8f~`)d>#^PhH);gKvCURi86 z3LHx-q{WPa!vPDaQ3~V{Le~{NdT&)t>Ix>b<3vKO`b^cP@IEYTV=X9WmY@zrgWhWGocl8VNi^8}+-XqA&8Mxd8$xt=CfI{gk zMJabSzQPyV_zgM8O7F+Ts?hLWlNj@F1C5 z(JLaa=ucOtW_`lLb{_8I=q8T3Q5Hz-YAEm`BUwZ?)--Z4x^O9o^dI+q9iIRI diff --git a/Tiles/bin/Debug/net8.0/data/tiles/images/bedrock.png b/Tiles/data/core/tiles/images/bedrock.png similarity index 100% rename from Tiles/bin/Debug/net8.0/data/tiles/images/bedrock.png rename to Tiles/data/core/tiles/images/bedrock.png diff --git a/Tiles/bin/Debug/net8.0/data/tiles/images/dirt.png b/Tiles/data/core/tiles/images/dirt.png similarity index 100% rename from Tiles/bin/Debug/net8.0/data/tiles/images/dirt.png rename to Tiles/data/core/tiles/images/dirt.png diff --git a/Tiles/bin/Debug/net8.0/data/tiles/images/grass.png b/Tiles/data/core/tiles/images/grass.png similarity index 100% rename from Tiles/bin/Debug/net8.0/data/tiles/images/grass.png rename to Tiles/data/core/tiles/images/grass.png diff --git a/Tiles/bin/Debug/net8.0/data/tiles/images/rock.png b/Tiles/data/core/tiles/images/rock.png similarity index 100% rename from Tiles/bin/Debug/net8.0/data/tiles/images/rock.png rename to Tiles/data/core/tiles/images/rock.png diff --git a/Tiles/data/tiles/images/bedrock.png b/Tiles/data/tiles/images/bedrock.png deleted file mode 100644 index d5410b13e0bc00a91d861932a937182b6c02bfc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4420 zcmeHKYitx%6rODrYDEfyn=Q!G@SoySghXU8s3c1ydFh0<0n_(j)g{}wd$&eXb}!q~cU?4Lg_^M)*;N!4gZtAn9h-HIdh@;e57 ziIUhN^cD`>g)W~mOIb%v3znTYblBHgcjV3Xb;~~ASh%3SC_4)~euZo9BW8!WYUTePC=jc6|KKrJdL3 zzS`6Db>pnU$e$dr4E%g|EC4Yw4MyznVSHSNuZR&bs^7)lNtH!oP&PO~;CQuj~Kj5V!xk z?E4;D_+)H(hrelS&BsS)^!@bX`cL-ww*5YU9Bqy3JxCPtHQ!Vl8jZ%#Tu#)YPF~Uk z*=a^~JB}4IO`R88WCIoCup0AWeLMGHs4DreYs*7qNcYRlYR!_kT)$*qgSezc^h(&w z8MzfE2LMso;88Ogi6uDGhuOFsj4d&Np|*vt+x%KwMj0pLB=IU!ZKJUnxoAaP zQn#j%c;e~1m*R536dsg8V3zL(H=8+6OScIEQl0FKu(Bp zRX0>EhFX}sptTx441;-e(7&i23T5D9i8Kqq2VwF$K{-hx8YPBXB#f#y07*OauNH}h zc3mdw857v-upIcAg$hmgdKz1|v+*xQjrLXOB$P))$9)G13^=Q3kqQ4m(6x@`qy zpQ34~$`Dzn_-4)6+ZpZ%m}hWL(H`8ptqfYB5EszIR?EF$z=v7ubCM>i5@!!74=a$A zSdL31%j1kFO1L1AB+fF7hh!i;X=8a#u-VJ zah`U0aEVr2j6e!*Mf47Xm>*XmEBVN9uPi7Dpja8Op`ug6Lv!S`=L@ zMV8Z)N3fwJk(;B%qdbIDjq+ic&|_hH!XlijtPT1w+DQ&cY9qX%fPoL2tHxT*p@{}H zD%Tsl#U|x(QH+};NjJkXB*hLXT_eX6kck$iU19ARD=Zvr28iXYJOuz-4twG3GOEQJ zG%e!8GPOA~9fIQ|@dh7&st%x;YTYnct#PQ?WXgRDE~H7S(*9rC*5N@bKp#S0qb3Y3 z-foLhC#qgvoO((<^xouxiHOjw^`MIH|A|h7}pGOUa;kK`kUQ#W2kocyK1K zbS%!~5-2*l$cXqIrE8R~5iu|#<VUvEX>4Tx04R}tkv&MmKpe$iQ$^8=g9Sw#GE^tKs1(Oqg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2EW9h?+hq{ROvg%&X$9QWhhy~o`x+8FP}9g75gcM}V()QJ&?0?$0rx<}C&UMB+FzOq+OvIJRjU zocD>ttR$<%=fsmHU6A;Z>x##3oQp0CJTq)&((}Y&VzJo4N(Zx&sS(c*M^sIxd?D+x z%6W^kR;jVpJ^2emd3|M>>omuZ#3Gg;L4<-D%Ba9blvbS-3u)R<`1nU%zeFyDTxBqF zET9Svvg-%`gWug+h3P3TDU<-ZUmWLS9O&5vnsvwdK6aeu2@re+uJpFQ+5l!hNw2rH z$PqBO4P0EeHDwRD+yO?O4B3=jDM(W&6oB_L`lcK(bPM#YdA+svaryvcsH@ZsaBv7r z6e)Y%=iR-Xz5RQp)!z@CPja_Oco0Yc000SaNLh0L04^f{04^f|c%?sf00007bV*G` z2j~k70v!iwNsu=H000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0001u zNkl=Dm@%8!Ps%{e9wcCL{*?#fOaJlYK zZ4e^TAcmGL(Z73DfZfw!b3Cy$%1-Vsd1;q3OXH5A{4KF-j-I-sOp*$rhdi^$Rg(K5 z=sGCTIE2jUwlZIWlTSfG)pJY@lYFO?^e~4R6!$ri{Q18B0qy@y{onSJr~m)}07*qo IM6N<$g6)wb^#A|> diff --git a/Tiles/data/tiles/images/grass.png b/Tiles/data/tiles/images/grass.png deleted file mode 100644 index 72d92f89ee53a91eee906fbc501b5b895b95678b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmV;90&)F`P)EX>4Tx04R}tkv&MmKpe$iQ$^8=g9Sw#GE^tKs1(Oqg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2EW9h?+hq{ROvg%&X$9QWhhy~o`x+8FP}9g75gcM}V()QJ&?0?$0rx<}C&UMB+FzOq+OvIJRjU zocD>ttR$<%=fsmHU6A;Z>x##3oQp0CJTq)&((}Y&VzJo4N(Zx&sS(c*M^sIxd?D+x z%6W^kR;jVpJ^2emd3|M>>omuZ#3Gg;L4<-D%Ba9blvbS-3u)R<`1nU%zeFyDTxBqF zET9Svvg-%`gWug+h3P3TDU<-ZUmWLS9O&5vnsvwdK6aeu2@re+uJpFQ+5l!hNw2rH z$PqBO4P0EeHDwRD+yO?O4B3=jDM(W&6oB_L`lcK(bPM#YdA+svaryvcsH@ZsaBv7r z6e)Y%=iR-Xz5RQp)!z@CPja_Oco0Yc000SaNLh0L04^f{04^f|c%?sf00007bV*G` z2j~k712r2V*9heR000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0001a zNklvk*Zh-2=k7t+#de o=Wru(d{)+gS~qyVYhEw@0lus>cYJk52mk;807*qoM6N<$f|{okW&i*H diff --git a/Tiles/data/tiles/images/rock.png b/Tiles/data/tiles/images/rock.png deleted file mode 100644 index 1c7c2a508514f3808082dedb729c88f397dc1c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmV;X0$KfuP)EX>4Tx04R}tkv&MmKpe$iQ$^8=g9Sw#GE^tKs1(Oqg(6f4wL+^7CYOFelZGV4 z#ZhoAIQX$xb#QUk)xlK|1V2EW9h?+hq{ROvg%&X$9QWhhy~o`x+8FP}9g75gcM}V()QJ&?0?$0rx<}C&UMB+FzOq+OvIJRjU zocD>ttR$<%=fsmHU6A;Z>x##3oQp0CJTq)&((}Y&VzJo4N(Zx&sS(c*M^sIxd?D+x z%6W^kR;jVpJ^2emd3|M>>omuZ#3Gg;L4<-D%Ba9blvbS-3u)R<`1nU%zeFyDTxBqF zET9Svvg-%`gWug+h3P3TDU<-ZUmWLS9O&5vnsvwdK6aeu2@re+uJpFQ+5l!hNw2rH z$PqBO4P0EeHDwRD+yO?O4B3=jDM(W&6oB_L`lcK(bPM#YdA+svaryvcsH@ZsaBv7r z6e)Y%=iR-Xz5RQp)!z@CPja_Oco0Yc000SaNLh0L04^f{04^f|c%?sf00007bV*G` z2j~k712z%rFS0lQ000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0001y zNkl~p5{YAP#kM1j^z6Rxl7u8OleHG^PG%wr@4eG| zXRQT*nNd}k8Lc%`Rg5u+2&#(XI5^LfIVTZ;M+AFsByn9A0AmaQ)>`O`b4~zSYqZwL zOw0^L1euAuOe|CZi6`qUADnPFxCxI4#jAW472cfRk7yYoB`KU4@z-{>C4DgXcg M07*qoM6N<$f|-9F00000 diff --git a/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfo.cs b/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfo.cs index bcf3764..95c4bbd 100644 --- a/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfo.cs +++ b/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Tiles")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+6684d62ffbd0721e0f81217b6e1b3cb98446390d")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4e792f1937f7dc281b5a56279f8f427a8b6b0e88")] [assembly: System.Reflection.AssemblyProductAttribute("Tiles")] [assembly: System.Reflection.AssemblyTitleAttribute("Tiles")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfoInputs.cache b/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfoInputs.cache index 58259a2..f34a6f1 100644 --- a/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfoInputs.cache +++ b/Tiles/obj/Debug/net8.0/Tiles.AssemblyInfoInputs.cache @@ -1 +1 @@ -b89132a91ec091559cc8bb94b85559caa7664e4ff5e5cd825e0f6a40705633fb +878acde2fee11315f28b912e289b8837693e33e44d350f59ac560f4d3c05e70f diff --git a/Tiles/obj/Debug/net8.0/Tiles.csproj.FileListAbsolute.txt b/Tiles/obj/Debug/net8.0/Tiles.csproj.FileListAbsolute.txt index e3b43b5..bfafaca 100644 --- a/Tiles/obj/Debug/net8.0/Tiles.csproj.FileListAbsolute.txt +++ b/Tiles/obj/Debug/net8.0/Tiles.csproj.FileListAbsolute.txt @@ -21,7 +21,11 @@ /home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/runtimes/win-x86/native/raylib.dll /home/chris/mnt/data/Projects/tiles/Tiles/Tiles/obj/Debug/net8.0/Tiles.csproj.AssemblyReference.cache /home/chris/mnt/data/Projects/tiles/Tiles/Tiles/obj/Debug/net8.0/Tiles.csproj.Up2Date -/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/tiles/images/dirt.png -/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/tiles/images/grass.png -/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/tiles/images/rock.png -/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/tiles/images/bedrock.png +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/images/bedrock.png +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/images/dirt.png +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/images/grass.png +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/images/rock.png +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/bedrock.json +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/dirt.json +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/grass.json +/home/chris/mnt/data/Projects/tiles/Tiles/Tiles/bin/Debug/net8.0/data/core/tiles/rock.json diff --git a/Tiles/obj/Debug/net8.0/Tiles.dll b/Tiles/obj/Debug/net8.0/Tiles.dll index 4cbeb678138553cf2419042df1f43a08d28d776f..6403b3ede5cfaac49c8233215a57cc47ff630a98 100644 GIT binary patch literal 12800 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 diff --git a/Tiles/obj/Debug/net8.0/Tiles.pdb b/Tiles/obj/Debug/net8.0/Tiles.pdb index c5d764c843825154f12955e598818e07c2777ba8..06a4bad30734454eba175e82d50743570a954646 100644 GIT binary patch delta 2991 zcmZ`*eQZQlJ`?BrcSt$`=lEN$fUp zMNCWl96riEy0*Njt*S)}2rbLH7cuPmwq1ELx1Bv61WL4;w3a)fP~@qpY&Z#r?V0+XXE| z1T}OBS_AFt6f_Qc38Zxix&^u?DySE9AnKxN&>ZMEC=WUddJ*&rXbE%?^akh>C}Fth z>!6<*IFelSFUS;gksIU()x=z0s)NvsWDr@)qAr(0%nJTXJ9wfMV6_Bag(G7Z>`}-_ zzl{}OzTI&LtH6gKmxDC;YtDYd*pIOX_*bxf&9Qrd-y_P=w4?Ar@jm1skQ)p9&IUce zdI>%aTn1d}*stOM4{(ixn;cvVycNEG2eExK@D9k=9b5;rCe za1gk>1am4oREq`8P6oK_Hv_jgxV8lIdY^+^VdwAf z1=Yd7&GFw}f{XraZzqwn7jPjpKoM~k6tcmOklnc+h(e$u<{RBpg4xbNm)e_4Fx$f= znAh{aef<52Zi8Gj3$D-}aLq1C&H+DZE+T1%;KGgA=TmT%?tp8w4DP03aH4Y{L8rha z9b*M0K*G+Cq%O!VT4Oc+93<$ET>p|j0&wwTz}8p5Rr>(VKA^ZY=K+lYyil-$1|Ug0 zT-6DeLl<^A6Qyh`zb&FCN@PLLp#eP+L1Tb#kC9U$gmC1m?QIC+1JQ;cHY;P$WFscH zyJH#r+a2$M8=WLnI@=inztg!L{Cd|I_{QjK0w1q)8S-HCUGQWykXy<-b`{j@!)u7oLHbE<1-0c8qPiiAu*qMX14Gpx1b|H-*@il)=)qZk7N87r!O-knSxPRvu*I;vg_eRQ+0;!^kfmlj6; z@W{lIZ~f`Lsdw5Y<(1o2-@kiuV&;X9t(dm)v94R~4S##Pe%=2YrE2HE(n78G!iitZ zUpL;Y|7rA>&z}FpJ&dS~$vIz)gysv>G=#(EtD%*bCr2-Cimzs8e&_jj%eM5~KefT{ z?r!<*_UHSq27YpW##+*Dg)W=9^&fq@w12+o!?!AOH_m)~;UCw;iF4(t9oGi$t|t~Q zueklK9!+RN*||(&rq=q4uiCm1jkksi3S%%aHJzBuB-1J5(e!L)d}2EB(0pR@8C$Bg zL@XHj-T@Jo;!$%2!>B)?dZ|z10d8X!(!jbEur{6C)~FG#?N=zMDGCizc>r}AP$b?4 zdcT&lmW*cuJH+Y`X2D{G`8+B_JZ!bc?rV?L-iKF>hR-u%Q0iy{GApQC^4oRP_e(uw zy%THB1*KP}r1^W9@0BNiC{G=fr`F}^FPy-56jQ38I;mHYpXZI6M@Tnypcks>fl1ye zElB9Ppf;)NRH^W*Q>cf+X!bJhqH4*pau_x2pfNPGY#lX9wBWF$4KdQC9TNh?uY5dQ zMxrBLDeiUeFWWEn3-hwfM@0Uc$5HsgJZZIb_xpEA9`DXgMy+J`NbYrnIx6*UzG^E* zx-h>3O^?(y+QaugD$yOkDA9M#7ZmDeH@B!3dxd#EfuM!C3im3hy9oL0q+tmb(5&@ZMY#9FUXVMkoggr4@Jv3 zVY{pZ2abDb}j-BFomApRN!QF(UGH()>YCh{bb_czdEp z6{;fj271VkA=9TIjGbJQNQR2?FyA!r&BTE9*Pia92L477`-*pp@trF8sUT$Bliw7o oJNmznbrHci=2ua&+q&`&bjy8 zbMHOx=`Xz}cRX7iK5rl@ev0UXLi8m;Zy6lu>g(JMm3oXsFjMim7TN{9UFwbNnwDbx z3Vf{}d`VCLR`7{`7mW7*qclz5h>oAR_(g$j=k+%Qk-9#A!fe)vpi>zj@FDOia2ZJP8>rqdh_Sg$C!VnZX-SLxbz)Fvc^HP( zOk|ujfR6%d65ogglB)=C3BIv}-voXYy1Z}c*TAnqe;6=qfon;81l$as0>9j! z7GeVn4EDr=&ta218+;-3LkXS(UI)D|!E?cvL2m`DnD0oeZvwZ0I}DF8wlSvOg<{OMi9}m+NzIXHII4zll6WZp;wp z&Ll1^wgk_^iBh1;Vsl{roWu#GU;Y;B!k8bv0L@797FCj$ZHg5t(H`i6x*(Z0K@v3s zA{L#=7qg7VETP8UL(n{>9hMd45y*^+^N?36NEoTi>kukks>!;jM#A^R+{6^__q` z?7PWEy3bDrsUvLXK-czG>ga=+uh!j&wI4K$-aeIH6FoNZ;&}GZ=9T`Ut!MV;Sym17 zcMfdnowsebH9$hO*|Q5go;LSSlYe}F>$>aQ&`?JI`mwhwQ@5-<=cvD+Y@C_8S$6NC zV|ufeVayP+3m)*bBYuJc~bvfMs+G=K8+=6Qct{*~FFk7&QT8-HlCW!{)M zyQeU4XZd4e$B)!Bo_gTUf$q^e%kRD?8g89AY)&l|M*Vo;(b`-wd0R~WCZ^0{DpO3k z#8f~`)d>#^PhH);gKvCURi86 z3LHx-q{WPa!vPDaQ3~V{Le~{NdT&)t>Ix>b<3vKO`b^cP@IEYTV=X9WmY@zrgWhWGocl8VNi^8}+-XqA&8Mxd8$xt=CfI{gk zMJabSzQPyV_zgM8O7F+Ts?hLWlNj@F1C5 z(JLaa=ucOtW_`lLb{_8I=q8T3Q5Hz-YAEm`BUwZ?)--Z4x^O9o^dI+q9iIRI diff --git a/Tiles/obj/Debug/net8.0/ref/Tiles.dll b/Tiles/obj/Debug/net8.0/ref/Tiles.dll index 9e879903d5443a54291c47263eb86e55d1b227a9..48c867e0450bd0068f94b3493961a83544ecfe78 100644 GIT binary patch delta 1546 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