示例#1
0
        public void RollLogic(RandomizerTreeItem item)
        {
            var roll = RNG.Next(0, item.Items.Count);

            if (item.Items.Count < 1)
            {
                return;
            }
            RandomizerTreeItem result = (RandomizerTreeItem)item.Items[roll];

            builder.Append(result.Item.OutputValue + "\n");

            if (result.Items.Count > 0)
            {
                RollLogic(result);
            }

            if (result.Item.SelectedFunction > 0)
            {
                var top  = FindTopMostParent(result);
                var func = MyItems[result.Item.SelectedFunction - 1];

                if (top.Item.ItemName != func.Item.ItemName)
                {
                    RollLogic(func);
                }
            }
        }
示例#2
0
        public RandomizerTreeItem NewItem()
        {
            var item = new RandomizerTreeItem();

            Items.Add(item);

            return(item);
        }
示例#3
0
        public RandomizerTreeItem FindTopMostParent(RandomizerTreeItem item)
        {
            var par = item;

            while (par.Parent is RandomizerTreeItem it)
            {
                par = it;
            }

            return(par);
        }
示例#4
0
        public StringBuilder DoRoll(RandomizerTreeItem item)
        {
            builder.Clear();

            if (item.Items.Count < 1)
            {
                return(builder);
            }

            RollLogic(item);

            return(builder);
        }