예제 #1
0
        public TMXTileGroup(XMLElement element)
        {
            name = element.GetAttribute("name", null);
            width = element.GetIntAttribute("width", 0);
            height = element.GetIntAttribute("height", 0);
            objects = new List<TMXTile>();

            XMLElement propsElement = element.GetChildrenByName("properties");
            if (propsElement != null)
            {
                List<XMLElement> properties = propsElement.List("property");
                if (properties != null)
                {
                    props = new TMXProperty();
                    for (int p = 0; p < properties.Count; p++)
                    {
                        XMLElement propElement = properties[p];
                        string name_0 = propElement.GetAttribute("name", null);
                        string value_ren = propElement.GetAttribute("value", null);
                        props.SetProperty(name_0, value_ren);
                    }
                }
            }
            List<XMLElement> objectNodes = element.List("object");
            for (int i = 0; i < objectNodes.Count; i++)
            {
                XMLElement objElement = objectNodes[i];
                TMXTile obj0 = new TMXTile(objElement);
                obj0.index = i;
                CollectionUtils.Add(objects, obj0);
            }
        }
예제 #2
0
        private static NSObject ParseObject(XMLElement n)
        {
			String type = n.GetName();
			if (type.Equals("dict",StringComparison.InvariantCultureIgnoreCase)) {
				NSDictionary dict = new NSDictionary();
				List<XMLElement> children = n.List();
				for (int i = 0; i < children.Count; i += 2) {
                    XMLElement key = (XMLElement)children[i + 0];
					XMLElement val = (XMLElement) children[i + 1];
					dict.Put(key.GetContents(), ParseObject(val));
				}
				return dict;
			} else if (type.Equals("array",StringComparison.InvariantCultureIgnoreCase)) {
				List<XMLElement> children = n.List();
				NSArray array = new NSArray(children.Count);
				for (int i = 0; i < children.Count; i++) {
					array.SetValue(i, ParseObject((XMLElement) children[i]));
				}
				return array;
			} else if (type.Equals("true",StringComparison.InvariantCultureIgnoreCase)
					|| type.Equals("yes",StringComparison.InvariantCultureIgnoreCase)) {
				return new NSNumber(true);
			} else if (type.Equals("false",StringComparison.InvariantCultureIgnoreCase)
					|| type.Equals("no",StringComparison.InvariantCultureIgnoreCase)) {
				return new NSNumber(false);
			} else if (type.Equals("integer",StringComparison.InvariantCultureIgnoreCase)) {
				return new NSNumber(n.GetContents());
			} else if (type.Equals("real",StringComparison.InvariantCultureIgnoreCase)) {
				return new NSNumber(n.GetContents());
			} else if (type.Equals("string",StringComparison.InvariantCultureIgnoreCase)) {
				return new NSString(n.GetContents());
			} else if (type.Equals("data",StringComparison.InvariantCultureIgnoreCase)) {
				return new NSData(n.GetContents());
			} else if (type.Equals("range",StringComparison.InvariantCultureIgnoreCase)) {
				List<XMLElement> children = n.List();
				if (children.Count == 2) {
					XMLElement key = (XMLElement) children[0];
					XMLElement val = (XMLElement) children[1];
					return new NSRange(Int32.Parse(key.GetContents()),
							Int32.Parse(val.GetContents()));
				}
			}
			return null;
		}
