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); } } }
public RandomizerTreeItem NewItem() { var item = new RandomizerTreeItem(); Items.Add(item); return(item); }
public RandomizerTreeItem FindTopMostParent(RandomizerTreeItem item) { var par = item; while (par.Parent is RandomizerTreeItem it) { par = it; } return(par); }
public StringBuilder DoRoll(RandomizerTreeItem item) { builder.Clear(); if (item.Items.Count < 1) { return(builder); } RollLogic(item); return(builder); }