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); } } }
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())); }