Exemple #1
0
        static TiledMapImageLayer ParseImageLayer(XmlNode layerXml)
        {
            var imageXml = layerXml["image"];

            if (imageXml == null)
            {
                return(null);                // Without image, layer is empty, so we won't need it.
            }

            var layer = new TiledMapImageLayer();

            ParseBaseLayer(layerXml, layer);

            layer.TexturePath = XmlHelper.GetXmlStringSafe(imageXml, "source");

            if (layer.TexturePath == "")
            {
                return(null);                // Same thing. No path == no image.
            }

            if (imageXml.Attributes["trans"] != null)
            {
                layer.TransparentColor = XmlHelper.StringToColor(imageXml.Attributes["trans"].Value);
            }

            return(layer);
        }
Exemple #2
0
        static TiledTextObject ParseTextObject(XmlNode node, TiledObject baseObj)
        {
            var textXml = node["text"];
            var obj     = new TiledTextObject(baseObj);

            obj.Text = textXml.InnerText;
            if (textXml.Attributes["color"] != null)
            {
                obj.Color = XmlHelper.StringToColor(textXml.Attributes["color"].Value);
            }
            obj.WordWrap = XmlHelper.GetXmlBoolSafe(textXml, "color", false);

            obj.HorAlign = (TiledTextAlign)XmlHelper.GetXmlEnumSafe(
                textXml,
                "halign",
                TiledTextAlign.Left
                );
            obj.VerAlign = (TiledTextAlign)XmlHelper.GetXmlEnumSafe(
                textXml,
                "valign",
                TiledTextAlign.Left
                );

            obj.Font       = XmlHelper.GetXmlStringSafe(textXml, "fontfamily");
            obj.FontSize   = XmlHelper.GetXmlIntSafe(textXml, "pixelsize");
            obj.Underlined = XmlHelper.GetXmlBoolSafe(textXml, "underline");
            obj.StrikedOut = XmlHelper.GetXmlBoolSafe(textXml, "strikeout");

            return(obj);
        }
Exemple #3
0
        /// <summary>
        /// Parses basic object properties, common to all object types.
        /// </summary>
        static TiledObject ParseBaseObject(XmlNode node)
        {
            var obj = new TiledObject();

            obj.Name     = XmlHelper.GetXmlStringSafe(node, "name");
            obj.Type     = XmlHelper.GetXmlStringSafe(node, "type");
            obj.ID       = int.Parse(node.Attributes["id"].Value);
            obj.Position = new Vector2(
                XmlHelper.GetXmlFloatSafe(node, "x"),
                XmlHelper.GetXmlFloatSafe(node, "y")
                );
            obj.Size = new Vector2(
                XmlHelper.GetXmlFloatSafe(node, "width"),
                XmlHelper.GetXmlFloatSafe(node, "height")
                );
            obj.Rotation = XmlHelper.GetXmlFloatSafe(node, "rotation");
            obj.Visible  = XmlHelper.GetXmlBoolSafe(node, "visible");

            obj.Properties = XmlHelper.GetProperties(node);

            return(obj);
        }
Exemple #4
0
        public static TiledMapObjectLayer ParseObjectLayer(XmlNode layerXml, bool parseBase = true)
        {
            var layer = new TiledMapObjectLayer();

            if (parseBase)             // This is done for tiles, which have objects. Their objectgroup doesn't need any base layer stuff.
            {
                ParseBaseLayer(layerXml, layer);
            }

            if (layerXml.Attributes["color"] != null)
            {
                layer.Color = XmlHelper.StringToColor(layerXml.Attributes["color"].Value);
            }

            if (XmlHelper.GetXmlStringSafe(layerXml, "draworder") == "index")
            {
                layer.DrawingOrder = TiledMapObjectDrawingOrder.Manual;
            }
            else
            {
                layer.DrawingOrder = TiledMapObjectDrawingOrder.TopDown;
            }

            // Parsing objects.
            var objectsXml = layerXml.SelectNodes("object");
            var objects    = new List <TiledObject>();

            foreach (XmlNode obj in objectsXml)
            {
                objects.Add(ParseObject(obj));
            }

            layer.Objects = objects.ToArray();
            // Parsing objects.

            return(layer);
        }