/****
* Classes
****/
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Bullet class for both player and enemy bullets
var Bullet = Container.expand(function (type) {
  var self = Container.call(this);
  var bulletGraphics = self.attachAsset(type === 'player' ? 'playerBullet' : 'enemyBullet', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = type === 'player' ? -10 : 10; // Player bullets move up, enemy bullets move down
  self.update = function () {
    self.y += self.speed;
  };
});
// Enemy class
var Enemy = Container.expand(function () {
  var self = Container.call(this);
  var enemyGraphics = self.attachAsset('enemy', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.shoot = function () {
    var bullet = new Bullet('enemy');
    bullet.x = self.x;
    bullet.y = self.y + enemyGraphics.height / 2;
    game.addChild(bullet);
    enemyBullets.push(bullet);
  };
});
// Player class
var Player = Container.expand(function () {
  var self = Container.call(this);
  var playerGraphics = self.attachAsset('player', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.shoot = function () {
    var bullet = new Bullet('player');
    bullet.x = self.x;
    bullet.y = self.y - playerGraphics.height / 2;
    game.addChild(bullet);
    playerBullets.push(bullet);
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
var player = new Player();
player.x = 2048 / 2;
player.y = 2732 - 200;
game.addChild(player);
var enemies = [];
var playerBullets = [];
var enemyBullets = [];
// Create enemies
for (var i = 0; i < 5; i++) {
  var enemy = new Enemy();
  enemy.x = 400 + i * 300;
  enemy.y = 200;
  game.addChild(enemy);
  enemies.push(enemy);
}
// Handle player shooting
game.down = function (x, y, obj) {
  player.shoot();
};
// Game update loop
game.update = function () {
  // Update player bullets
  for (var i = playerBullets.length - 1; i >= 0; i--) {
    playerBullets[i].update();
    if (playerBullets[i].y < -50) {
      playerBullets[i].destroy();
      playerBullets.splice(i, 1);
    }
  }
  // Update enemy bullets
  for (var i = enemyBullets.length - 1; i >= 0; i--) {
    enemyBullets[i].update();
    if (enemyBullets[i].y > 2732 + 50) {
      enemyBullets[i].destroy();
      enemyBullets.splice(i, 1);
    }
  }
  // Enemy shooting logic
  if (LK.ticks % 60 === 0) {
    // Enemies shoot every second
    enemies.forEach(function (enemy) {
      enemy.shoot();
    });
  }
  // Check for collisions between player bullets and enemies
  for (var i = playerBullets.length - 1; i >= 0; i--) {
    for (var j = enemies.length - 1; j >= 0; j--) {
      if (playerBullets[i].intersects(enemies[j])) {
        playerBullets[i].destroy();
        playerBullets.splice(i, 1);
        enemies[j].destroy();
        enemies.splice(j, 1);
        break;
      }
    }
  }
  // Check for collisions between enemy bullets and player
  for (var i = enemyBullets.length - 1; i >= 0; i--) {
    if (enemyBullets[i].intersects(player)) {
      LK.effects.flashScreen(0xff0000, 1000);
      LK.showGameOver();
      break;
    }
  }
}; /****
* Classes
****/
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Bullet class for both player and enemy bullets
var Bullet = Container.expand(function (type) {
  var self = Container.call(this);
  var bulletGraphics = self.attachAsset(type === 'player' ? 'playerBullet' : 'enemyBullet', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = type === 'player' ? -10 : 10; // Player bullets move up, enemy bullets move down
  self.update = function () {
    self.y += self.speed;
  };
});
// Enemy class
var Enemy = Container.expand(function () {
  var self = Container.call(this);
  var enemyGraphics = self.attachAsset('enemy', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.shoot = function () {
    var bullet = new Bullet('enemy');
    bullet.x = self.x;
    bullet.y = self.y + enemyGraphics.height / 2;
    game.addChild(bullet);
    enemyBullets.push(bullet);
  };
});
// Player class
var Player = Container.expand(function () {
  var self = Container.call(this);
  var playerGraphics = self.attachAsset('player', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.shoot = function () {
    var bullet = new Bullet('player');
    bullet.x = self.x;
    bullet.y = self.y - playerGraphics.height / 2;
    game.addChild(bullet);
    playerBullets.push(bullet);
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 // Init game with black background
});
/****
* Game Code
****/
var player = new Player();
player.x = 2048 / 2;
player.y = 2732 - 200;
game.addChild(player);
var enemies = [];
var playerBullets = [];
var enemyBullets = [];
// Create enemies
for (var i = 0; i < 5; i++) {
  var enemy = new Enemy();
  enemy.x = 400 + i * 300;
  enemy.y = 200;
  game.addChild(enemy);
  enemies.push(enemy);
}
// Handle player shooting
game.down = function (x, y, obj) {
  player.shoot();
};
// Game update loop
game.update = function () {
  // Update player bullets
  for (var i = playerBullets.length - 1; i >= 0; i--) {
    playerBullets[i].update();
    if (playerBullets[i].y < -50) {
      playerBullets[i].destroy();
      playerBullets.splice(i, 1);
    }
  }
  // Update enemy bullets
  for (var i = enemyBullets.length - 1; i >= 0; i--) {
    enemyBullets[i].update();
    if (enemyBullets[i].y > 2732 + 50) {
      enemyBullets[i].destroy();
      enemyBullets.splice(i, 1);
    }
  }
  // Enemy shooting logic
  if (LK.ticks % 60 === 0) {
    // Enemies shoot every second
    enemies.forEach(function (enemy) {
      enemy.shoot();
    });
  }
  // Check for collisions between player bullets and enemies
  for (var i = playerBullets.length - 1; i >= 0; i--) {
    for (var j = enemies.length - 1; j >= 0; j--) {
      if (playerBullets[i].intersects(enemies[j])) {
        playerBullets[i].destroy();
        playerBullets.splice(i, 1);
        enemies[j].destroy();
        enemies.splice(j, 1);
        break;
      }
    }
  }
  // Check for collisions between enemy bullets and player
  for (var i = enemyBullets.length - 1; i >= 0; i--) {
    if (enemyBullets[i].intersects(player)) {
      LK.effects.flashScreen(0xff0000, 1000);
      LK.showGameOver();
      break;
    }
  }
};