Ejemplo n.º 1
0
        private void OrderStructsByDependancies()
        {
            List <ObjectDecorator> structs         = Objects.Where(x => x.Dependencies.Count() == 0).ToList();
            List <ObjectDecorator> structsWithDeps = Objects.Where(x => x.Dependencies.Count() != 0).ToList();

            while (structsWithDeps.Count > 0)
            {
                for (int i = 0; i < structsWithDeps.Count; ++i)
                {
                    ObjectDecorator s = structsWithDeps[i];

                    if (s.Dependencies.All(x => structs.Any(y => y.Guid == x.Guid)))
                    {
                        // remove from deps list
                        structsWithDeps.RemoveAt(i);

                        // insert into structs list
                        structs.Add(s);

                        // decrement index counter
                        i -= 1;
                    }
                }
            }

            Objects = structs;
        }
Ejemplo n.º 2
0
        private PropertyDefinition CreateObjectProperty(string name, ObjectDecorator propertyType)
        {
            PropertyDefinition def;

            def              = new PropertyDefinition();
            def.Name         = name;
            def.Replicated   = true;
            def.Enabled      = true;
            def.Deleted      = false;
            def.PropertyType = new PropertyTypeObject
            {
                Context    = Project,
                StructGuid = propertyType.Guid
            };

            return(def);
        }
Ejemplo n.º 3
0
        private void DecorateDefinitions()
        {
            foreach (StateDefinition def in Project.States)
            {
                StateDecorator decorator;

                decorator           = new StateDecorator(def);
                decorator.Generator = this;

                States.Add(decorator);
            }

            foreach (ObjectDefinition def in Project.Structs)
            {
                ObjectDecorator decorator;

                decorator           = new ObjectDecorator(def);
                decorator.Generator = this;

                Objects.Add(decorator);
            }

            foreach (EventDefinition def in Project.Events)
            {
                EventDecorator decorator;

                decorator           = new EventDecorator(def);
                decorator.Generator = this;

                Events.Add(decorator);
            }

            foreach (CommandDefinition def in Project.Commands)
            {
                CommandDecorator decorator;

                decorator           = new CommandDecorator(def);
                decorator.Generator = this;

                Commands.Add(decorator);
            }
        }