Example #1
0
    public Mode Update()
    {
        if (Input.GetAxis("Pause") > 0)
        {
            pauser.Pause(this);
            return(pauser);
        }

        leftShifter.SetInput(Input.GetAxis("Horizontal") < 0);
        rightShifter.SetInput(Input.GetAxis("Horizontal") > 0);
        spinShifter.SetInput(Input.GetAxis("Vertical") > 0);

        leftShifter.NextFrame(Time.deltaTime);
        rightShifter.NextFrame(Time.deltaTime);
        spinShifter.NextFrame(Time.deltaTime);

        bool softDropping    = Input.GetAxis("Vertical") < 0;
        bool droppedOneLevel = UpdateDropClock(Time.deltaTime, softDropping);

        if (droppedOneLevel)
        {
            bool blockWasLowered = mover.MoveDown();

            if (!blockWasLowered)
            {
                scoreboard.Record(mover.CountAndRemoveFullRows());
                bool couldSpawn = mover.SpawnTetromino();

                if (!couldSpawn)
                {
                    audio.StopMusic();
                    gameOver.End(scoreboard.GetScore());
                    return(gameOver);
                }
            }
        }

        return(this);
    }