示例#1
0
        public PlayingField(GraphicsDevice graphicsDevice, Texture2D texture)
        {
            _effect  = new BasicEffect(graphicsDevice);
            _texture = texture;

            var field = PlayingFields.GetQ();

            Floors   = field.Count;
            Height   = field[0].Length;
            Width    = field[0][0].Length;
            TheField = new PlayingFieldSquare[Floors, Height, Width];

            var builder = new PlayingFieldBuilder(TheField);

            for (var i = 0; i < field.Count; i++)
            {
                builder.ConstructOneFloor(
                    i,
                    field[i]);
            }

            var verts       = new List <VertexPositionNormalTexture>();
            var vertsShadow = new List <VertexPositionColor>();

            for (var z = 0; z < Floors; z++)
            {
                for (var y = 0; y < Height; y++)
                {
                    for (var x = 0; x < Width; x++)
                    {
                        if (!TheField[z, y, x].IsNone)
                        {
                            var start = x;
                            //for (x++; x < width && TheField[z, y, x - 1].PlayingFieldSquareType == TheField[z, y, x].PlayingFieldSquareType; x++)
                            //    ;
                            x++;
                            foobar(verts, vertsShadow, z, start, y, x - start, 1, TheField[z, y, x - 1].Corners);
                            x--;
                        }
                    }
                }
            }

            VertexBuffer = new VertexBuffer(graphicsDevice, typeof(VertexPositionNormalTexture), verts.Count, BufferUsage.None);
            VertexBuffer.SetData(verts.ToArray(), 0, verts.Count);

            VertexBufferShadow = new VertexBuffer(graphicsDevice, typeof(VertexPositionColor), vertsShadow.Count, BufferUsage.None);
            VertexBufferShadow.SetData(vertsShadow.ToArray(), 0, vertsShadow.Count);
        }
示例#2
0
        public PlayingField(GraphicsDevice graphicsDevice, Texture2D texture)
        {
            _effect = new BasicEffect(graphicsDevice);
            _texture = texture;

            var field = PlayingFields.GetQ();

            Floors = field.Count;
            Height = field[0].Length;
            Width = field[0][0].Length;
            TheField = new PlayingFieldSquare[Floors, Height, Width];

            var builder = new PlayingFieldBuilder(TheField);
            for (var i = 0; i < field.Count; i++)
                builder.ConstructOneFloor(
                    i,
                    field[i]);

            var verts = new List<VertexPositionNormalTexture>();
            var vertsShadow = new List<VertexPositionColor>();
            for (var z = 0; z < Floors; z++)
                for (var y = 0; y < Height; y++ )
                     for (var x = 0; x < Width; x++)
                        if (!TheField[z, y, x].IsNone )
                        {
                            var start = x;
                            //for (x++; x < width && TheField[z, y, x - 1].PlayingFieldSquareType == TheField[z, y, x].PlayingFieldSquareType; x++)
                            //    ;
                            x++;
                            foobar(verts, vertsShadow, z, start, y, x - start, 1, TheField[z, y, x - 1].Corners);
                            x--;
                        }

            VertexBuffer = new VertexBuffer(graphicsDevice, typeof(VertexPositionNormalTexture), verts.Count, BufferUsage.None);
            VertexBuffer.SetData(verts.ToArray(), 0, verts.Count);

            VertexBufferShadow = new VertexBuffer(graphicsDevice, typeof(VertexPositionColor), vertsShadow.Count, BufferUsage.None);
            VertexBufferShadow.SetData(vertsShadow.ToArray(), 0, vertsShadow.Count);
        }