/****
* Classes
****/
//<Assets used in the game will automatically appear here>
// Car class
var Car = Container.expand(function () {
  var self = Container.call(this);
  var carGraphics = self.attachAsset('car', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 5;
  self.update = function () {
    self.y += self.speed;
  };
});
// Obstacle class
var Obstacle = Container.expand(function () {
  var self = Container.call(this);
  var obstacleGraphics = self.attachAsset('obstacle', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 3;
  self.update = function () {
    self.y += self.speed;
  };
});
// Player class
var Player = Container.expand(function () {
  var self = Container.call(this);
  var playerGraphics = self.attachAsset('player', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 10;
  self.update = function () {
    // Player update logic
  };
  self.move = function (x, y, obj) {
    self.x = x;
    self.y = y;
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 //Init game with black background 
});
/****
* Game Code
****/
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 - 200;
// Initialize arrays for cars and obstacles
var cars = [];
var obstacles = [];
// Handle player movement
game.move = function (x, y, obj) {
  player.move(x, y, obj);
};
// Game update logic
game.update = function () {
  // Update player
  player.update();
  // Update cars
  for (var i = cars.length - 1; i >= 0; i--) {
    cars[i].update();
    if (cars[i].y > 2732) {
      cars[i].destroy();
      cars.splice(i, 1);
    }
  }
  // Update obstacles
  for (var j = obstacles.length - 1; j >= 0; j--) {
    obstacles[j].update();
    if (obstacles[j].y > 2732) {
      obstacles[j].destroy();
      obstacles.splice(j, 1);
    }
  }
  // Spawn new car
  if (LK.ticks % 60 == 0) {
    var newCar = new Car();
    newCar.x = Math.random() * 2048;
    newCar.y = -100;
    cars.push(newCar);
    game.addChild(newCar);
  }
  // Spawn new obstacle
  if (LK.ticks % 120 == 0) {
    var newObstacle = new Obstacle();
    newObstacle.x = Math.random() * 2048;
    newObstacle.y = -100;
    obstacles.push(newObstacle);
    game.addChild(newObstacle);
  }
  // Check for collisions
  for (var k = 0; k < cars.length; k++) {
    if (player.intersects(cars[k])) {
      LK.effects.flashScreen(0xff0000, 1000);
      LK.showGameOver();
    }
  }
  for (var l = 0; l < obstacles.length; l++) {
    if (player.intersects(obstacles[l])) {
      LK.effects.flashScreen(0xff0000, 1000);
      LK.showGameOver();
    }
  }
}; /****
* Classes
****/
//<Assets used in the game will automatically appear here>
// Car class
var Car = Container.expand(function () {
  var self = Container.call(this);
  var carGraphics = self.attachAsset('car', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 5;
  self.update = function () {
    self.y += self.speed;
  };
});
// Obstacle class
var Obstacle = Container.expand(function () {
  var self = Container.call(this);
  var obstacleGraphics = self.attachAsset('obstacle', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 3;
  self.update = function () {
    self.y += self.speed;
  };
});
// Player class
var Player = Container.expand(function () {
  var self = Container.call(this);
  var playerGraphics = self.attachAsset('player', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 10;
  self.update = function () {
    // Player update logic
  };
  self.move = function (x, y, obj) {
    self.x = x;
    self.y = y;
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 //Init game with black background 
});
/****
* Game Code
****/
// Initialize player
var player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 - 200;
// Initialize arrays for cars and obstacles
var cars = [];
var obstacles = [];
// Handle player movement
game.move = function (x, y, obj) {
  player.move(x, y, obj);
};
// Game update logic
game.update = function () {
  // Update player
  player.update();
  // Update cars
  for (var i = cars.length - 1; i >= 0; i--) {
    cars[i].update();
    if (cars[i].y > 2732) {
      cars[i].destroy();
      cars.splice(i, 1);
    }
  }
  // Update obstacles
  for (var j = obstacles.length - 1; j >= 0; j--) {
    obstacles[j].update();
    if (obstacles[j].y > 2732) {
      obstacles[j].destroy();
      obstacles.splice(j, 1);
    }
  }
  // Spawn new car
  if (LK.ticks % 60 == 0) {
    var newCar = new Car();
    newCar.x = Math.random() * 2048;
    newCar.y = -100;
    cars.push(newCar);
    game.addChild(newCar);
  }
  // Spawn new obstacle
  if (LK.ticks % 120 == 0) {
    var newObstacle = new Obstacle();
    newObstacle.x = Math.random() * 2048;
    newObstacle.y = -100;
    obstacles.push(newObstacle);
    game.addChild(newObstacle);
  }
  // Check for collisions
  for (var k = 0; k < cars.length; k++) {
    if (player.intersects(cars[k])) {
      LK.effects.flashScreen(0xff0000, 1000);
      LK.showGameOver();
    }
  }
  for (var l = 0; l < obstacles.length; l++) {
    if (player.intersects(obstacles[l])) {
      LK.effects.flashScreen(0xff0000, 1000);
      LK.showGameOver();
    }
  }
};