public static ContentConfiguration <T> GetFromRootElement(XElement elemRoot, XName name) { ContentConfiguration <T> output; if (elemRoot.Element(name).Elements().Count() == 0) { output = new MaterialConfiguration <T>(); output.nodeName = name.LocalName; return(output); } switch (elemRoot.Element(name).Elements().First().Name.LocalName) { case "material": output = new MaterialConfiguration <T>(); break; case "tiletype": output = new TileConfiguration <T>(); break; case "random": output = new RandomConfiguration <T>(); break; case "ramp": output = new RampConfiguration <T>(); break; case "item": output = new ItemConfiguration <T>(); break; default: Debug.LogError("Found unknown matching method \"" + elemRoot.Element(name).Elements().First().Name.LocalName + "\", assuming material."); output = new MaterialConfiguration <T>(); break; } output.nodeName = name.LocalName; return(output); }
public static TileConfiguration <T> GetFromRootElement(XElement elemRoot, XName name) { TileConfiguration <T> output; if (elemRoot.Element(name).Elements().Count() == 0) { output = new TileMaterialConfiguration <T>(); output.nodeName = name.LocalName; return(output); } string matchType = "NoMatch"; XElement matchElement = elemRoot.Element(name).Elements().First(); foreach (var element in elemRoot.Element(name).Elements()) { if (element.Name.LocalName == "subObject") { continue; } matchType = element.Name.LocalName; matchElement = element; break; } switch (matchType) { case "material": output = new TileMaterialConfiguration <T>(); break; case "tiletype": output = new TileTypeConfiguration <T>(); break; case "random": output = new RandomConfiguration <T>(); break; case "ramp": output = new RampConfiguration <T>(); break; case "item": if (ItemTokenList.IsValid) { output = new ItemConfiguration <T>(); } else { Debug.LogError("Item Types not available in this version of Remotefortressreader. Please upgrade."); output = new TileMaterialConfiguration <T>(); } break; case "growth": output = new PlantGrowthConfiguration <T>(); break; case "designation": output = new TileDesignationConfiguration <T>(); break; case "coverage": output = new CoverageConfiguration <T>(); break; default: IXmlLineInfo lineinfo = matchElement; Debug.LogError("Found unknown matching method \"" + matchType + "\" int " + elemRoot.BaseUri + ":" + lineinfo.LineNumber + "," + lineinfo.LinePosition + ", assuming material."); output = new TileMaterialConfiguration <T>(); break; } output.nodeName = name.LocalName; return(output); }