summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs')
-rw-r--r--Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs66
1 files changed, 66 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs
new file mode 100644
index 0000000..5d07f06
--- /dev/null
+++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tiled/TiledMapTileLayer.cs
@@ -0,0 +1,66 @@
+using System.Collections.Generic;
+using Microsoft.Xna.Framework;
+
+namespace MonoGame.Extended.Tiled
+{
+ public class TiledMapTileLayer : TiledMapLayer
+ {
+ public TiledMapTileLayer(string name, string type, int width, int height, int tileWidth, int tileHeight, Vector2? offset = null,
+ Vector2? parallaxFactor = null, float opacity = 1, bool isVisible = true)
+ : base(name, type, offset, parallaxFactor, opacity, isVisible)
+ {
+ Width = width;
+ Height = height;
+ TileWidth = tileWidth;
+ TileHeight = tileHeight;
+ Tiles = new TiledMapTile[Width * Height];
+ }
+
+ public int Width { get; }
+ public int Height { get; }
+ public int TileWidth { get; }
+ public int TileHeight { get; }
+ public TiledMapTile[] Tiles { get; }
+
+ public int GetTileIndex(ushort x, ushort y)
+ {
+ return x + y * Width;
+ }
+
+ public bool TryGetTile(ushort x, ushort y, out TiledMapTile? tile)
+ {
+ if (x >= Width)
+ {
+ tile = null;
+ return false;
+ }
+ var index = GetTileIndex(x, y);
+
+ if (index < 0 || index >= Tiles.Length)
+ {
+ tile = null;
+ return false;
+ }
+
+ tile = Tiles[index];
+ return true;
+ }
+
+ public TiledMapTile GetTile(ushort x, ushort y)
+ {
+ var index = GetTileIndex(x, y);
+ return Tiles[index];
+ }
+
+ public void SetTile(ushort x, ushort y, uint globalIdentifier)
+ {
+ var index = GetTileIndex(x, y);
+ Tiles[index] = new TiledMapTile(globalIdentifier, x, y);
+ }
+
+ public void RemoveTile(ushort x, ushort y)
+ {
+ SetTile(x, y, 0);
+ }
+ }
+}