Inheritance: BcsEntityNode
コード例 #1
0
ファイル: GridHelper.cs プロジェクト: sybila/BCSParser
        public static Grid CreateComplexGrid(BcsComplexNode complex)
        {
            var grid = new Grid();

            int componentRowIndex = 0;

            if(complex.Components.Count > 1)
            {
                AddRowControlToGrid(grid, new Label { Content = "Complex:" });
                AddEmptyRow(grid);
                componentRowIndex = 1;
            }

            foreach (var component in complex.Components)
            {
                AddColumnControlToGrid(grid, CreateEntityGrid(component), componentRowIndex);
            }

            return grid;
        }
コード例 #2
0
ファイル: MenuItemVisitor.cs プロジェクト: sybila/BCSParser
        private static string GetComplexFullName(BcsComplexNode complex)
        {
            if (complex == null)
            {
                return "[]";
            }

            var componentNames = complex.Components
                .Select(c =>
                {
                    return (c is BcsLocationNode) ? ((c as BcsLocationNode).Resident?.Name ?? "<error>") : c.Name;
                });

            return $"[{string.Join(".", componentNames)}]";
        }
コード例 #3
0
ファイル: MenuItemVisitor.cs プロジェクト: sybila/BCSParser
        protected override void VisitComplex(BcsComplexNode bcsComplex)
        {
            var item = new MenuItem() { Title = $"Complex: {GetComplexFullName(bcsComplex)}" };

            AddToTree(bcsComplex, item);
        }
コード例 #4
0
 protected override void VisitComplex(BcsComplexNode bcsComplex)
 {
     ResolveFromParent(bcsComplex);
 }
コード例 #5
0
 protected abstract void VisitComplex(BcsComplexNode bcsComplex);
コード例 #6
0
ファイル: BcsFileHandler.cs プロジェクト: sybila/BCSParser
        public void CreateComplexes()
        {
            var complexes = DefinitionFile.Entities.Where(e => e.States.SourceText.IsEmptyOrWhitespace() && e.Composition.SourceText.Contains("."));

            foreach (var complex in complexes)
            {
                var complexNode = new BcsComplexNode() { Name = complex.Name };

                var compoennts = complex.Composition.SourceText.Split('.').Select(name =>
                {
                    name = name.Trim();

                    var matchingComponent = DefinitionFile.Components.SingleOrDefault(component => component.Name == name);
                    if (matchingComponent == null)
                    {
                        complexNode.Errors.Add(new NodeError($"Failed to find matching component named {name} in the definition file."));
                        var dummyComponent = new BcsComponentNode() { Name = name };
                        DefinitionFile.Components.Add(dummyComponent);
                        return dummyComponent;
                    }
                    return matchingComponent;
                }).ToList();

                complexNode.Components.AddRange(compoennts);
                DefinitionFile.Complexes.Add(complexNode);
            }
        }