Beispiel #1
0
    /// <summary>
    /// Called once every frame. Checks for player input.
    /// </summary>
    private void FixedUpdate()
    {
        if (GameEngine.instance.lineClonePiecesLeft == 0)
        {
            GameEngine.instance.lineClonePiecesLeft = GameEngine.instance.lineClonePerPiece[GameEngine.instance.curSect];
            BoardController.instance.CloneLineToBottom();
        }
        else if (GameEngine.instance.lineClonePiecesLeft > GameEngine.instance.lineClonePerPiece[GameEngine.instance.curSect])
        {
            GameEngine.instance.lineClonePiecesLeft = GameEngine.instance.lineClonePerPiece[GameEngine.instance.curSect];
        }

        DAStuning = (int)GameEngine.instance.DAS;
        if (GameEngine.instance.framestepped && !MenuEngine.instance.GameOver)
        {
            frames++;
            if (piecemovementlocked == false)
            {
                gravityTiles = gravityTiles + GameEngine.instance.gravity;
            }
            if (nextpiecequeued == true)
            {
                GameEngine.instance.AREf++;
                if (GameEngine.instance.AREf >= (int)Math.Floor(GameEngine.instance.ARE))
                {
                    nextpiecequeued = false;
                    GameEngine.instance.lineClonePiecesLeft--;
                    if (GameEngine.instance.lineClonePiecesLeft == 0)
                    {
                        GameEngine.instance.lineClonePiecesLeft = GameEngine.instance.lineClonePerPiece[GameEngine.instance.curSect];
                        BoardController.instance.CloneLineToBottom();
                    }
                    else if (GameEngine.instance.lineClonePiecesLeft > GameEngine.instance.lineClonePerPiece[GameEngine.instance.curSect])
                    {
                        GameEngine.instance.lineClonePiecesLeft = GameEngine.instance.lineClonePerPiece[GameEngine.instance.curSect];
                    }
                    SpawnPiece(bag[pieces]);
                    GameEngine.instance.AREf = 0;
                }
                if ((GameEngine.instance.Inputs[2] || GameEngine.instance.Inputs[6]) && (!GameEngine.instance.Inputs[1]) && (!GameEngine.instance.Inputs[3]))
                {
                    IRSCW = true; IRSCCW = false; IRSUD = false;
                }
                else if ((!GameEngine.instance.Inputs[2] && !GameEngine.instance.Inputs[6]) && (GameEngine.instance.Inputs[1]) && !(GameEngine.instance.Inputs[3]))
                {
                    IRSCCW = true; IRSCW = false; IRSUD = false;
                }
                else if ((!GameEngine.instance.Inputs[2] && !GameEngine.instance.Inputs[6]) && (!GameEngine.instance.Inputs[1]) && (GameEngine.instance.Inputs[3]))
                {
                    IRSCCW = false; IRSCW = false; IRSUD = true;
                }
                else
                {
                    IRSCCW = false; IRSCW = false; IRSUD = false;
                }
                if (GameEngine.instance.Inputs[4])
                {
                    IHS = true;
                }
                else
                {
                    IHS = false;
                }
                if (GameEngine.instance.RS == RotationSystems.ARS)
                {
                    IARS = true;
                }
            }
            else
            {
                IRSCCW = false; IRSCW = false; IRSUD = false; IARS = false; IHS = false;
            }
            if (GameEngine.instance.movement.y < -0.5 && !piecemovementlocked)
            {
                gravityTiles += (float)GameEngine.instance.gravity * (float)GameEngine.instance.SDF * (GameEngine.instance.movement.y * -1);
            }
            if (GameEngine.instance.movement.x < -0.5)
            {
                if (DASfl == 0 && !piecemovementlocked)
                {
                    MoveCurPiece(Vector2Int.left);
                }
                DASfl++;
                if (DASfl > DAStuning && !piecemovementlocked)
                {
                    MoveCurPiece(Vector2Int.left);
                    if (ARRtuning == 0)
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            MoveCurPiece(Vector2Int.left);
                        }
                    }
                }
            }
            else
            {
                DASfl = 0;
            }
            if (GameEngine.instance.movement.x > 0.5)
            {
                if (DASfr == 0 && !piecemovementlocked)
                {
                    MoveCurPiece(Vector2Int.right);
                }
                DASfr++;
                if (DASfr > DAStuning && !piecemovementlocked)
                {
                    MoveCurPiece(Vector2Int.right);
                    if (ARRtuning == 0)
                    {
                        for (int i = 0; i < 10; i++)
                        {
                            MoveCurPiece(Vector2Int.right);
                        }
                    }
                }
            }
            else
            {
                DASfr = 0;
            }
            // if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))
            // {
            //     if(curPieceController != null)
            //     {
            //         return;
            //     }
            //     UpdatePieceBag();
            // }
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                MenuEngine.instance.GameOver            = true;
                MenuEngine.instance.IntentionalGameOver = true;
                MenuEngine.instance.frames = 300;
            }

            if (((GameEngine.instance.Inputs[4] && !PrevInputs[4]) || IHS) && !piecemovementlocked && allowHold)
            {
                if (IHS)
                {
                    gameAudio.PlayOneShot(audioIHS);
                    IHSexecuted = true;
                }
                ExecuteHold();
            }
            if ((((GameEngine.instance.Inputs[2] && !PrevInputs[2]) || (GameEngine.instance.Inputs[6] && !PrevInputs[6])) || IRSCW) && !piecemovementlocked)
            {
                curPieceController.RotatePiece(true, true, false);
                if (IRSCW)
                {
                    gameAudio.PlayOneShot(audioIRS);
                }
            }
            if (((GameEngine.instance.Inputs[1] && !PrevInputs[1]) || IRSCCW) && !piecemovementlocked)
            {
                curPieceController.RotatePiece(false, true, false);
                if (IRSCCW)
                {
                    gameAudio.PlayOneShot(audioIRS);
                }
            }
            if (((GameEngine.instance.Inputs[3] && !PrevInputs[3]) || IRSUD) && !piecemovementlocked)
            {
                curPieceController.RotatePiece(true, false, true);
                if (IRSUD)
                {
                    gameAudio.PlayOneShot(audioIRS);
                }
            }
            if (IARS && !piecemovementlocked)
            {
                curPieceController.RotatePiece(true, false, true);
            }


            // if (Input.GetKeyDown(KeyCode.Alpha0))
            // {
            //     SpawnDebug(0);
            // }
            // if (Input.GetKeyDown(KeyCode.Alpha1))
            // {
            //     SpawnDebug(1);
            // }
            // if (Input.GetKeyDown(KeyCode.Alpha2))
            // {
            //     SpawnDebug(2);
            // }
            // if (Input.GetKeyDown(KeyCode.Alpha3))
            // {
            //     SpawnDebug(3);
            // }
            // if (Input.GetKeyDown(KeyCode.Alpha4))
            // {
            //     SpawnDebug(4);
            // }
            // if (Input.GetKeyDown(KeyCode.Alpha5))
            // {
            //     SpawnDebug(5);
            // }
            // if (Input.GetKeyDown(KeyCode.Alpha6))
            // {
            //     SpawnDebug(6);
            // }
            if (!curPieceController.CanMovePiece(Vector2Int.zero) && !piecemovementlocked)
            {
                curPieceController.SendPieceToFloor();
            }
            for (int i = 0; i < (int)Math.Floor(gravityTiles); i++)
            {
                if (piecemovementlocked == false)
                {
                    MoveCurPiece(Vector2Int.down);
                }
            }
            gravityTiles -= (float)Math.Floor(gravityTiles);
            if (((GameEngine.instance.Inputs[0]) && !PrevInputs[0]) && !piecemovementlocked)
            {
                curPieceController.SendPieceToFloor();
            }
            for (int i = 1; i < 7; i++)
            {
                PrevInputs[i] = GameEngine.instance.Inputs[i];
            }
            if (!piecemovementlocked || PrevInputs[0] == true)
            {
                PrevInputs[0] = GameEngine.instance.Inputs[0];
            }
        }
    }