Beispiel #1
0
        private bool TryMove(Tetromino t, Vec2 move, int rotate, bool allowKicks)
        {
            Vec2 newPos   = t.Pos + move;
            int  newAngle = (t.Angle + rotate) % 4;

            if (TestTetromino(t.Type, newPos, newAngle))
            {
                t.Pos   = newPos;
                t.Angle = newAngle;
                return(true);
            }

            if (allowKicks)
            {
                foreach (var tryKick in m_GameRules.GetAllowedKicks(m_Board, t, newAngle))
                {
                    newPos = t.Pos + move + new Vec2(tryKick, 0);

                    if (TestTetromino(t.Type, newPos, newAngle))
                    {
                        t.Pos   = newPos;
                        t.Angle = newAngle;
                        return(true);
                    }
                }
            }

            return(false);
        }