/****
* Classes
****/
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for the House
var House = Container.expand(function () {
  var self = Container.call(this);
  var houseGraphics = self.attachAsset('house', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.health = 100;
  self.takeDamage = function (amount) {
    self.health -= amount;
    if (self.health <= 0) {
      LK.showGameOver();
    }
  };
});
// Class for the Intruder
var Intruder = Container.expand(function () {
  var self = Container.call(this);
  var intruderGraphics = self.attachAsset('intruder', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 2;
  self.update = function () {
    self.y += self.speed;
    if (self.intersects(house)) {
      house.takeDamage(10);
      self.destroy();
    }
  };
});
// Class for the Trap
var Trap = Container.expand(function () {
  var self = Container.call(this);
  var trapGraphics = self.attachAsset('trap', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.activate = function (intruder) {
    intruder.destroy();
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 //Init game with black background 
});
/****
* Game Code
****/
// Initialize house
var house = game.addChild(new House());
house.x = 2048 / 2;
house.y = 2732 - 200;
// Array to keep track of intruders
var intruders = [];
// Array to keep track of traps
var traps = [];
// Function to spawn intruders
function spawnIntruder() {
  var intruder = new Intruder();
  intruder.x = Math.random() * 2048;
  intruder.y = 0;
  intruders.push(intruder);
  game.addChild(intruder);
}
// Function to place a trap
function placeTrap(x, y) {
  var trap = new Trap();
  trap.x = x;
  trap.y = y;
  traps.push(trap);
  game.addChild(trap);
}
// Handle game updates
game.update = function () {
  // Update intruders
  for (var i = intruders.length - 1; i >= 0; i--) {
    intruders[i].update();
    if (intruders[i].y > 2732) {
      intruders[i].destroy();
      intruders.splice(i, 1);
    }
  }
  // Check for trap activation
  for (var j = traps.length - 1; j >= 0; j--) {
    for (var k = intruders.length - 1; k >= 0; k--) {
      if (traps[j].intersects(intruders[k])) {
        traps[j].activate(intruders[k]);
        traps[j].destroy();
        traps.splice(j, 1);
        break;
      }
    }
  }
  // Spawn intruders periodically
  if (LK.ticks % 120 == 0) {
    spawnIntruder();
  }
};
// Handle placing traps on touch
game.down = function (x, y, obj) {
  placeTrap(x, y);
}; /****
* Classes
****/
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Class for the House
var House = Container.expand(function () {
  var self = Container.call(this);
  var houseGraphics = self.attachAsset('house', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.health = 100;
  self.takeDamage = function (amount) {
    self.health -= amount;
    if (self.health <= 0) {
      LK.showGameOver();
    }
  };
});
// Class for the Intruder
var Intruder = Container.expand(function () {
  var self = Container.call(this);
  var intruderGraphics = self.attachAsset('intruder', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.speed = 2;
  self.update = function () {
    self.y += self.speed;
    if (self.intersects(house)) {
      house.takeDamage(10);
      self.destroy();
    }
  };
});
// Class for the Trap
var Trap = Container.expand(function () {
  var self = Container.call(this);
  var trapGraphics = self.attachAsset('trap', {
    anchorX: 0.5,
    anchorY: 0.5
  });
  self.activate = function (intruder) {
    intruder.destroy();
  };
});
/****
* Initialize Game
****/
var game = new LK.Game({
  backgroundColor: 0x000000 //Init game with black background 
});
/****
* Game Code
****/
// Initialize house
var house = game.addChild(new House());
house.x = 2048 / 2;
house.y = 2732 - 200;
// Array to keep track of intruders
var intruders = [];
// Array to keep track of traps
var traps = [];
// Function to spawn intruders
function spawnIntruder() {
  var intruder = new Intruder();
  intruder.x = Math.random() * 2048;
  intruder.y = 0;
  intruders.push(intruder);
  game.addChild(intruder);
}
// Function to place a trap
function placeTrap(x, y) {
  var trap = new Trap();
  trap.x = x;
  trap.y = y;
  traps.push(trap);
  game.addChild(trap);
}
// Handle game updates
game.update = function () {
  // Update intruders
  for (var i = intruders.length - 1; i >= 0; i--) {
    intruders[i].update();
    if (intruders[i].y > 2732) {
      intruders[i].destroy();
      intruders.splice(i, 1);
    }
  }
  // Check for trap activation
  for (var j = traps.length - 1; j >= 0; j--) {
    for (var k = intruders.length - 1; k >= 0; k--) {
      if (traps[j].intersects(intruders[k])) {
        traps[j].activate(intruders[k]);
        traps[j].destroy();
        traps.splice(j, 1);
        break;
      }
    }
  }
  // Spawn intruders periodically
  if (LK.ticks % 120 == 0) {
    spawnIntruder();
  }
};
// Handle placing traps on touch
game.down = function (x, y, obj) {
  placeTrap(x, y);
};