Exemplo n.º 1
0
    public void On(OnPowerUpCollected powerUpCollected)
    {
        if (isGodMode)
        {
            return;
        }

        PowerUpInfo powerUp = powerUpCollected.powerUpInfo;

        switch (powerUp.type)
        {
        case PowerUpType.Slow:
            TimeHelper.timeScale = powerUp.basepoints;
            //Time.timeScale = powerUp.basepoints;
            //Time.fixedDeltaTime = 0.02f * powerUp.basepoints;
            break;

        case PowerUpType.Fast:
            isGodMode = true;
            ApplyMultiplier(Multiplier.Speed, powerUp.basepoints);
            break;

        default: break;
        }

        StartCoroutine(OnPowerUpExpire(powerUp));
    }
Exemplo n.º 2
0
    private IEnumerator OnPowerUpExpire(PowerUpInfo info)
    {
        yield return(new WaitForSecondsRealtime(info.duration));

        if (info.type == PowerUpType.Slow)
        {
            TimeHelper.timeScale = 1f;
        }
        else if (info.type == PowerUpType.Fast)
        {
            isGodMode = false;
            ApplyMultiplier(Multiplier.Speed, 0.0f);
        }
    }
    IEnumerator StartPowerUpCountdown(PowerUpInfo powerUp)
    {
        HUDManager.instance.QuickAnnouncement(powerUp.powerUpDescription, 2, Color.black);
        switch (powerUp.PowerUpType)
        {
        case PowerUpType.Speed:
            if (powerUp.useMultiplier)
            {
                SpeedMultiplier = powerUp.multiplier;
            }
            else
            {
                Speed += powerUp.amount;
            }
            break;

        case PowerUpType.Strength:
            DamageMultiplier = powerUp.multiplier;
            break;

        case PowerUpType.JumpStrength:
            JumpMultiplier = powerUp.multiplier;
            break;
        }
        yield return(new WaitForSeconds(powerUp.duration));

        switch (powerUp.PowerUpType)
        {
        case PowerUpType.Speed:
            if (powerUp.useMultiplier)
            {
                SpeedMultiplier = 1;
            }
            else
            {
                Speed -= powerUp.amount;
            }
            break;

        case PowerUpType.Strength:
            DamageMultiplier = 1;
            break;

        case PowerUpType.JumpStrength:
            JumpMultiplier = 1;
            break;
        }
        HUDManager.instance.QuickAnnouncement(powerUp.powerUpName + " ends", 2, Color.black);
    }
Exemplo n.º 4
0
    public void SetPowerUpEffect(PowerUpInfo powerUpInfo)
    {
        PowerUp powerUp = Activator.CreateInstance(powerUpInfo.classType) as PowerUp;

        powerUp.Init(statHandler, this, powerUpInfo.lifeTime);
        for (int i = 0; i < powerUps.Length; i++)
        {
            if (powerUps[i] == null)
            {
                powerUps[i] = powerUp;
                //Debug.Log(GameManager.Instance.sceneController.gameplayHUD.powerUpUI);
                GameManager.Instance.sceneController.staticHud.powerUpUI.ChangeImage(powerUpInfo.icon, i);
                return;
            }
        }
    }
Exemplo n.º 5
0
    void Start()
    {
        if (powerUps.Length > 0)
        {
            powerUpInfo = powerUps[Random.Range(1, powerUps.Length)];
            SpriteRenderer render = GetComponent <SpriteRenderer>();
            if (render != null)
            {
                render.sprite = powerUpInfo.powerUpIcon;
                // Reset the Collider
                PolygonCollider2D collider = GetComponent <PolygonCollider2D>();
                if (collider != null)
                {
                    collider.gameObject.SetActive(false);
                    collider.gameObject.SetActive(true);
                }
                // Aplly Color
                switch (powerUpInfo.PowerUpType)
                {
                case PowerUpType.Heal:
                    render.color = Color.green;
                    break;

                case PowerUpType.Strength:
                    render.color = Color.red;
                    break;

                case PowerUpType.JumpStrength:
                    render.color = Color.yellow;
                    break;

                case PowerUpType.Speed:
                    render.color = Color.cyan;
                    break;

                case PowerUpType.Poison:
                    render.color = Color.magenta;
                    break;
                }
            }
        }
        else
        {
            Destroy(gameObject);
        }
    }
Exemplo n.º 6
0
    public void BuyPowerUp(PowerUpInfo info)
    {
        PowerUp powerUp = powerUpDict[info.id];

        // Verificar se tem moedas suficiente e exibir mensagem caso não possua
        if (DataManager.Coins >= powerUp.Info.price)
        {
            // Toca som
            SoundEffects.Instance.Play(SoundEffects.Instance.sfxCash);

            // Remover valor do preço das moedas
            coinPanel.RemoveCoins(powerUp.Info.price);
            DataManager.Coins -= powerUp.Info.price;

            // Ativar power up (se for escudo, o ativa. Se for ímã, adiciona mais itens do mesmo)
            if (powerUp.Info.isAccumulative)
            {
                powerUp.units += powerUp.Info.units;
            }
            else
            {
                powerUp.units = 1;
            }

            DataManager.SetPowerUpData(powerUp);

            // Atualizar o botão da lista
            UIStoreItem clickedItem = EventSystem.current.currentSelectedGameObject.transform.parent.GetComponent <UIStoreItem>();
            clickedItem.UpdateState(powerUp);

            // Atualiza os powerups ativos
            UpdatePowerUp(powerUp);
        }
        else
        {
            // Exibir janela informando que não há moedas suficiente
            panelNoCoins.SetActive(true);
        }
    }
Exemplo n.º 7
0
    /// <summary>
    /// Checks for collisions between the ship and a power up
    /// </summary>
    /// <returns><c>true</c>, if up collision was powed, <c>false</c> otherwise.</returns>
    /// <param name="p">P.</param>
    bool PowUpCollision(GameObject p)
    {
        if (p != null)         // fixes an error on restart
        {
            // get the sprite info of the power up
            pInfo = p.GetComponent <PowerUpInfo> ();

            // check for overlapping
            // get the distance between centers (squared)
            float distance = (pInfo.Center - sInfo.Center).sqrMagnitude;

            // if a squared + b squared > c squared, they are colliding
            if (distance < (pInfo.Radius * pInfo.Radius) + (sInfo.Radius * sInfo.Radius))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        return(false);        // not colliding
    }
    public void OnApplyPowerUp(PowerUpInfo powerUp)
    {
        if (powerUp != null)
        {
            switch (powerUp.PowerUpType)
            {
            case PowerUpType.Heal:
                currentHP += powerUp.amount;
                HUDManager.instance.QuickAnnouncement(powerUp.powerUpDescription, 2, Color.green);
                break;

            case PowerUpType.Poison:
                currentHP -= powerUp.amount;
                HUDManager.instance.QuickAnnouncement(powerUp.powerUpDescription, 2, Color.red);
                break;

            case PowerUpType.Speed:
            case PowerUpType.Strength:
            case PowerUpType.JumpStrength:
                StartCoroutine(StartPowerUpCountdown(powerUp));
                break;
            }
        }
    }
Exemplo n.º 9
0
 public OnPowerUpCollected(PowerUpInfo info)
 {
     powerUpInfo = info;
 }
Exemplo n.º 10
0
    void Start()
    {
        PowerupSettings powerupSettings = GameManager.Instance.gameSettings.powerupSettings;

        powerUpInfo = powerupSettings.powerUpInfo.Where(x => x.type == type).First();
    }