/**** 
* Classes
****/
var Cursor = Container.expand(function (initialCost, cps) {
	var self = Container.call(this);
	self.cost = initialCost;
	self.cps = cps; // cookies per second
	self.amount = 0;
	self.purchase = function () {
		if (game.score >= self.cost) {
			game.score -= self.cost;
			self.amount++;
			self.cost = Math.ceil(self.cost * 1.15); // Increase cost by 15% for the next purchase
			game.scoreText.setText(game.score.toString());
			// Update the display for the number of Cursors and the next cost
			self.cursorText.setText('Cursors: ' + self.amount + ' - Next Cost: ' + self.cost + ' Cookies');
			// Visual feedback for Cursor purchase
			LK.effects.flashObject(self.cursorText, 0x00ff00, 100);
		}
	};
	self.generateCookies = function () {
		// Generate cookies from Cursors every second
		var cookiesPerSecond = self.amount * self.cps;
		LK.setInterval(function () {
			game.incrementScore(cookiesPerSecond);
		}, 1000);
	};
	// Start generating cookies when a Cursor is created
	self.generateCookies();
	// Display the number of Cursors and the next cost
	self.cursorText = new Text2('Cursors: ' + self.amount + ' - Next Cost: ' + self.cost + ' Cookies', {
		size: 50,
		fill: "#ffffff",
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.cursorText.x = -self.width / 2;
	self.addChild(self.cursorText);
	self.interactive = true;
	self.buttonMode = true;
	self.on('down', self.purchase);
});
var ClickableCookie = Container.expand(function () {
	var self = Container.call(this);
	var cookieGraphic = self.attachAsset('cookie', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.interactive = true;
	self.buttonMode = true;
	self.clickMultiplier = 2;
	self.on('down', function () {
		game.incrementScore(self.clickMultiplier);
		// Visual feedback for cookie click
		LK.effects.flashObject(self, 0xffff00, 100);
		self.scaleX = 1.1;
		self.scaleY = 1.1;
		LK.setTimeout(function () {
			self.scaleX = 1;
			self.scaleY = 1;
		}, 100);
		// Sound functionality is not available
	});
	self.setMultiplier = function (multiplier) {
		self.clickMultiplier = multiplier;
	};
});
var Upgrade = Container.expand(function (name, cost, multiplier) {
	var self = Container.call(this);
	self.name = name;
	self.cost = cost;
	self.multiplier = multiplier;
	self.level = 0;
	// Display the upgrade information
	self.upgradeText = new Text2(self.name + ': Cost ' + self.cost + ' - Multiplier: ' + self.multiplier, {
		size: 50,
		fill: "#ffffff",
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.upgradeText.x = -self.width / 2;
	self.addChild(self.upgradeText);
	self.interactive = true;
	self.buttonMode = true;
	self.on('down', function () {
		if (game.score >= self.cost) {
			game.score -= self.cost;
			game.cookie.setMultiplier(game.cookie.clickMultiplier * self.multiplier);
			self.level++;
			self.cost = Math.ceil(self.cost * 1.15); // Increase cost by 15% for the next level
			game.scoreText.setText(game.score.toString());
			// Update the display for the upgrade level and the next cost
			self.upgradeText.setText(self.name + ': Cost ' + self.cost + ' - Multiplier: ' + self.multiplier + ' - Level: ' + self.level);
			// Visual feedback for upgrade purchase
			LK.effects.flashObject(self.upgradeText, 0x00ff00, 100);
		}
	});
});
/**** 
* Initialize Game
****/
var game = new LK.Game({
	backgroundColor: 0x476cd0
});
/**** 
* Game Code
****/
var background = game.addChild(LK.getAsset('background', {
	anchorX: 0.0,
	anchorY: 0.0,
	x: 0,
	y: 0
}));
game.score = 0;
game.cursor = game.addChild(new Cursor(10, 2)); // Initial cost: 10, Initial cookies per second: 2
game.cursor.x = 2048 / 2 - 150;
game.cursor.y = 2732 / 2 - 300;
game.cookie = game.addChild(new ClickableCookie());
game.cookie.x = 2048 / 2;
game.cookie.y = 2732 / 2;
game.scoreText = new Text2('0', {
	size: 150,
	fill: "#ffffff",
	anchorX: 0.5,
	anchorY: 0
});
LK.gui.top.addChild(game.scoreText);
game.incrementScore = function (amount) {
	amount = amount || 1;
	game.score += amount;
	game.scoreText.setText(game.score.toString());
	game.unlockUpgrades();
};
var upgrades = [{}, {
	name: 'Sprinkle Spritzer',
	cost: 10,
	multiplier: 2,
	level: 0
}, {
	name: 'Choco-Mixer',
	cost: 50,
	multiplier: 5,
	level: 0
}, {
	name: 'Caramelizer',
	cost: 100,
	multiplier: 10,
	level: 0
}, {
	name: 'Jelly Jamboree',
	cost: 200,
	multiplier: 20,
	level: 0
}, {
	name: 'Muffin Master',
	cost: 500,
	multiplier: 50,
	level: 0
}, {
	name: 'Cookie Treehouse',
	cost: 1000,
	multiplier: 100,
	level: 0
}, {
	name: 'Quantum Doughinator',
	cost: 2000,
	multiplier: 200,
	level: 0
}, {
	name: 'Galactic Ovenlord',
	cost: 5000,
	multiplier: 500,
	level: 0
}];
game.availableUpgrades = [];
game.unlockUpgrades = function () {
	upgrades.forEach(function (upgrade, index) {
		if (game.score >= upgrade.cost / 2 && !game.availableUpgrades.some(function (u) {
			return u.name === upgrade.name;
		})) {
			var upgradeInstance = new Upgrade(upgrade.name, upgrade.cost, upgrade.multiplier);
			game.availableUpgrades.push(upgradeInstance);
			upgradeInstance.x = 150;
			upgradeInstance.y = 2732 / 2 + 150 * game.availableUpgrades.length;
			game.addChild(upgradeInstance);
		}
	});
};
game.unlockUpgrades(); /**** 
* Classes
****/
var Cursor = Container.expand(function (initialCost, cps) {
	var self = Container.call(this);
	self.cost = initialCost;
	self.cps = cps; // cookies per second
	self.amount = 0;
	self.purchase = function () {
		if (game.score >= self.cost) {
			game.score -= self.cost;
			self.amount++;
			self.cost = Math.ceil(self.cost * 1.15); // Increase cost by 15% for the next purchase
			game.scoreText.setText(game.score.toString());
			// Update the display for the number of Cursors and the next cost
			self.cursorText.setText('Cursors: ' + self.amount + ' - Next Cost: ' + self.cost + ' Cookies');
			// Visual feedback for Cursor purchase
			LK.effects.flashObject(self.cursorText, 0x00ff00, 100);
		}
	};
	self.generateCookies = function () {
		// Generate cookies from Cursors every second
		var cookiesPerSecond = self.amount * self.cps;
		LK.setInterval(function () {
			game.incrementScore(cookiesPerSecond);
		}, 1000);
	};
	// Start generating cookies when a Cursor is created
	self.generateCookies();
	// Display the number of Cursors and the next cost
	self.cursorText = new Text2('Cursors: ' + self.amount + ' - Next Cost: ' + self.cost + ' Cookies', {
		size: 50,
		fill: "#ffffff",
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.cursorText.x = -self.width / 2;
	self.addChild(self.cursorText);
	self.interactive = true;
	self.buttonMode = true;
	self.on('down', self.purchase);
});
var ClickableCookie = Container.expand(function () {
	var self = Container.call(this);
	var cookieGraphic = self.attachAsset('cookie', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.interactive = true;
	self.buttonMode = true;
	self.clickMultiplier = 2;
	self.on('down', function () {
		game.incrementScore(self.clickMultiplier);
		// Visual feedback for cookie click
		LK.effects.flashObject(self, 0xffff00, 100);
		self.scaleX = 1.1;
		self.scaleY = 1.1;
		LK.setTimeout(function () {
			self.scaleX = 1;
			self.scaleY = 1;
		}, 100);
		// Sound functionality is not available
	});
	self.setMultiplier = function (multiplier) {
		self.clickMultiplier = multiplier;
	};
});
var Upgrade = Container.expand(function (name, cost, multiplier) {
	var self = Container.call(this);
	self.name = name;
	self.cost = cost;
	self.multiplier = multiplier;
	self.level = 0;
	// Display the upgrade information
	self.upgradeText = new Text2(self.name + ': Cost ' + self.cost + ' - Multiplier: ' + self.multiplier, {
		size: 50,
		fill: "#ffffff",
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.upgradeText.x = -self.width / 2;
	self.addChild(self.upgradeText);
	self.interactive = true;
	self.buttonMode = true;
	self.on('down', function () {
		if (game.score >= self.cost) {
			game.score -= self.cost;
			game.cookie.setMultiplier(game.cookie.clickMultiplier * self.multiplier);
			self.level++;
			self.cost = Math.ceil(self.cost * 1.15); // Increase cost by 15% for the next level
			game.scoreText.setText(game.score.toString());
			// Update the display for the upgrade level and the next cost
			self.upgradeText.setText(self.name + ': Cost ' + self.cost + ' - Multiplier: ' + self.multiplier + ' - Level: ' + self.level);
			// Visual feedback for upgrade purchase
			LK.effects.flashObject(self.upgradeText, 0x00ff00, 100);
		}
	});
});
/**** 
* Initialize Game
****/
var game = new LK.Game({
	backgroundColor: 0x476cd0
});
/**** 
* Game Code
****/
var background = game.addChild(LK.getAsset('background', {
	anchorX: 0.0,
	anchorY: 0.0,
	x: 0,
	y: 0
}));
game.score = 0;
game.cursor = game.addChild(new Cursor(10, 2)); // Initial cost: 10, Initial cookies per second: 2
game.cursor.x = 2048 / 2 - 150;
game.cursor.y = 2732 / 2 - 300;
game.cookie = game.addChild(new ClickableCookie());
game.cookie.x = 2048 / 2;
game.cookie.y = 2732 / 2;
game.scoreText = new Text2('0', {
	size: 150,
	fill: "#ffffff",
	anchorX: 0.5,
	anchorY: 0
});
LK.gui.top.addChild(game.scoreText);
game.incrementScore = function (amount) {
	amount = amount || 1;
	game.score += amount;
	game.scoreText.setText(game.score.toString());
	game.unlockUpgrades();
};
var upgrades = [{}, {
	name: 'Sprinkle Spritzer',
	cost: 10,
	multiplier: 2,
	level: 0
}, {
	name: 'Choco-Mixer',
	cost: 50,
	multiplier: 5,
	level: 0
}, {
	name: 'Caramelizer',
	cost: 100,
	multiplier: 10,
	level: 0
}, {
	name: 'Jelly Jamboree',
	cost: 200,
	multiplier: 20,
	level: 0
}, {
	name: 'Muffin Master',
	cost: 500,
	multiplier: 50,
	level: 0
}, {
	name: 'Cookie Treehouse',
	cost: 1000,
	multiplier: 100,
	level: 0
}, {
	name: 'Quantum Doughinator',
	cost: 2000,
	multiplier: 200,
	level: 0
}, {
	name: 'Galactic Ovenlord',
	cost: 5000,
	multiplier: 500,
	level: 0
}];
game.availableUpgrades = [];
game.unlockUpgrades = function () {
	upgrades.forEach(function (upgrade, index) {
		if (game.score >= upgrade.cost / 2 && !game.availableUpgrades.some(function (u) {
			return u.name === upgrade.name;
		})) {
			var upgradeInstance = new Upgrade(upgrade.name, upgrade.cost, upgrade.multiplier);
			game.availableUpgrades.push(upgradeInstance);
			upgradeInstance.x = 150;
			upgradeInstance.y = 2732 / 2 + 150 * game.availableUpgrades.length;
			game.addChild(upgradeInstance);
		}
	});
};
game.unlockUpgrades();