示例#1
0
        private void SetupAvaiblePowerups()
        {
            for (int i = 0; i < Grid.childCount; i++)
            {
                Grid.GetChild(i).gameObject.SetActive(false);
            }

            PowerupSlot first = null;

            foreach (IPowerup powerup in PowerupFactory.GetAllPowerups())
            {
                var obj = ObjectPool.Instantiate(PowerupIcon, Vector3.zero);
                obj.transform.localScale = new Vector3(1, 1, 1);

                obj.transform.SetParent(Grid);

                obj.GetComponent <PowerupSlot>().Setup(powerup);

                if (first == null || SelectedPowerup != null && powerup.GetType() == SelectedPowerup.GetType())
                {
                    first = obj.GetComponent <PowerupSlot>();
                }
            }

            SelectPowerup(first);
        }
    /// <summary>
    /// Calls the powerup to take effect.
    /// </summary>
    /// <param name="powerup">Powerup to activate</param>
    private void ApplyPowerup(IPowerup powerup)
    {
        //configures powerup
        powerup.Apply(gameObject);

        //if it's a duration-type powerup
        if (typeof(IDurationPowerup).IsAssignableFrom(powerup.GetType()))
        {
            IDurationPowerup durationPowerup = (IDurationPowerup)powerup;
            //start the effect
            StartCoroutine(durationPowerup.AbilityEffect());
        }
    }
        public void Setup(IPowerup powerup)
        {
            Colour colour = Colour.None;

            foreach (Colour c in Enum.GetValues(typeof(Colour)))
            {
                if (powerup.GetType() == PowerupFactory.GetPowerup(c).GetType())
                {
                    colour = c;
                    break;
                }
            }

            GetComponentInChildren <Image>().sprite = GameResources.PieceSprites[((int)colour).ToString()];
        }
        public void UsePowerup(IPowerup powerup)
        {
            var match = Powerups.FirstOrDefault(x => x.Powerup.GetType() == powerup.GetType());

            if (match != null)
            {
                match.Count--;
                if (match.Count < 0)
                {
                    match.Count = 0;
                }
            }
            UserIO.Instance.SavePowerupInfo();
            PowerupCountChanged?.Invoke(powerup);
        }
        public void AddNewPowerup(IPowerup powerup)
        {
            var match = Powerups.FirstOrDefault(x => x.Powerup.GetType() == powerup.GetType());

            if (match == null)
            {
                Powerups.Add(new PowerupCollection()
                {
                    Powerup = powerup, Count = 1
                });
            }
            else
            {
                match.Count++;
            }
            UserIO.Instance.SavePowerupInfo();
            PowerupCountChanged?.Invoke(powerup);
        }
        public int GetUses(IPowerup powerup)
        {
            var match = Powerups.FirstOrDefault(x => x.Powerup.GetType() == powerup.GetType());

            if (match != null)
            {
                return(match.Count);
            }
            else
            {
                if (Debug.isDebugBuild)
                {
                    return(99);
                }
                else
                {
                    return(0);
                }
            }
        }
示例#7
0
        private void UpdateRemainingText(IPowerup powerup)
        {
            if (powerup == null || this.powerup == null)
            {
                return;
            }

            if (powerup.GetType() != this.powerup.GetType())
            {
                return;
            }

            int remaining = UserPowerupManager.Instance.GetUses(powerup);

            if (remaining > previousRemaing)
            {
                activateOnEnable = true;
            }

            remainingText.text = remaining.ToString();
            previousRemaing    = remaining;
        }
 public bool PowerupEquipped(IPowerup powerup)
 {
     return(EquippedPowerups.Any(x => x.GetType() == powerup.GetType()));
 }