/**** 
* Classes
****/ 
var Bowl = Container.expand(function () {
	var self = Container.call(this);
	var bowlGraphics = self.attachAsset('bowl', {
		anchorY: 1
	});
	self.x = 0;
	self.y = 2732 - bowlGraphics.height;
	self.height = bowlGraphics.height;
	self.containsPoint = function (point) {
		return point.x >= this.x && point.x <= this.x + this.width && point.y >= this.y - 300 && point.y <= this.y + this.height;
	};
	self.hasEgg = false;
	self.hasSugar = false;
	self.hasButter = false;
});
var Butter = Container.expand(function () {
	var self = Container.call(this);
	var butterGraphics = self.attachAsset('butter', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.containsPoint = function (point) {
		return point.x >= this.x - this.width / 2 && point.x <= this.x + this.width / 2 && point.y >= this.y - this.height / 2 && point.y <= this.y + this.height / 2;
	};
	self.unpack = function (bowl) {
		var unpackedButterGraphics = self.attachAsset('unpacked_butter', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.removeChild(butterGraphics);
		self.addChild(unpackedButterGraphics);
	};
});
var Cookie = Container.expand(function (scoreManager) {
	var self = Container.call(this);
	self.scoreManager = scoreManager;
	var cookieGraphics = self.attachAsset('cookie', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.bake = function () {};
	self.bitesLeft = 2;
	self.addBiteMark = function () {
		self.bitesLeft--;
		if (self.bitesLeft > 0) {
			var biteMarkGraphics = self.attachAsset('bitemark', {
				anchorX: 0.5,
				anchorY: 0.5
			});
			biteMarkGraphics.x = cookieGraphics.x;
			biteMarkGraphics.y = cookieGraphics.y;
			var h = 3 / 32;
			var s = 0.8;
			var v = 0.8;
			self.removeChild(cookieGraphics);
			self.addChild(biteMarkGraphics);
		} else {
			cookiesEaten++;
			if (cookiesEaten >= 24) {
				var gameOverImage = self.attachAsset('game_over_image', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				gameOverImage.x = 1024;
				gameOverImage.y = 1366;
				self.parent.addChild(gameOverImage);
				LK.gui.top.children.forEach(function (child) {
					if (child instanceof Text2) {
						child.setText('Good job! Bon appetit!\nGame Completed');
						child.visible = true;
					}
				});
				LK.setTimeout(function () {
					LK.setScore(1000000);
					LK.showGameOver();
				}, 5000);
			} else {
				self.destroy();
			}
		}
	};
	self.flyToRandomPosition = function () {
		var randomX = 200 + Math.random() * 1848;
		var randomY = 100 + Math.random() * (2532 / 2);
		self.elasticTween = function (start, end, duration, callback) {
			var delta = end - start;
			var startTime = LK.ticks;
			function easeInOutElastic(t, b, c, d) {
				t /= d / 2;
				if (t < 1) {
					return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
				}
				t--;
				return c / 2 * (-Math.pow(2, -10 * t) + 2) + b;
			}
			LK.on('tick', function () {
				var currentTime = LK.ticks - startTime;
				if (currentTime < duration) {
					var newPos = easeInOutElastic(currentTime, start, delta, duration);
					callback(newPos);
				} else {
					callback(end);
					LK.off('tick', this);
				}
			});
		};
		self.elasticTween(self.y, randomY, 120, function (newY) {
			self.y = newY;
		});
		self.elasticTween(self.x, randomX, 120, function (newX) {
			self.x = newX;
		});
	};
});
var Egg = Container.expand(function () {
	var self = Container.call(this);
	var eggGraphics = self.attachAsset('egg', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.containsPoint = function (point) {
		return point.x >= this.x - this.width / 2 && point.x <= this.x + this.width / 2 && point.y >= this.y - this.height / 2 && point.y <= this.y + this.height / 2;
	};
	self.crack = function () {
		var crackedEggGraphics = self.attachAsset('cracked_egg', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.removeChild(eggGraphics);
		self.addChild(crackedEggGraphics);
	};
});
var Sugar = Container.expand(function () {
	var self = Container.call(this);
	var sugarGraphics = self.attachAsset('sugar', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.containsPoint = function (point) {
		return point.x >= this.x - this.width / 2 && point.x <= this.x + this.width / 2 && point.y >= this.y - this.height / 2 && point.y <= this.y + this.height / 2;
	};
	self.pour = function (bowl) {
		var pouredSugarGraphics = self.attachAsset('poured_sugar', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.removeChild(sugarGraphics);
		self.addChild(pouredSugarGraphics);
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000
});
/**** 
* Game Code
****/ 
var cookiesEaten = 0;
var background = game.attachAsset('background', {});
background.width = 2048;
background.height = 2732;
background.alpha = 0.5;
game.addChildAt(background, 0);
var instructionText = new Text2('Tap on ingredients to add them to the bowls\nThen tap to mix, bake and eat the cookies :)', {
	size: 60,
	fill: '#ffdddd',
	align: 'center',
	dropShadow: true
});
instructionText.anchor.set(0.5, 0.4);
instructionText.y = 50;
LK.gui.top.addChild(instructionText);
game.on('down', function (x, y, obj) {
	instructionText.visible = false;
	var pos = game.toLocal(obj.global);
	bowls.forEach(function (bowl, index) {
		if (bowl.containsPoint(pos) && bowl.hasEgg && bowl.hasSugar && bowl.hasButter) {
			for (var j = 0; j < 3; j++) {
				var cookie = new Cookie();
				cookie.bake();
				cookie.x = bowl.x + bowl.width / 2;
				cookie.y = bowl.y - cookie.height / 2;
				cookie.rotation = Math.random() * (Math.PI * 2);
				game.addChild(cookie);
				cookies.push(cookie);
				cookie.flyToRandomPosition();
				cookie.on('down', function () {
					this.addBiteMark();
				});
			}
			bowls[index].destroy();
			bowls.splice(index, 1);
			sugars[index].destroy();
			sugars.splice(index, 1);
			butters[index].destroy();
			butters.splice(index, 1);
			eggs[index].destroy();
			eggs.splice(index, 1);
		}
	});
	eggs.forEach(function (egg, index) {
		if (egg.containsPoint(pos)) {
			egg.crack();
			var targetBowl = bowls[index % bowls.length];
			egg.x = targetBowl.x + targetBowl.width / 2 + 60;
			egg.y = targetBowl.y - egg.height - 50;
			targetBowl.hasEgg = true;
		}
	});
	butters.forEach(function (butter, index) {
		if (butter.containsPoint(pos)) {
			var targetBowl = bowls[index % bowls.length];
			butter.unpack(targetBowl);
			butter.x = targetBowl.x + targetBowl.width / 2 - 60;
			butter.y = targetBowl.y - butter.height - 50;
			targetBowl.hasButter = true;
		}
	});
	sugars.forEach(function (sugar, index) {
		if (sugar.containsPoint(pos)) {
			var targetBowl = bowls[index % bowls.length];
			sugar.pour();
			sugar.x = targetBowl.x + targetBowl.width / 2;
			sugar.y = targetBowl.y - sugar.height;
			targetBowl.hasSugar = true;
		}
	});
});
var bowls = [];
var sugars = [];
var eggs = [];
var butters = [];
var cookies = [];
for (var i = 0; i < 8; i++) {
	var bowl = new Bowl();
	bowl.x = i * (bowl.width + 10);
	bowls.push(bowl);
	game.addChild(bowl);
	var sugar = new Sugar();
	sugar.x = 200 + Math.random() * 1600;
	sugar.y = 200 + Math.random() * 2032;
	sugars.push(sugar);
	game.addChild(sugar);
	var butter = new Butter();
	butter.x = 200 + Math.random() * 1600;
	butter.y = 200 + Math.random() * 2032;
	butters.push(butter);
	game.addChild(butter);
	var egg = new Egg();
	egg.x = 200 + Math.random() * 1600;
	egg.y = 200 + Math.random() * 2032;
	eggs.push(egg);
	game.addChild(egg);
} /**** 
* Classes
****/ 
var Bowl = Container.expand(function () {
	var self = Container.call(this);
	var bowlGraphics = self.attachAsset('bowl', {
		anchorY: 1
	});
	self.x = 0;
	self.y = 2732 - bowlGraphics.height;
	self.height = bowlGraphics.height;
	self.containsPoint = function (point) {
		return point.x >= this.x && point.x <= this.x + this.width && point.y >= this.y - 300 && point.y <= this.y + this.height;
	};
	self.hasEgg = false;
	self.hasSugar = false;
	self.hasButter = false;
});
var Butter = Container.expand(function () {
	var self = Container.call(this);
	var butterGraphics = self.attachAsset('butter', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.containsPoint = function (point) {
		return point.x >= this.x - this.width / 2 && point.x <= this.x + this.width / 2 && point.y >= this.y - this.height / 2 && point.y <= this.y + this.height / 2;
	};
	self.unpack = function (bowl) {
		var unpackedButterGraphics = self.attachAsset('unpacked_butter', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.removeChild(butterGraphics);
		self.addChild(unpackedButterGraphics);
	};
});
var Cookie = Container.expand(function (scoreManager) {
	var self = Container.call(this);
	self.scoreManager = scoreManager;
	var cookieGraphics = self.attachAsset('cookie', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.bake = function () {};
	self.bitesLeft = 2;
	self.addBiteMark = function () {
		self.bitesLeft--;
		if (self.bitesLeft > 0) {
			var biteMarkGraphics = self.attachAsset('bitemark', {
				anchorX: 0.5,
				anchorY: 0.5
			});
			biteMarkGraphics.x = cookieGraphics.x;
			biteMarkGraphics.y = cookieGraphics.y;
			var h = 3 / 32;
			var s = 0.8;
			var v = 0.8;
			self.removeChild(cookieGraphics);
			self.addChild(biteMarkGraphics);
		} else {
			cookiesEaten++;
			if (cookiesEaten >= 24) {
				var gameOverImage = self.attachAsset('game_over_image', {
					anchorX: 0.5,
					anchorY: 0.5
				});
				gameOverImage.x = 1024;
				gameOverImage.y = 1366;
				self.parent.addChild(gameOverImage);
				LK.gui.top.children.forEach(function (child) {
					if (child instanceof Text2) {
						child.setText('Good job! Bon appetit!\nGame Completed');
						child.visible = true;
					}
				});
				LK.setTimeout(function () {
					LK.setScore(1000000);
					LK.showGameOver();
				}, 5000);
			} else {
				self.destroy();
			}
		}
	};
	self.flyToRandomPosition = function () {
		var randomX = 200 + Math.random() * 1848;
		var randomY = 100 + Math.random() * (2532 / 2);
		self.elasticTween = function (start, end, duration, callback) {
			var delta = end - start;
			var startTime = LK.ticks;
			function easeInOutElastic(t, b, c, d) {
				t /= d / 2;
				if (t < 1) {
					return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
				}
				t--;
				return c / 2 * (-Math.pow(2, -10 * t) + 2) + b;
			}
			LK.on('tick', function () {
				var currentTime = LK.ticks - startTime;
				if (currentTime < duration) {
					var newPos = easeInOutElastic(currentTime, start, delta, duration);
					callback(newPos);
				} else {
					callback(end);
					LK.off('tick', this);
				}
			});
		};
		self.elasticTween(self.y, randomY, 120, function (newY) {
			self.y = newY;
		});
		self.elasticTween(self.x, randomX, 120, function (newX) {
			self.x = newX;
		});
	};
});
var Egg = Container.expand(function () {
	var self = Container.call(this);
	var eggGraphics = self.attachAsset('egg', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.containsPoint = function (point) {
		return point.x >= this.x - this.width / 2 && point.x <= this.x + this.width / 2 && point.y >= this.y - this.height / 2 && point.y <= this.y + this.height / 2;
	};
	self.crack = function () {
		var crackedEggGraphics = self.attachAsset('cracked_egg', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.removeChild(eggGraphics);
		self.addChild(crackedEggGraphics);
	};
});
var Sugar = Container.expand(function () {
	var self = Container.call(this);
	var sugarGraphics = self.attachAsset('sugar', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.containsPoint = function (point) {
		return point.x >= this.x - this.width / 2 && point.x <= this.x + this.width / 2 && point.y >= this.y - this.height / 2 && point.y <= this.y + this.height / 2;
	};
	self.pour = function (bowl) {
		var pouredSugarGraphics = self.attachAsset('poured_sugar', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.removeChild(sugarGraphics);
		self.addChild(pouredSugarGraphics);
	};
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x000000
});
/**** 
* Game Code
****/ 
var cookiesEaten = 0;
var background = game.attachAsset('background', {});
background.width = 2048;
background.height = 2732;
background.alpha = 0.5;
game.addChildAt(background, 0);
var instructionText = new Text2('Tap on ingredients to add them to the bowls\nThen tap to mix, bake and eat the cookies :)', {
	size: 60,
	fill: '#ffdddd',
	align: 'center',
	dropShadow: true
});
instructionText.anchor.set(0.5, 0.4);
instructionText.y = 50;
LK.gui.top.addChild(instructionText);
game.on('down', function (x, y, obj) {
	instructionText.visible = false;
	var pos = game.toLocal(obj.global);
	bowls.forEach(function (bowl, index) {
		if (bowl.containsPoint(pos) && bowl.hasEgg && bowl.hasSugar && bowl.hasButter) {
			for (var j = 0; j < 3; j++) {
				var cookie = new Cookie();
				cookie.bake();
				cookie.x = bowl.x + bowl.width / 2;
				cookie.y = bowl.y - cookie.height / 2;
				cookie.rotation = Math.random() * (Math.PI * 2);
				game.addChild(cookie);
				cookies.push(cookie);
				cookie.flyToRandomPosition();
				cookie.on('down', function () {
					this.addBiteMark();
				});
			}
			bowls[index].destroy();
			bowls.splice(index, 1);
			sugars[index].destroy();
			sugars.splice(index, 1);
			butters[index].destroy();
			butters.splice(index, 1);
			eggs[index].destroy();
			eggs.splice(index, 1);
		}
	});
	eggs.forEach(function (egg, index) {
		if (egg.containsPoint(pos)) {
			egg.crack();
			var targetBowl = bowls[index % bowls.length];
			egg.x = targetBowl.x + targetBowl.width / 2 + 60;
			egg.y = targetBowl.y - egg.height - 50;
			targetBowl.hasEgg = true;
		}
	});
	butters.forEach(function (butter, index) {
		if (butter.containsPoint(pos)) {
			var targetBowl = bowls[index % bowls.length];
			butter.unpack(targetBowl);
			butter.x = targetBowl.x + targetBowl.width / 2 - 60;
			butter.y = targetBowl.y - butter.height - 50;
			targetBowl.hasButter = true;
		}
	});
	sugars.forEach(function (sugar, index) {
		if (sugar.containsPoint(pos)) {
			var targetBowl = bowls[index % bowls.length];
			sugar.pour();
			sugar.x = targetBowl.x + targetBowl.width / 2;
			sugar.y = targetBowl.y - sugar.height;
			targetBowl.hasSugar = true;
		}
	});
});
var bowls = [];
var sugars = [];
var eggs = [];
var butters = [];
var cookies = [];
for (var i = 0; i < 8; i++) {
	var bowl = new Bowl();
	bowl.x = i * (bowl.width + 10);
	bowls.push(bowl);
	game.addChild(bowl);
	var sugar = new Sugar();
	sugar.x = 200 + Math.random() * 1600;
	sugar.y = 200 + Math.random() * 2032;
	sugars.push(sugar);
	game.addChild(sugar);
	var butter = new Butter();
	butter.x = 200 + Math.random() * 1600;
	butter.y = 200 + Math.random() * 2032;
	butters.push(butter);
	game.addChild(butter);
	var egg = new Egg();
	egg.x = 200 + Math.random() * 1600;
	egg.y = 200 + Math.random() * 2032;
	eggs.push(egg);
	game.addChild(egg);
}
:quality(85)/https://cdn.frvr.ai/657334ad6a3c2307c7f8b2d1.png%3F3) 
 egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/657335336a3c2307c7f8b2e0.png%3F3) 
 sugar in a bag. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/657335ce6a3c2307c7f8b2f2.png%3F3) 
 a butter stik in its wrapper. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/657336ed6a3c2307c7f8b305.png%3F3) 
 a pink kithen bowl. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/65733fe36a3c2307c7f8b369.png%3F3) 
 pile of sugar. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/657341d26a3c2307c7f8b387.png%3F3) 
 cracked egg white and yolk seeping. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/657342a76a3c2307c7f8b39a.png%3F3) 
 soft butter stick. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/657345f26a3c2307c7f8b3b7.png%3F3) 
 A delicious plain vanilla cookie. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/6573529f6a3c2307c7f8b41d.png%3F3) 
 A delicious plain vanilla cookie, where three bites have been taken. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/6573548a6a3c2307c7f8b42e.png%3F3) 
 A cute kawaian bakery interior with strawberry tiles. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
:quality(85)/https://cdn.frvr.ai/65735b676a3c2307c7f8b46c.png%3F3) 
 A cute girl happily eating way too many vanilla cookies. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.