diff --git a/DangerousD/Content/lvl.tmx b/DangerousD/Content/lvl.tmx index 7d3b4c8..8b3a0c2 100644 --- a/DangerousD/Content/lvl.tmx +++ b/DangerousD/Content/lvl.tmx @@ -1,7 +1,7 @@ - + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -311,7 +311,7 @@ - + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -441,36 +441,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -546,7 +517,7 @@ - + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, @@ -730,30 +701,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - + @@ -803,21 +751,4 @@ - - - - - - - - - - - - - - - - - diff --git a/DangerousD/GameCore/Managers/MapManager.cs b/DangerousD/GameCore/Managers/MapManager.cs index f108485..5a1e770 100644 --- a/DangerousD/GameCore/Managers/MapManager.cs +++ b/DangerousD/GameCore/Managers/MapManager.cs @@ -1,10 +1,14 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Xml; using DangerousD.GameCore.GameObjects.MapObjects; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using System.Xml.Serialization; +using DangerousD.GameCore.GameObjects; + namespace DangerousD.GameCore.Managers { public class MapManager @@ -28,12 +32,15 @@ namespace DangerousD.GameCore.Managers int.Parse(xml.DocumentElement.Attributes["tileheight"].Value)); //tileSize *= _scale; - XmlNodeList layers = xml.DocumentElement.SelectNodes("layer"); - Debug.Write(layers.Count); - foreach (XmlNode layer in layers) + foreach (XmlNode layer in xml.DocumentElement.SelectNodes("layer")) { InstantiateTiles(layer, tileSize); } + + foreach (XmlNode layer in xml.DocumentElement.SelectNodes("objectgroup")) + { + InstantiateEntities(layer); + } } private void InstantiateTiles(XmlNode layer, Vector2 tileSize) @@ -60,8 +67,10 @@ namespace DangerousD.GameCore.Managers (chunkY + i / chunkW) * tileSize.Y * _scale + offsetY); //pos *= _scale; Rectangle sourceRect = new(new Point((tiles[i] -1) % _columns, (tiles[i] -1) / _columns) * tileSize.ToPoint(), tileSize.ToPoint()); - - switch (tileType) + Type type = Type.GetType($"DangerousD.GameCore.GameObjects.MapObjects.{tileType}"); + Activator.CreateInstance(type, pos, tileSize * _scale, sourceRect); + + /*switch (tileType) { case "collidable": new StopTile(pos, tileSize * _scale, sourceRect); @@ -72,7 +81,7 @@ namespace DangerousD.GameCore.Managers case "non_collidable": new Tile(pos, tileSize * _scale, sourceRect); break; - } + }*/ } } @@ -87,5 +96,15 @@ namespace DangerousD.GameCore.Managers _columns = int.Parse(root.Attributes["columns"].Value); } + + private void InstantiateEntities(XmlNode group) + { + string entityType = group.Attributes["class"].Value; + foreach (XmlNode entity in group.ChildNodes) + { + Type type = Type.GetType($"DangerousD.GameCore.GameObjects.{entityType}"); + Activator.CreateInstance(type, new Vector2(float.Parse(entity.Attributes["x"].Value), float.Parse(entity.Attributes["y"].Value))); + } + } } }