Esempio n. 1
0
        public void LoadTerrainTypes( XElement node )
        {
            /*if( !node.Name.Equals("terraintypes") )
            {
                Log.Editor.WriteWarning("Loading TerrainType failed!");
                return;
            }*/

            if( node.HasElements )
            {
                foreach( var element in node.Elements() )
                {
                    if( element.Name != "terrain" ) continue;
                    if( !element.HasAttributes ) continue;

                    var terrainType = new TiledTerrainType();
                    terrainType.TerrainID = TiledTerrainType.TerrainCount++;
                    terrainType.Name = TiledHelper.GetAttribute(element, "name"); //node.Attribute("name").Value;
                    terrainType.TileID = int.Parse( TiledHelper.GetAttribute(element, "tile"), System.Globalization.NumberStyles.Integer );

                    TerrainTypes.Add( terrainType.TileID, terrainType );
                }
            }
            else
                Log.Editor.WriteWarning("Node <{0}> has no elements. (Should have <terrain> nodes!)", node.Name);
        }
Esempio n. 2
0
        public void LoadTerrainTile( XElement tileNode )
        {
            if( tileNode.Name != "tile" )
            {
                Log.Editor.WriteWarning("Node is not a <tile>, it is <{0}>.", tileNode.Name );
                return;
            }
            if( !tileNode.HasAttributes )
            {
                Log.Editor.WriteWarning("Node <{0}> does not have attribues. (Expected a <tile> node with attributes)", tileNode.Name );
                return;
            }

            var idStr = TiledHelper.GetAttribute(tileNode, "id");
            var tileID = int.Parse( string.IsNullOrEmpty(idStr) ? "0" : idStr, System.Globalization.NumberStyles.Integer );
            string terrainStr = TiledHelper.GetAttribute(tileNode, "terrain");
            string[] terrain = terrainStr.Split(',');

            TiledTerrainType terrainType = new TiledTerrainType();

            if( TerrainTypes.ContainsKey(tileID) )
            {
                terrainType = TerrainTypes[tileID];
            }

            if( terrain != null && terrain.Length > 0 )
            {
                terrainType.Data = new int[4];
                for( int i = 0; i < terrain.Length; i++ )
                {
                    if( !string.IsNullOrEmpty( terrain[i] ) )
                        terrainType.Data[i] = int.Parse( terrain[i], System.Globalization.NumberStyles.Integer );
                    else
                        terrainType.Data[i] = -1;
                }
            }
            else
                Log.Editor.WriteWarning("No terrain data in <{0}.{1}>.", tileNode.Parent.Parent.Name, tileNode.Parent.Name );
        }