/****
* Classes
****/
// Assets will be automatically created based on usage in the code.
// Ball class
var Ball = Container.expand(function () {
  var self = Container.call(this);
  var ballGraphics = self.attachAsset('ball', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speedX = 5;
  self.speedY = -5;
  self.move = function () {
    self.x += self.speedX;
    self.y += self.speedY;
  };
});
// Brick class
var Brick = Container.expand(function () {
  var self = Container.call(this);
  var brickGraphics = self.attachAsset('brick', {
    anchorX: 0.5,
    anchorY: 0.5
  });
});
// Paddle class
var Paddle = Container.expand(function () {
  var self = Container.call(this);
  var paddleGraphics = self.attachAsset('paddle', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.move = function (xPosition) {
    self.x = xPosition;
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 // Init game with black background 
});
/****
* Game Code
****/
var ball = game.addChild(new Ball());
ball.x = 1024; // Center horizontally
ball.y = 1366; // Center vertically
var paddle = game.addChild(new Paddle());
paddle.x = 1024; // Center horizontally
paddle.y = 2500; // Position towards the bottom
var bricks = [];
var brickRowCount = 5;
var brickColumnCount = 8;
var brickWidth = 200;
var brickHeight = 100;
var brickPadding = 20;
var brickOffsetTop = 200;
var brickOffsetLeft = 204;
// Create bricks
for (var c = 0; c < brickColumnCount; c++) {
  for (var r = 0; r < brickRowCount; r++) {
    var brickX = c * (brickWidth + brickPadding) + brickOffsetLeft;
    var brickY = r * (brickHeight + brickPadding) + brickOffsetTop;
    var brick = game.addChild(new Brick());
    brick.x = brickX + brickWidth / 2;
    brick.y = brickY + brickHeight / 2;
    bricks.push(brick);
  }
}
// Handle touch move for paddle
game.on('move', function (obj) {
  var pos = obj.event.getLocalPosition(game);
  paddle.move(pos.x);
});
// Game tick
LK.on('tick', function () {
  ball.move();
  // Ball collision with walls
  if (ball.x <= 0 || ball.x >= 2048) {
    ball.speedX = -ball.speedX;
  }
  if (ball.y <= 0) {
    ball.speedY = -ball.speedY;
  }
  // Ball collision with paddle
  if (ball.intersects(paddle)) {
    ball.speedY = -ball.speedY;
  }
  // Ball collision with bricks
  for (var b = bricks.length - 1; b >= 0; b--) {
    if (ball.intersects(bricks[b])) {
      ball.speedY = -ball.speedY;
      bricks[b].destroy();
      bricks.splice(b, 1);
    }
  }
  // Game over condition
  if (ball.y >= 2732) {
    LK.showGameOver();
  }
}); /****
* Classes
****/
// Assets will be automatically created based on usage in the code.
// Ball class
var Ball = Container.expand(function () {
  var self = Container.call(this);
  var ballGraphics = self.attachAsset('ball', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speedX = 5;
  self.speedY = -5;
  self.move = function () {
    self.x += self.speedX;
    self.y += self.speedY;
  };
});
// Brick class
var Brick = Container.expand(function () {
  var self = Container.call(this);
  var brickGraphics = self.attachAsset('brick', {
    anchorX: 0.5,
    anchorY: 0.5
  });
});
// Paddle class
var Paddle = Container.expand(function () {
  var self = Container.call(this);
  var paddleGraphics = self.attachAsset('paddle', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.move = function (xPosition) {
    self.x = xPosition;
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 // Init game with black background 
});
/****
* Game Code
****/
var ball = game.addChild(new Ball());
ball.x = 1024; // Center horizontally
ball.y = 1366; // Center vertically
var paddle = game.addChild(new Paddle());
paddle.x = 1024; // Center horizontally
paddle.y = 2500; // Position towards the bottom
var bricks = [];
var brickRowCount = 5;
var brickColumnCount = 8;
var brickWidth = 200;
var brickHeight = 100;
var brickPadding = 20;
var brickOffsetTop = 200;
var brickOffsetLeft = 204;
// Create bricks
for (var c = 0; c < brickColumnCount; c++) {
  for (var r = 0; r < brickRowCount; r++) {
    var brickX = c * (brickWidth + brickPadding) + brickOffsetLeft;
    var brickY = r * (brickHeight + brickPadding) + brickOffsetTop;
    var brick = game.addChild(new Brick());
    brick.x = brickX + brickWidth / 2;
    brick.y = brickY + brickHeight / 2;
    bricks.push(brick);
  }
}
// Handle touch move for paddle
game.on('move', function (obj) {
  var pos = obj.event.getLocalPosition(game);
  paddle.move(pos.x);
});
// Game tick
LK.on('tick', function () {
  ball.move();
  // Ball collision with walls
  if (ball.x <= 0 || ball.x >= 2048) {
    ball.speedX = -ball.speedX;
  }
  if (ball.y <= 0) {
    ball.speedY = -ball.speedY;
  }
  // Ball collision with paddle
  if (ball.intersects(paddle)) {
    ball.speedY = -ball.speedY;
  }
  // Ball collision with bricks
  for (var b = bricks.length - 1; b >= 0; b--) {
    if (ball.intersects(bricks[b])) {
      ball.speedY = -ball.speedY;
      bricks[b].destroy();
      bricks.splice(b, 1);
    }
  }
  // Game over condition
  if (ball.y >= 2732) {
    LK.showGameOver();
  }
});