// Start is called before the first frame update void Start() { upgrades.Sort((firstUpgrade, secondUpgrade) => { var compareVal = firstUpgrade.repeats.CompareTo(secondUpgrade.repeats); if (compareVal == 0) { compareVal = firstUpgrade.sortingPriority.CompareTo(secondUpgrade.sortingPriority); if (compareVal == 0) { compareVal = firstUpgrade.title.CompareTo(secondUpgrade.title); } } return(compareVal); }); foreach (var upgrade in upgrades) { ResearchUpgradeRow row = Instantiate(upgradeRowPrefab, contentList.transform); row.upgrade = upgrade; } }
public void AttemptToPurchaseUpgrade() { if (!upgrade.repeats && timesBought > 0) { return; } if (upgradesManager.moneyManager.currentBalance < CurrentCost()) { return; } upgradesManager.moneyManager.AddExpense(CurrentCost()); timesBought += 1; upgradesManager.ApplyUpgrade(upgrade); if (!upgrade.repeats) { Destroy(gameObject); // TODO: Display the user they bought something.... } else { UpdateLabels(); } // Create unlocked upgrades... var oldParent = transform.parent; foreach (var newUpgrade in upgrade.nextUpgrades) { ResearchUpgradeRow row = Instantiate(upgradesManager.updateRowPrefab, oldParent); row.upgrade = newUpgrade; } // Sort rows GameObject holder = new GameObject(); var upgrades = new List <ResearchUpgradeRow>(); for (int i = oldParent.childCount - 1; i >= 0; i--) { var child = oldParent.GetChild(i); child.transform.SetParent(holder.transform, false); upgrades.Add(child.GetComponent <ResearchUpgradeRow>()); } upgrades.Sort((first, second) => { var firstUpgrade = first.upgrade; var secondUpgrade = second.upgrade; var compareVal = firstUpgrade.repeats.CompareTo(secondUpgrade.repeats); if (compareVal == 0) { compareVal = firstUpgrade.sortingPriority.CompareTo(secondUpgrade.sortingPriority); if (compareVal == 0) { compareVal = firstUpgrade.title.CompareTo(secondUpgrade.title); } } return(compareVal); }); foreach (var row in upgrades) { row.transform.SetParent(oldParent, false); } Destroy(holder); }