/****
* 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);
}
egg. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
sugar in a bag. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a butter stik in its wrapper. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a pink kithen bowl. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pile of sugar. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cracked egg white and yolk seeping. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
soft butter stick. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A delicious plain vanilla cookie. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A delicious plain vanilla cookie, where three bites have been taken. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A cute kawaian bakery interior with strawberry tiles. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A cute girl happily eating way too many vanilla cookies. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.