public static DirectMaps Parse(WZProperty prop) { if (prop == null) { return(null); } DirectMaps result = new DirectMaps(); result.Spot = prop.ResolveFor <Point>("spot"); if (result.Spot == null) { string[] childrenNames = prop.Children.Select(c => c.NameWithoutExtension).ToArray(); if (childrenNames.Contains("x") && childrenNames.Contains("y")) { result.Spot = new Point(prop.ResolveFor <int>("x").Value, prop.ResolveFor <int>("y").Value); } } result.Type = prop.ResolveFor <int>("type"); result.Title = prop.ResolveForOrNull <string>("desc"); result.Description = prop.ResolveForOrNull <string>("title"); result.NoTooltip = prop.ResolveFor <bool>("noToolTip"); result.MapNumbers = prop.Resolve("mapNo").Children.Select(c => c.ResolveFor <int>()).Where(c => c.HasValue).Select(c => c.Value).ToArray(); return(result); }
public static WorldMap Parse(WZProperty worldMapNode) { if (worldMapNode == null) { return(null); } WorldMap result = new WorldMap(); result.BaseImage = worldMapNode.Resolve("BaseImg").Children.Select(c => Frame.Parse(c)).ToArray(); result.WorldMapName = worldMapNode.ResolveForOrNull <string>("info/WorldMap"); result.ParentWorld = worldMapNode.ResolveForOrNull <string>("info/parentMap"); result.Links = worldMapNode.Resolve("MapLink")?.Children.Select(c => WorldMapLink.Parse(c)).Where(c => c != null).ToArray(); result.Maps = worldMapNode.Resolve("MapList")?.Children.Select(c => DirectMaps.Parse(c)).Where(c => c != null).ToArray(); return(result); }