Esempio n. 1
0
    // Start is called before the first frame update
    void Start()
    {
        switch (type)
        {
        case UpgradeType.damage:
            upgrades = config.damage;
            break;

        case UpgradeType.attackSpeed:
            upgrades = config.attackSpeed;
            break;

        case UpgradeType.movementSpeed:
            upgrades = config.movementSpeed;
            break;

        case UpgradeType.lights:
            upgrades = config.lights;
            break;

        case UpgradeType.health:
            upgrades = config.health;
            break;

        case UpgradeType.homingTorpedos:
            upgrades = config.homingTorpedos;
            break;
        }

        float x = transform.position.x;
        float y = transform.position.y;

        foreach (Upgrade u in upgrades.AsEnumerable().Reverse())
        {
            GameObject upgradeTicket = Instantiate(upgradeTicketPrefab);
            upgradeTicket.transform.SetParent(transform, false);

            upgradeTicket.transform.position = new Vector3(x, y, 0);
            // set offset for the next ticket
            x = x + Random.Range(minOffset, maxOffset);
            y = y - Random.Range(minOffset, maxOffset);

            float randomAngle = Random.Range(minAngle, maxAngle);
            upgradeTicket.transform.Rotate(Vector3.back, randomAngle);

            UpgradeTicket ticket = upgradeTicket.GetComponent <UpgradeTicket>();
            ticket.Initialize(u.description, u.loreText, u.price, u.value);
            tickets.Push(ticket);

            Button ticketButton = upgradeTicket.GetComponent <Button>();
            ticketButton.onClick.AddListener(delegate { BuyTopTicket(); });
        }
    }
Esempio n. 2
0
    public void BuyTopTicket()
    {
        if (upgradeUI == null)
        {
            Debug.Log("UpgradeStack " + transform.name + " doesn't have UpgradeUI reference! Can't buy!");
            return;
        }

        UpgradeTicket ticket = tickets.Peek();

        if (upgradeUI.GetMoney() >= ticket.GetPrice())
        {
            upgradeUI.Upgrade(ticket.GetValue(), type);
            tickets.Pop();
            Destroy(ticket.gameObject);
            upgradeUI.ReduceMoney(ticket.GetPrice());
        }
        else
        {
            // TODO: indicate, can't buy!
        }
    }