Ejemplo n.º 1
0
        public NodeViewModel Build(int seed, FractalNode type)
        {
            var random = new Random(seed);
            var modelManager = ModelManager.Instance;
            var dataGeneratorSeed = random.Next(1, int.MaxValue);

            var nodeViewModel = new NodeViewModel
            {
                Title = modelManager.ProcessDataGeneratorSymbols(dataGeneratorSeed, type.Title),
                Name = modelManager.ProcessDataGeneratorSymbols(dataGeneratorSeed, type.Name),
                Text = modelManager.ProcessDataGeneratorSymbols(dataGeneratorSeed, type.Text),

                Seed = seed,
                Type = type.Type,
            };

            if (type.ChoiceNodes != null)
            {
                foreach (var choiceNode in type.PickChoiceNodes(random.Next(1, int.MaxValue)))
                {
                    nodeViewModel.ChildNodes.Add(modelManager.BuildNodeViewModelStub(random.Next(1, int.MaxValue), choiceNode));
                }
            }

            if (type.Nodes == null)
                return nodeViewModel;

            foreach (var weightedNode in type.Nodes)
            {
                if(random.Next(0,100) <=  weightedNode.PercentageChance)
                {
                    var count = random.Next(weightedNode.MinAmount, weightedNode.MaxAmount);

                    while( count > 0)
                    {
                        if( nodeViewModel.ChildNodes == null)
                            nodeViewModel.ChildNodes = new List<NodeViewModel>();

                        nodeViewModel.ChildNodes.Add(modelManager.BuildNodeViewModelStub(random.Next(1,int.MaxValue),weightedNode.Type));
                        count--;
                    }
                }
            }

            return nodeViewModel;
        }
Ejemplo n.º 2
0
        public static NodeViewModel GetNode(int seed, string type)
        {
            var random = new Random(seed);
            var node = new NodeViewModel();

            var childCount = random.Next(0, 10);

            for (int i = 0; i < childCount; i++)
            {
                var tnode = new NodeViewModel
                                {
                                    Title = i.ToString(),
                                    Seed = random.Next(1,int.MaxValue),
                                    Type = "Node",
                                };
                node.ChildNodes.Add(tnode);
            }

            return node;
        }
Ejemplo n.º 3
0
        public NodeViewModel BuildStub(int seed, FractalNode type)
        {
            var random = new Random(seed);
            var modelManager = ModelManager.Instance;
            var dataGeneratorSeed = random.Next(1, int.MaxValue);

            var nodeViewModel = new NodeViewModel
            {
                Title = modelManager.ProcessDataGeneratorSymbols(dataGeneratorSeed, type.Title),

                Seed = seed,
                Type = type.Type,
            };

            if( string.IsNullOrEmpty(type.Name) &&
                string.IsNullOrEmpty(type.Text) &&
                type.Nodes == null &&
                type.ChoiceNodes == null)
            {
                nodeViewModel.EmptyNode = true;
            }

            return nodeViewModel;
        }
Ejemplo n.º 4
0
        public NodeViewModel ExceptionNode(string message)
        {
            var nodeViewModel = new NodeViewModel
            {
                Title = message,
                Seed = 1,
                Type = "ExceptionNode",
            };

            return nodeViewModel;
        }