private Upgrade GenerateBranch(int length, string name, string description, int initialCost, int costStep, Action <Player> callback) { int cnt = 1; int cost = initialCost; var baseUpgrade = new Upgrade($"{name} {cnt}", description, cost, callback); var cur = baseUpgrade; Upgrade prev = baseUpgrade; cost += costStep; cnt++; this.upgradeTree.Add(cur); for (; cnt <= length; cnt++, cost += costStep) { cur = new Upgrade(name + cnt, description, cost, callback); cur.AddDependency(prev); this.upgradeTree.Add(cur); prev = cur; } return(baseUpgrade); }