Exemplo n.º 1
0
        void NewTetrimino()
        {
            if (!gameOver)
            {
                held          = false;
                linesCleared += CheckLines();

                nextTetrimino.UpdateRectangles();
                tetriminos.Add(new Tetrimino(tileTexture, nextTetrimino.type));
                currentTetriminoIndex++;

                nextTetrimino                 = new Tetrimino(tileTexture, (TetriminoType)randomBag.get());
                nextTetrimino.active          = false;
                nextTetrimino.topLeftPosition = nextPos;
                nextTetrimino.UpdateRectangles();


                if (currentTetriminoIndex >= 0)
                {
                    CalculateShadowPos();
                    if (CheckCollisions(CollisionCheckType.Tetrimino, MoveDirection.Down))
                    {
                        GameOver();
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void Reset()
        {
            gameOver              = false;
            tetriminos            = new List <Tetrimino>();
            level                 = 1;
            linesCleared          = 0;
            currentTetriminoIndex = -1;

            randomBag     = new RandomBag(7);
            nextTetrimino = new Tetrimino(tileTexture, (TetriminoType)randomBag.get());
            nextTetrimino.topLeftPosition = nextTextPos + new Vector2(0, 100);
            nextTetrimino.UpdateRectangles();
            NewTetrimino();
        }
Exemplo n.º 3
0
        public void Hold()
        {
            if (!held)
            {
                Tetrimino temp;
                if (holdTetrimino != null)
                {
                    temp = new Tetrimino(tileTexture, holdTetrimino.type);
                }
                else
                {
                    temp = null;
                }

                holdTetrimino                 = new Tetrimino(tileTexture, tetriminos[currentTetriminoIndex].type);
                holdTetrimino.active          = false;
                holdTetrimino.topLeftPosition = holdPos;
                holdTetrimino.UpdateRectangles();

                if (temp != null)
                {
                    tetriminos[currentTetriminoIndex] = new Tetrimino(tileTexture, temp.type);
                }
                else
                {
                    tetriminos[currentTetriminoIndex] = new Tetrimino(tileTexture, nextTetrimino.type);

                    nextTetrimino                 = new Tetrimino(tileTexture, (TetriminoType)randomBag.get());
                    nextTetrimino.active          = false;
                    nextTetrimino.topLeftPosition = nextPos;
                    nextTetrimino.UpdateRectangles();
                }
                CalculateShadowPos();
            }
            held = true;
        }