Tetris.Board.Board C# (CSharp) Method

Board() public method

public Board ( Tetris.Game game, Texture2D &textures, Rectangle rectangles ) : System
game Tetris.Game
textures Texture2D
rectangles System.Drawing.Rectangle
return System
        public Board(Game game, ref Texture2D textures, Rectangle[] rectangles) 
            : base(game)
        {
            sBatch = (SpriteBatch)Game.Services.GetService(typeof(SpriteBatch));

            // Load textures for blocks
            this.textures = textures;

            // Rectangles to draw figures
            this.rectangles = rectangles;

            // Create tetris board
            boardFields = new FieldState[width, height];
            BoardColor = new int[width, height];

            #region Creating figures
            // Figures[figure's number, figure's modification, figure's block number] = Vector2
            // At all figures is 7, every has 4 modifications (for cube all modifications the same)
            // and every figure consists from 4 blocks
            Figures = new Vector2[7, 4, 4];
            // O-figure
            for (int i = 0; i < 4; i++)
            {
                Figures[0, i, 0] = new Vector2(1, 0);
                Figures[0, i, 1] = new Vector2(2, 0);
                Figures[0, i, 2] = new Vector2(1, 1);
                Figures[0, i, 3] = new Vector2(2, 1);
            }
            // I-figures
            for (int i = 0; i < 4; i += 2)
            {
                Figures[1, i, 0] = new Vector2(0, 0);
                Figures[1, i, 1] = new Vector2(1, 0);
                Figures[1, i, 2] = new Vector2(2, 0);
                Figures[1, i, 3] = new Vector2(3, 0);
                Figures[1, i + 1, 0] = new Vector2(1, 0);
                Figures[1, i + 1, 1] = new Vector2(1, 1);
                Figures[1, i + 1, 2] = new Vector2(1, 2);
                Figures[1, i + 1, 3] = new Vector2(1, 3);
            }
            // J-figures
            Figures[2, 0, 0] = new Vector2(0, 0);
            Figures[2, 0, 1] = new Vector2(1, 0);
            Figures[2, 0, 2] = new Vector2(2, 0);
            Figures[2, 0, 3] = new Vector2(2, 1);
            Figures[2, 1, 0] = new Vector2(2, 0);
            Figures[2, 1, 1] = new Vector2(2, 1);
            Figures[2, 1, 2] = new Vector2(1, 2);
            Figures[2, 1, 3] = new Vector2(2, 2);
            Figures[2, 2, 0] = new Vector2(0, 0);
            Figures[2, 2, 1] = new Vector2(0, 1);
            Figures[2, 2, 2] = new Vector2(1, 1);
            Figures[2, 2, 3] = new Vector2(2, 1);
            Figures[2, 3, 0] = new Vector2(1, 0);
            Figures[2, 3, 1] = new Vector2(2, 0);
            Figures[2, 3, 2] = new Vector2(1, 1);
            Figures[2, 3, 3] = new Vector2(1, 2);
            // L-figures
            Figures[3, 0, 0] = new Vector2(0, 0);
            Figures[3, 0, 1] = new Vector2(1, 0);
            Figures[3, 0, 2] = new Vector2(2, 0);
            Figures[3, 0, 3] = new Vector2(0, 1);
            Figures[3, 1, 0] = new Vector2(2, 0);
            Figures[3, 1, 1] = new Vector2(2, 1);
            Figures[3, 1, 2] = new Vector2(1, 0);
            Figures[3, 1, 3] = new Vector2(2, 2);
            Figures[3, 2, 0] = new Vector2(0, 1);
            Figures[3, 2, 1] = new Vector2(1, 1);
            Figures[3, 2, 2] = new Vector2(2, 1);
            Figures[3, 2, 3] = new Vector2(2, 0);
            Figures[3, 3, 0] = new Vector2(1, 0);
            Figures[3, 3, 1] = new Vector2(2, 2);
            Figures[3, 3, 2] = new Vector2(1, 1);
            Figures[3, 3, 3] = new Vector2(1, 2);
            // S-figures
            for (int i = 0; i < 4; i += 2)
            {
                Figures[4, i, 0] = new Vector2(0, 1);
                Figures[4, i, 1] = new Vector2(1, 1);
                Figures[4, i, 2] = new Vector2(1, 0);
                Figures[4, i, 3] = new Vector2(2, 0);
                Figures[4, i + 1, 0] = new Vector2(1, 0);
                Figures[4, i + 1, 1] = new Vector2(1, 1);
                Figures[4, i + 1, 2] = new Vector2(2, 1);
                Figures[4, i + 1, 3] = new Vector2(2, 2);
            }
            // Z-figures
            for (int i = 0; i < 4; i += 2)
            {
                Figures[5, i, 0] = new Vector2(0, 0);
                Figures[5, i, 1] = new Vector2(1, 0);
                Figures[5, i, 2] = new Vector2(1, 1);
                Figures[5, i, 3] = new Vector2(2, 1);
                Figures[5, i + 1, 0] = new Vector2(2, 0);
                Figures[5, i + 1, 1] = new Vector2(1, 1);
                Figures[5, i + 1, 2] = new Vector2(2, 1);
                Figures[5, i + 1, 3] = new Vector2(1, 2);
            }
            // T-figures
            Figures[6, 0, 0] = new Vector2(0, 1);
            Figures[6, 0, 1] = new Vector2(1, 1);
            Figures[6, 0, 2] = new Vector2(2, 1);
            Figures[6, 0, 3] = new Vector2(1, 0);
            Figures[6, 1, 0] = new Vector2(1, 0);
            Figures[6, 1, 1] = new Vector2(1, 1);
            Figures[6, 1, 2] = new Vector2(1, 2);
            Figures[6, 1, 3] = new Vector2(2, 1);
            Figures[6, 2, 0] = new Vector2(0, 0);
            Figures[6, 2, 1] = new Vector2(1, 0);
            Figures[6, 2, 2] = new Vector2(2, 0);
            Figures[6, 2, 3] = new Vector2(1, 1);
            Figures[6, 3, 0] = new Vector2(2, 0);
            Figures[6, 3, 1] = new Vector2(2, 1);
            Figures[6, 3, 2] = new Vector2(2, 2);
            Figures[6, 3, 3] = new Vector2(1, 1);
            #endregion

            nextFigures.Enqueue(random.Next(7));
            nextFigures.Enqueue(random.Next(7));
            nextFigures.Enqueue(random.Next(7));
            nextFigures.Enqueue(random.Next(7));

            nextFiguresModification.Enqueue(random.Next(4));
            nextFiguresModification.Enqueue(random.Next(4));
            nextFiguresModification.Enqueue(random.Next(4));
            nextFiguresModification.Enqueue(random.Next(4));
        }