/**** 
* Classes
****/ 
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Class for the Couple
var Couple = Container.expand(function () {
	var self = Container.call(this);
	var coupleGraphics = self.attachAsset('couple', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.lives = 3;
	self.update = function () {
		// Update logic for the couple
	};
	self.loseLife = function () {
		self.lives -= 1;
		if (self.lives <= 0) {
			LK.showGameOver();
		}
	};
});
// Class for Falling Objects
var FallingObject = Container.expand(function (type) {
	var self = Container.call(this);
	var assetId = type === 'heart' ? 'heart' : type === 'scream' ? 'scream' : 'slap';
	var fallingObjectGraphics = self.attachAsset(assetId, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.type = type;
	self.speed = FallingObject.prototype.speed || 10;
	self.update = function () {
		self.y += self.speed;
		if (self.y > 2732) {
			if (self.type === 'heart') {
				fallenHearts++;
				if (fallenHearts >= 5) {
					LK.showGameOver();
				}
			}
			self.destroy();
		}
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game();
/**** 
* Game Code
****/ 
LK.playMusic('gameMusic');
var background = game.attachAsset('Background', {
	anchorX: 0,
	anchorY: 0,
	width: 2048,
	height: 2732
});
// Initialize game variables
var couple = game.addChild(new Couple());
couple.x = 2048 / 2;
couple.y = 2732 - 200;
var fallingObjects = [];
var score = 0;
var gameTime = 0;
var fallenHearts = 0; // New variable to keep track of fallen hearts
// Function to handle movement
function handleMove(x, y, obj) {
	couple.x = x;
}
// Function to spawn falling objects
function spawnFallingObject(type) {
	var newObject = new FallingObject(type);
	newObject.y = 0;
	// Ensure that no object have the same position in the horizontal line
	do {
		newObject.x = Math.random() * (2048 - newObject.width);
		var overlap = false;
		for (var i = 0; i < fallingObjects.length; i++) {
			if (Math.abs(newObject.x - fallingObjects[i].x) < newObject.width + 100) {
				// 100 pixels is approximately 1 cm on most screens
				overlap = true;
				break;
			}
		}
	} while (overlap);
	fallingObjects.push(newObject);
	game.addChild(newObject);
}
// Game update function
game.update = function () {
	for (var i = fallingObjects.length - 1; i >= 0; i--) {
		if (fallingObjects[i].intersects(couple)) {
			if (fallingObjects[i].type === 'heart') {
				score += 10;
			} else {
				couple.loseLife();
			}
			fallingObjects[i].destroy();
			fallingObjects.splice(i, 1);
		}
	}
	if (LK.ticks % 240 === 0) {
		gameTime++;
		if (gameTime % 10 === 0) {
			FallingObject.prototype.speed += 5;
		}
		if (Math.random() < 0.52) {
			for (var i = 0; i < 3; i++) {
				spawnFallingObject('scream');
				spawnFallingObject('slap');
			}
		}
	}
	if (LK.ticks % 120 === 0) {
		spawnFallingObject('heart');
	}
};
// Event listeners
game.move = handleMove;
game.down = handleMove;
game.up = function (x, y, obj) {
	// Handle touch release
}; /**** 
* Classes
****/ 
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Class for the Couple
var Couple = Container.expand(function () {
	var self = Container.call(this);
	var coupleGraphics = self.attachAsset('couple', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.lives = 3;
	self.update = function () {
		// Update logic for the couple
	};
	self.loseLife = function () {
		self.lives -= 1;
		if (self.lives <= 0) {
			LK.showGameOver();
		}
	};
});
// Class for Falling Objects
var FallingObject = Container.expand(function (type) {
	var self = Container.call(this);
	var assetId = type === 'heart' ? 'heart' : type === 'scream' ? 'scream' : 'slap';
	var fallingObjectGraphics = self.attachAsset(assetId, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.type = type;
	self.speed = FallingObject.prototype.speed || 10;
	self.update = function () {
		self.y += self.speed;
		if (self.y > 2732) {
			if (self.type === 'heart') {
				fallenHearts++;
				if (fallenHearts >= 5) {
					LK.showGameOver();
				}
			}
			self.destroy();
		}
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game();
/**** 
* Game Code
****/ 
LK.playMusic('gameMusic');
var background = game.attachAsset('Background', {
	anchorX: 0,
	anchorY: 0,
	width: 2048,
	height: 2732
});
// Initialize game variables
var couple = game.addChild(new Couple());
couple.x = 2048 / 2;
couple.y = 2732 - 200;
var fallingObjects = [];
var score = 0;
var gameTime = 0;
var fallenHearts = 0; // New variable to keep track of fallen hearts
// Function to handle movement
function handleMove(x, y, obj) {
	couple.x = x;
}
// Function to spawn falling objects
function spawnFallingObject(type) {
	var newObject = new FallingObject(type);
	newObject.y = 0;
	// Ensure that no object have the same position in the horizontal line
	do {
		newObject.x = Math.random() * (2048 - newObject.width);
		var overlap = false;
		for (var i = 0; i < fallingObjects.length; i++) {
			if (Math.abs(newObject.x - fallingObjects[i].x) < newObject.width + 100) {
				// 100 pixels is approximately 1 cm on most screens
				overlap = true;
				break;
			}
		}
	} while (overlap);
	fallingObjects.push(newObject);
	game.addChild(newObject);
}
// Game update function
game.update = function () {
	for (var i = fallingObjects.length - 1; i >= 0; i--) {
		if (fallingObjects[i].intersects(couple)) {
			if (fallingObjects[i].type === 'heart') {
				score += 10;
			} else {
				couple.loseLife();
			}
			fallingObjects[i].destroy();
			fallingObjects.splice(i, 1);
		}
	}
	if (LK.ticks % 240 === 0) {
		gameTime++;
		if (gameTime % 10 === 0) {
			FallingObject.prototype.speed += 5;
		}
		if (Math.random() < 0.52) {
			for (var i = 0; i < 3; i++) {
				spawnFallingObject('scream');
				spawnFallingObject('slap');
			}
		}
	}
	if (LK.ticks % 120 === 0) {
		spawnFallingObject('heart');
	}
};
// Event listeners
game.move = handleMove;
game.down = handleMove;
game.up = function (x, y, obj) {
	// Handle touch release
};