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);
    }
示例#2
0
    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);
    }