Esempio n. 1
0
    // 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);
    }