Exemple #1
0
        protected override void ProcessResource(ResourceTree aResourceTree)
        {
            System.Action <XElement, ResourceTreeNode> ReadChildren = null;
            var excludedGroups = new NodeGroup[] {
                NodeGroup.ExtensionPackages, NodeGroup.GameInformation, NodeGroup.GlobalGameSettings, NodeGroup.Invalid
            };

            ReadChildren = (aBranch, aParent) => {
                foreach (var element in aBranch.Elements())
                {
                    if (element.Name == "Node")
                    {
                        aParent.Add(new ResourceTreeNode()
                        {
                            Name  = element.Attribute("Name").Value,
                            ID    = int.Parse(element.Attribute("ID").Value),
                            Type  = NodeTypes.Child,
                            Group = aParent.Group
                        });
                    }
                    else if (element.Name == "Group")
                    {
                        var node = new ResourceTreeNode()
                        {
                            Name  = element.Attribute("Name").Value,
                            Type  = NodeTypes.Group,
                            Group = aParent.Group
                        };

                        ReadChildren(element, node);
                        aParent.Add(node);
                    }
                }
            };

            var document = LoadXml(Filenames.Tree + ".xml");

            if (document != null)
            {
                OnCategoryProcessing(ResourceTypes.ResourceTree);

                foreach (var node in aResourceTree)
                {
                    if (!excludedGroups.Contains(node.Group))
                    {
                        ReadChildren(document.Element(node.Group.ToString()), node);
                    }
                }

                OnCategoryProcessed(ResourceTypes.ResourceTree);
            }
        }
        protected override void ProcessResource( ResourceTree aResourceTree )
        {
            System.Func<ResourceTreeNode, XElement, XElement> GetChildren = null;
              var excludedGroups = new NodeGroup[] {
            NodeGroup.ExtensionPackages, NodeGroup.GameInformation, NodeGroup.GlobalGameSettings, NodeGroup.Invalid
              };

              GetChildren = ( aNode, aParent ) => {
            foreach ( var node in aNode ) {
              if ( node.Type == NodeTypes.Group )
            aParent.Add( GetChildren( node, new XElement( "Group", new XAttribute( "Name", node.Name ) ) ) );
              else
            aParent.Add( new XElement( "Node", new XAttribute( "Name", node.Name ), new XAttribute( "ID", node.ID ) ) );
            }

            return aParent;
              };

              var document =
            new XElement( "Tree",
              from node in aResourceTree
              where !excludedGroups.Contains( node.Group )
              select GetChildren( node, new XElement( node.Group.ToString() ) )
            );

              SaveDocument( document, Filenames.Tree + ".xml" );
        }