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); }
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 ); }