예제 #3
0
		private void Set(XMLElement Pack) {
			this.fileName = Pack.GetAttribute("file", null);
			this.name = Pack.GetAttribute("name", fileName);
			int r = Pack.GetIntAttribute("r", -1);
			int g = Pack.GetIntAttribute("g", -1);
			int b = Pack.GetIntAttribute("b", -1);
			int a = Pack.GetIntAttribute("a", -1);
			if (r != -1 && g != -1 && b != -1 && a != -1) {
				colorMask = new LColor(r, g, b, a);
			}
			if (fileName != null) {
				List<XMLElement> blocks = Pack.List("block");
				foreach (XMLElement e  in  blocks) {
					PackEntry entry = new PackEntry(null);
					int id = e.GetIntAttribute("id", count);
					entry.id = id;
					entry.fileName = e.GetAttribute("name", null);
					entry.bounds.left = e.GetIntAttribute("left", 0);
					entry.bounds.top = e.GetIntAttribute("top", 0);
					entry.bounds.right = e.GetIntAttribute("right", 0);
					entry.bounds.bottom = e.GetIntAttribute("bottom", 0);
					if (entry.fileName != null) {
						temps.Put(entry.fileName, entry);
					} else {
						temps.Put(Convert.ToString(id), entry);
					}
					count++;
				}
				this.packing = false;
				this.packed = true;
			}
			this.useAlpha = true;
		}
예제 #4
0
        public TMXTileSet(TMXTiledMap map, XMLElement element, bool loadImage)
        {
            this.map = map;
            this.name = element.GetAttribute("name", null);
            this.firstGID = element.GetIntAttribute("firstgid", 0);
            string source = element.GetAttribute("source", "");
            if (!"".Equals(source))
            {
                try
                {
                    Stream ins0 = Resources.OpenStream(map.GetTilesLocation()
                            + "/" + source);
                    XMLDocument doc = XMLParser.Parse(ins0);
                    XMLElement docElement = doc.GetRoot();
                    element = docElement;
                }
                catch (Exception e)
                {
                    Loon.Utils.Debug.Log.Exception(e);
                    throw new Exception(this.map.tilesLocation + "/"
                            + source);
                }
            }
            string tileWidthString = element.GetAttribute("tilewidth", "");
            string tileHeightString = element.GetAttribute("tileheight", "");
            if (tileWidthString.Length == 0 || tileHeightString.Length == 0)
            {
                throw new Exception(
                        "tileWidthString.length == 0 || tileHeightString.length == 0");
            }
            tileWidth = Int32.Parse(tileWidthString);
            tileHeight = Int32.Parse(tileHeightString);

            string sv = element.GetAttribute("spacing", "");
            if ((sv != null) && (!"".Equals(sv)))
            {
                tileSpacing = Int32.Parse(sv);
            }

            string mv = element.GetAttribute("margin", "");
            if ((mv != null) && (!"".Equals(mv)))
            {
                tileMargin = Int32.Parse(mv);
            }

            List<XMLElement> list = element.List("image");
            XMLElement imageNode = list[0];
            string fileName = imageNode.GetAttribute("source", null);

            LColor trans = null;
            string t = imageNode.GetAttribute("trans", null);
            if ((t != null) && (t.Length > 0))
            {
                trans = new LColor(((uint)Convert.ToInt32(t, 16)));
            }

            if (loadImage)
            {
                string path = map.GetTilesLocation() + "/" + fileName;
                LTexture image;
                if (trans != null)
                {
                    image = TextureUtils.FilterColor(path, trans);
                }
                else
                {
                    image = LTextures.LoadTexture(path);
                }
                SetTileSetImage(image);
            }

            List<XMLElement> elements = element.List("tile");
            for (int i = 0; i < elements.Count; i++)
            {
                XMLElement tileElement = elements[i];

                int id = tileElement.GetIntAttribute("id", 0);
                id += firstGID;
                TMXProperty tileProps = new TMXProperty();

                XMLElement propsElement = tileElement
                        .GetChildrenByName("properties");
                List<XMLElement> properties = propsElement.List("property");
                for (int p = 0; p < properties.Count; p++)
                {
                    XMLElement propElement = properties[p];
                    string name_1 = propElement.GetAttribute("name", null);
                    string value_ren = propElement.GetAttribute("value", null);
                    tileProps.SetProperty(name_1, value_ren);
                }
                CollectionUtils.Put(props, id, tileProps);
            }
        }