From 8c8f0d9fc7cda4ccf706d047909dcfd03dbc1b9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Sat, 26 Feb 2022 18:05:56 +0100 Subject: [PATCH] Basic tilemap --- Sandbox/src/ExampleLayer2D.bf | 77 ++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/Sandbox/src/ExampleLayer2D.bf b/Sandbox/src/ExampleLayer2D.bf index 4acab12..d3ffb27 100644 --- a/Sandbox/src/ExampleLayer2D.bf +++ b/Sandbox/src/ExampleLayer2D.bf @@ -11,6 +11,7 @@ using GlitchyEngine.World; using GlitchyEngine.Renderer.Text; using System.IO; using msdfgen; +using System.Collections; namespace Sandbox { @@ -39,6 +40,53 @@ namespace Sandbox SubTexture2D _treeSprite ~ _.ReleaseRef(); SubTexture2D _barrelSprite ~ _.ReleaseRef(); + SubTexture2D _grassSprite ~ _.ReleaseRef(); + SubTexture2D _dirtSprite ~ _.ReleaseRef(); + SubTexture2D _waterSprite ~ _.ReleaseRef(); + + static String s_MapTiles = """ + WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW + WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW + WWWWWWWWWDDDDDDDWWWWWWWWWWWWWWWW + WWWWWWDDDDDDDDDDDDDDDWWWWWWWWWWW + WWWWWDDDDDDDDDDDDDDDDDDDDDWWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDDWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDDWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDDDWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDDDWWWW + WWWWWWDDDDDDDDDDDDDDDDDDDDDDWWWW + WWWWWWDDDDDDDDDDDDDDDDDDDDDDWWWW + WWWWWWWWDDDDDDDDDDDDDDDDDDDDWWWW + WWWWWWWWDDDDDDDDDDDDDDDDDDDWWWWW + WWWWWWWWDDDDDDDDDDDDDDDDDDDWWWWW + WWWWWWWWDDDDDDDDDDDDDDDDDDWWWWWW + WWWWWWWWDDDDDDDDDDDDDDDDDDWWWWWW + WWWWWWDDDDDDDDDDDDDDDDDDDDWWWWWW + WWWWWDDDDDDDDDDDDDDDDDDDDDDWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDDWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDDWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDDWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDDWWWWWW + WWWWDDDDDDDDDDDDDDDDDDDDDWWWWWWW + WWWWWDDDDDDDDDDDDDDDDDDDWWWWWWWW + WWWWWWDDDDDDDDDDDDDDDDDWWWWWWWWW + WWWWWWWDDDDDDDDDDDDDDDDWWWWWWWWW + WWWWWWWWDDDDDDDDDDDDDDWWWWWWWWWW + WWWWWWWWWDDDDDDDDDDDWWWWWWWWWWWW + WWWWWWWWWWDDDDDDDDWWWWWWWWWWWWWW + WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW + WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW + WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW + """; + + Dictionary _mapMap ~ { + for (var value in _.Values) + { + value.ReleaseRef(); + } + delete _; + }; + [AllowAppend] public this() : base("Example") { @@ -82,6 +130,15 @@ namespace Sandbox _treeSprite = SubTexture2D.CreateFromGrid(_spriteSheet, Vector2(5, 10), Vector2(128), .(1, 2)); _barrelSprite = SubTexture2D.CreateFromGrid(_spriteSheet, Vector2(9, 11), Vector2(128)); + + _grassSprite = SubTexture2D.CreateFromGrid(_spriteSheet, Vector2(1, 1), Vector2(128)); + _dirtSprite = SubTexture2D.CreateFromGrid(_spriteSheet, Vector2(6, 1), Vector2(128)); + _waterSprite = SubTexture2D.CreateFromGrid(_spriteSheet, Vector2(11, 1), Vector2(128)); + + _mapMap = new Dictionary(); + _mapMap['W'] = _waterSprite..AddRef(); + _mapMap['D'] = _dirtSprite..AddRef(); + _mapMap['G'] = _grassSprite..AddRef(); } public override void Update(GameTime gameTime) @@ -144,7 +201,25 @@ namespace Sandbox Renderer2D.BeginScene(cameraController.Camera, .BackToFront); Renderer2D.DrawQuad(Vector3(0, 0, 1), Vector2(1, 2), 0, _treeSprite); - Renderer2D.DrawQuad(Vector3(1, 0, 1), Vector2(1, 1), 0, _barrelSprite); + Renderer2D.DrawQuad(Vector3(1, 0, 1), Vector2(1, 1), 0, _grassSprite); + + Vector2 position = Vector2.Zero; + + for(char8 c in s_MapTiles.RawChars) + { + if (c == '\n') + { + position.X = 0; + position.Y += 1.0f; + continue; + } + + SubTexture2D tile = _mapMap[c]; + + Renderer2D.DrawQuad(Vector3(position, -5), Vector2.One, 0, tile); + + position.X += 1.0f; + } Renderer2D.EndScene(); }