Beispiel #1
0
        private bool OnStart()
        {
            var backbufferWidth  = (float)GraphicsDevice.BackbufferWidth();
            var backbufferHeight = (float)GraphicsDevice.BackbufferHeight();

            // Init area.
            var borderThickness = 32.0f;

            var area = new Rectf(borderThickness,
                                 borderThickness,
                                 backbufferWidth - borderThickness * 2.0f,
                                 backbufferHeight - borderThickness);

            // Create player.
            var playerSize = new Vector2(128.0f, 32.0f);

            var playerPosition = new Vector2(area.Right - area.width / 2.0f,
                                             area.Bottom - borderThickness * 4.0f);

            player           = new Player(playerPosition, playerSize, area);
            player.Rect.Fill = Color.Green;

            // Create borders.
            var borderElements = new Rectangle[4];

            // Right.
            borderElements[0] = new Rectangle(new Vector2(backbufferWidth - borderThickness / 2.0f, backbufferHeight / 2.0f),
                                              new Vector2(borderThickness, backbufferHeight));

            // Left.
            borderElements[1] = new Rectangle(new Vector2(borderThickness / 2.0f, backbufferHeight / 2.0f),
                                              new Vector2(borderThickness, backbufferHeight));

            // Top.
            borderElements[2] = new Rectangle(new Vector2(backbufferWidth / 2.0f, borderThickness / 2.0f),
                                              new Vector2(backbufferWidth - borderThickness, borderThickness));

            // Bottom.
            borderElements[3] = new Rectangle(new Vector2(backbufferWidth / 2.0f, backbufferHeight - borderThickness / 2.0f),
                                              new Vector2(backbufferWidth - borderThickness, borderThickness));

            // Create ball.
            const float radius = 32.0f;

            var playerTransform = player.Rect.Transform;

            ball = new Ball(new Vector2(playerTransform.position.x + player.Rect.LocalBounds.width / 2.0f,
                                        playerTransform.position.y - player.Rect.LocalBounds.height * 2.0f), radius,
                            new Rectf[] { borderElements[0].GlobalBounds, borderElements[1].GlobalBounds, borderElements[2].GlobalBounds, borderElements[3].GlobalBounds });

            ball.Circle.Fill       = Color.Green;
            ball.Circle.BorderFill = new Color(125, 125, 0, 255);

            // Create 8x8 grid of bricks.
            bricks = new List <Rectangle>();

            // Offset.
            const float rows    = 8.0f;
            const float columns = 8.0f;
            const float boff    = 64.0f;

            // Start x and y.
            var bsx = area.Left + boff;
            var bsy = area.Top + boff;

            // Width and height.
            var bw = (area.width - boff * 2.0f) / columns;
            var bh = (area.height / 2.0f) / rows;

            for (var h = 0; h < 8; h++)
            {
                for (var w = 0; w < 8; w++)
                {
                    var x = bsx + w * bw;
                    var y = bsy + h * bh;

                    var brick = new Rectangle(x, y, bw, bh);

                    var color = new Color((float)rand.NextDouble(),
                                          (float)rand.NextDouble(),
                                          (float)rand.NextDouble(),
                                          (float)rand.NextDouble());

                    var transform = brick.Transform;

                    transform.origin = Vector3.Zero;

                    brick.Transform = transform;
                    brick.Fill      = color;

                    bricks.Add(brick);
                }
            }

            // Create layer and add elements.
            var layer = Layers.CreateDynamic("bottom");

            layer.Add(player.Rect);
            layer.Add(ball.Circle);

            foreach (var element in borderElements)
            {
                layer.Add(element);
            }
            foreach (var element in bricks)
            {
                layer.Add(element);
            }

            return(true);
        }