예제 #1
0
    public IEnumerator HoldTimer(int holdTime)
    {
        holdTimeLeft = holdTime;
        while (holdTimeLeft > 0)
        {
            PlayerUI.holdTimerText.text = "" + holdTimeLeft;
            yield return(new WaitForSeconds(1f));

            holdTimeLeft--;
        }
        PlayerUI.holdTimerText.text = "" + holdTimeLeft;
        if (CurrentPowerUp == null)
        {
            yield break;
        }
        CurrentPowerUp.TargetColor = _color;
        CurrentPowerUp.PunishPlayer();
        CurrentPowerUp = null;
    }
예제 #2
0
    void Update()
    {
        if (GameManager.INSTANCE.gameOver)
        {
            return;
        }
        //update Player UI
        PlayerUI.UpdateUI(HasKey, CurrentPowerUp != null);
        //check if player got stunned by Thunder
        if (IsStunned)
        {
            if (CurrentPowerUp != null)
            {
                StopCoroutine("HoldTimer");
                CurrentPowerUp = null;
            }
            return;
        }

        //detect shoulder-buttons and set bool to be used in Box.cs
        activatePressed = false;
        if (CurrentPowerUp == null && (Input.GetAxisRaw(ACTIVATE_BUTTON + playerNumber) == 1 || Input.GetAxisRaw(ACTIVATE_BUTTON + playerNumber) == -1))
        {
            activatePressed = true;
        }

        //check if player already collected a Power up; if not, stop here
        if (CurrentPowerUp == null)
        {
            return;
        }

        needsTwoColors = CurrentPowerUp is AbstractMultipleTargetPowerUp;   //check how many inputs the Power Up needs
        Debug.Log(CurrentPowerUp.GetType());
        Colors colorPressed = CheckForColorInput();                         //check if the Player pressed a collor on the controller, returns IDLE if not

        if (colorPressed == Colors.IDLE)
        {
            return;                 //no button pressed, stop here
        }
        if (needsTwoColors)         //power Up needs two inputs/colors
        {
            AbstractMultipleTargetPowerUp multiTargetPowerUp = (AbstractMultipleTargetPowerUp)CurrentPowerUp;
            if (multiTargetPowerUp.TargetColor == Colors.IDLE)  //target color isn't set yet, and gets the value of pressedColor
            {
                multiTargetPowerUp.TargetColor = colorPressed;
            }
            else                                                     //target color is already set
            {
                multiTargetPowerUp.SecondTargetColor = colorPressed; //second target color gets set to colorPressed
                StopCoroutine("HoldTimer");
                multiTargetPowerUp.ExecutePowerUp(_color);
                CurrentPowerUp = null;
            }
        }
        else                //power Up needs only one input/color
        {
            CurrentPowerUp.TargetColor = colorPressed;
            StopCoroutine("HoldTimer");
            CurrentPowerUp.ExecutePowerUp(_color);
            CurrentPowerUp = null;
        }
    }