/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Character = Container.expand(function (characterType) {
var self = Container.call(this);
var characterGraphics = self.attachAsset(characterType, {
anchorX: 0.5,
anchorY: 0.5
});
var nameText = new Text2(characterType.charAt(0).toUpperCase() + characterType.slice(1), {
size: 60,
fill: 0x000000
});
nameText.anchor.set(0.5, 0.5);
nameText.y = 250;
self.addChild(nameText);
self.characterType = characterType;
self.down = function (x, y, obj) {
LK.getSound('select').play();
tween(self, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100
});
selectedCharacter = self.characterType;
switchToKitchen();
};
self.up = function (x, y, obj) {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
};
return self;
});
var CookingTool = Container.expand(function (toolType) {
var self = Container.call(this);
var toolGraphics = self.attachAsset(toolType, {
anchorX: 0.5,
anchorY: 0.5
});
self.toolType = toolType;
self.down = function (x, y, obj) {
if (selectedIngredient && selectedIngredient.intersects(self)) {
if (self.toolType === 'pan' || self.toolType === 'stove') {
selectedIngredient.cook();
} else if (self.toolType === 'knife') {
selectedIngredient.chop();
}
}
};
return self;
});
var Ingredient = Container.expand(function (ingredientType) {
var self = Container.call(this);
var ingredientGraphics = self.attachAsset(ingredientType, {
anchorX: 0.5,
anchorY: 0.5
});
self.ingredientType = ingredientType;
self.isCooked = false;
self.isChopped = false;
self.cookingLevel = 0;
self.down = function (x, y, obj) {
LK.getSound('select').play();
selectedIngredient = self;
dragNode = self;
tween(self, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 100
});
};
self.up = function (x, y, obj) {
dragNode = null;
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
};
self.cook = function () {
if (!self.isCooked) {
self.isCooked = true;
self.cookingLevel = 1;
LK.getSound('cook').play();
// Change color to indicate cooking
var originalColor = ingredientGraphics.tint || 0xFFFFFF;
tween(ingredientGraphics, {
tint: 0xDDAAAA
}, {
duration: 500
});
// Add cooking animation
tween(self, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 300,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 300
});
}
});
}
};
self.chop = function () {
if (!self.isChopped) {
self.isChopped = true;
LK.getSound('chop').play();
// Change shape to indicate chopping
tween(self, {
scaleY: 0.7
}, {
duration: 200
});
// Add chopping animation
tween(self, {
rotation: 0.1
}, {
duration: 100,
onFinish: function onFinish() {
tween(self, {
rotation: -0.1
}, {
duration: 100,
onFinish: function onFinish() {
tween(self, {
rotation: 0
}, {
duration: 100
});
}
});
}
});
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xF5F5DC
});
/****
* Game Code
****/
// Sounds
// UI elements
// Cooking tools
// Ingredients
// Characters
var gameState = 'characterSelection'; // 'characterSelection' or 'kitchen'
var selectedCharacter = null;
var selectedIngredient = null;
var dragNode = null;
var characters = [];
var ingredients = [];
var cookingTools = [];
// Character selection screen
function setupCharacterSelection() {
// Clear existing children
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
// Title
var titleText = new Text2('Choose Your Character', {
size: 100,
fill: 0x8B4513
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 400;
game.addChild(titleText);
// Character options
var characterTypes = ['boy', 'cat', 'cow', 'girl'];
characters = [];
for (var i = 0; i < characterTypes.length; i++) {
var character = new Character(characterTypes[i]);
var col = i % 2;
var row = Math.floor(i / 2);
character.x = 512 + col * 600;
character.y = 800 + row * 500;
characters.push(character);
game.addChild(character);
}
}
// Kitchen screen
function setupKitchen() {
// Clear existing children
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
// Back button
var backButton = LK.getAsset('backButton', {
anchorX: 0.5,
anchorY: 0.5
});
backButton.x = 150;
backButton.y = 150;
game.addChild(backButton);
var backText = new Text2('Back', {
size: 40,
fill: 0xFFFFFF
});
backText.anchor.set(0.5, 0.5);
backText.x = 150;
backText.y = 150;
game.addChild(backText);
// Kitchen title
var kitchenTitle = new Text2('Toca Kitchen - ' + selectedCharacter, {
size: 80,
fill: 0x8B4513
});
kitchenTitle.anchor.set(0.5, 0.5);
kitchenTitle.x = 1024;
kitchenTitle.y = 200;
game.addChild(kitchenTitle);
// Ingredients
var ingredientTypes = ['egg', 'mushroom', 'broccoli', 'lemon', 'tomato', 'pear'];
ingredients = [];
for (var i = 0; i < ingredientTypes.length; i++) {
var ingredient = new Ingredient(ingredientTypes[i]);
var col = i % 3;
var row = Math.floor(i / 3);
ingredient.x = 400 + col * 300;
ingredient.y = 500 + row * 200;
ingredients.push(ingredient);
game.addChild(ingredient);
}
// Cooking tools
cookingTools = [];
// Stove
var stove = new CookingTool('stove');
stove.x = 1024;
stove.y = 1200;
cookingTools.push(stove);
game.addChild(stove);
// Pan on stove
var pan = new CookingTool('pan');
pan.x = 1024;
pan.y = 1170;
cookingTools.push(pan);
game.addChild(pan);
// Knife
var knife = new CookingTool('knife');
knife.x = 1024;
knife.y = 1400;
cookingTools.push(knife);
game.addChild(knife);
// Tool labels
var stoveLabel = new Text2('Stove', {
size: 40,
fill: 0x000000
});
stoveLabel.anchor.set(0.5, 0.5);
stoveLabel.x = 1024;
stoveLabel.y = 1270;
game.addChild(stoveLabel);
var knifeLabel = new Text2('Knife', {
size: 40,
fill: 0x000000
});
knifeLabel.anchor.set(0.5, 0.5);
knifeLabel.x = 1024;
knifeLabel.y = 1470;
game.addChild(knifeLabel);
}
function switchToKitchen() {
gameState = 'kitchen';
setupKitchen();
}
function switchToCharacterSelection() {
gameState = 'characterSelection';
selectedCharacter = null;
selectedIngredient = null;
setupCharacterSelection();
}
// Handle move events
function handleMove(x, y, obj) {
if (dragNode) {
dragNode.x = x;
dragNode.y = y;
}
}
// Game event handlers
game.move = handleMove;
game.down = function (x, y, obj) {
// Check for back button in kitchen
if (gameState === 'kitchen' && x < 300 && y < 250) {
LK.getSound('select').play();
switchToCharacterSelection();
}
};
game.up = function (x, y, obj) {
dragNode = null;
selectedIngredient = null;
};
// Initialize the game
setupCharacterSelection();
game.update = function () {
// Handle ingredient interactions with cooking tools
if (gameState === 'kitchen') {
for (var i = 0; i < ingredients.length; i++) {
var ingredient = ingredients[i];
// Check if ingredient is being dragged over cooking tools
for (var j = 0; j < cookingTools.length; j++) {
var tool = cookingTools[j];
if (ingredient.intersects(tool)) {
// Visual feedback when ingredient is over a tool
if (tool.alpha !== 0.8) {
tool.alpha = 0.8;
}
} else {
if (tool.alpha !== 1) {
tool.alpha = 1;
}
}
}
}
}
}; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Character = Container.expand(function (characterType) {
var self = Container.call(this);
var characterGraphics = self.attachAsset(characterType, {
anchorX: 0.5,
anchorY: 0.5
});
var nameText = new Text2(characterType.charAt(0).toUpperCase() + characterType.slice(1), {
size: 60,
fill: 0x000000
});
nameText.anchor.set(0.5, 0.5);
nameText.y = 250;
self.addChild(nameText);
self.characterType = characterType;
self.down = function (x, y, obj) {
LK.getSound('select').play();
tween(self, {
scaleX: 0.9,
scaleY: 0.9
}, {
duration: 100
});
selectedCharacter = self.characterType;
switchToKitchen();
};
self.up = function (x, y, obj) {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
};
return self;
});
var CookingTool = Container.expand(function (toolType) {
var self = Container.call(this);
var toolGraphics = self.attachAsset(toolType, {
anchorX: 0.5,
anchorY: 0.5
});
self.toolType = toolType;
self.down = function (x, y, obj) {
if (selectedIngredient && selectedIngredient.intersects(self)) {
if (self.toolType === 'pan' || self.toolType === 'stove') {
selectedIngredient.cook();
} else if (self.toolType === 'knife') {
selectedIngredient.chop();
}
}
};
return self;
});
var Ingredient = Container.expand(function (ingredientType) {
var self = Container.call(this);
var ingredientGraphics = self.attachAsset(ingredientType, {
anchorX: 0.5,
anchorY: 0.5
});
self.ingredientType = ingredientType;
self.isCooked = false;
self.isChopped = false;
self.cookingLevel = 0;
self.down = function (x, y, obj) {
LK.getSound('select').play();
selectedIngredient = self;
dragNode = self;
tween(self, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 100
});
};
self.up = function (x, y, obj) {
dragNode = null;
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
};
self.cook = function () {
if (!self.isCooked) {
self.isCooked = true;
self.cookingLevel = 1;
LK.getSound('cook').play();
// Change color to indicate cooking
var originalColor = ingredientGraphics.tint || 0xFFFFFF;
tween(ingredientGraphics, {
tint: 0xDDAAAA
}, {
duration: 500
});
// Add cooking animation
tween(self, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 300,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 300
});
}
});
}
};
self.chop = function () {
if (!self.isChopped) {
self.isChopped = true;
LK.getSound('chop').play();
// Change shape to indicate chopping
tween(self, {
scaleY: 0.7
}, {
duration: 200
});
// Add chopping animation
tween(self, {
rotation: 0.1
}, {
duration: 100,
onFinish: function onFinish() {
tween(self, {
rotation: -0.1
}, {
duration: 100,
onFinish: function onFinish() {
tween(self, {
rotation: 0
}, {
duration: 100
});
}
});
}
});
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xF5F5DC
});
/****
* Game Code
****/
// Sounds
// UI elements
// Cooking tools
// Ingredients
// Characters
var gameState = 'characterSelection'; // 'characterSelection' or 'kitchen'
var selectedCharacter = null;
var selectedIngredient = null;
var dragNode = null;
var characters = [];
var ingredients = [];
var cookingTools = [];
// Character selection screen
function setupCharacterSelection() {
// Clear existing children
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
// Title
var titleText = new Text2('Choose Your Character', {
size: 100,
fill: 0x8B4513
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 400;
game.addChild(titleText);
// Character options
var characterTypes = ['boy', 'cat', 'cow', 'girl'];
characters = [];
for (var i = 0; i < characterTypes.length; i++) {
var character = new Character(characterTypes[i]);
var col = i % 2;
var row = Math.floor(i / 2);
character.x = 512 + col * 600;
character.y = 800 + row * 500;
characters.push(character);
game.addChild(character);
}
}
// Kitchen screen
function setupKitchen() {
// Clear existing children
while (game.children.length > 0) {
game.removeChild(game.children[0]);
}
// Back button
var backButton = LK.getAsset('backButton', {
anchorX: 0.5,
anchorY: 0.5
});
backButton.x = 150;
backButton.y = 150;
game.addChild(backButton);
var backText = new Text2('Back', {
size: 40,
fill: 0xFFFFFF
});
backText.anchor.set(0.5, 0.5);
backText.x = 150;
backText.y = 150;
game.addChild(backText);
// Kitchen title
var kitchenTitle = new Text2('Toca Kitchen - ' + selectedCharacter, {
size: 80,
fill: 0x8B4513
});
kitchenTitle.anchor.set(0.5, 0.5);
kitchenTitle.x = 1024;
kitchenTitle.y = 200;
game.addChild(kitchenTitle);
// Ingredients
var ingredientTypes = ['egg', 'mushroom', 'broccoli', 'lemon', 'tomato', 'pear'];
ingredients = [];
for (var i = 0; i < ingredientTypes.length; i++) {
var ingredient = new Ingredient(ingredientTypes[i]);
var col = i % 3;
var row = Math.floor(i / 3);
ingredient.x = 400 + col * 300;
ingredient.y = 500 + row * 200;
ingredients.push(ingredient);
game.addChild(ingredient);
}
// Cooking tools
cookingTools = [];
// Stove
var stove = new CookingTool('stove');
stove.x = 1024;
stove.y = 1200;
cookingTools.push(stove);
game.addChild(stove);
// Pan on stove
var pan = new CookingTool('pan');
pan.x = 1024;
pan.y = 1170;
cookingTools.push(pan);
game.addChild(pan);
// Knife
var knife = new CookingTool('knife');
knife.x = 1024;
knife.y = 1400;
cookingTools.push(knife);
game.addChild(knife);
// Tool labels
var stoveLabel = new Text2('Stove', {
size: 40,
fill: 0x000000
});
stoveLabel.anchor.set(0.5, 0.5);
stoveLabel.x = 1024;
stoveLabel.y = 1270;
game.addChild(stoveLabel);
var knifeLabel = new Text2('Knife', {
size: 40,
fill: 0x000000
});
knifeLabel.anchor.set(0.5, 0.5);
knifeLabel.x = 1024;
knifeLabel.y = 1470;
game.addChild(knifeLabel);
}
function switchToKitchen() {
gameState = 'kitchen';
setupKitchen();
}
function switchToCharacterSelection() {
gameState = 'characterSelection';
selectedCharacter = null;
selectedIngredient = null;
setupCharacterSelection();
}
// Handle move events
function handleMove(x, y, obj) {
if (dragNode) {
dragNode.x = x;
dragNode.y = y;
}
}
// Game event handlers
game.move = handleMove;
game.down = function (x, y, obj) {
// Check for back button in kitchen
if (gameState === 'kitchen' && x < 300 && y < 250) {
LK.getSound('select').play();
switchToCharacterSelection();
}
};
game.up = function (x, y, obj) {
dragNode = null;
selectedIngredient = null;
};
// Initialize the game
setupCharacterSelection();
game.update = function () {
// Handle ingredient interactions with cooking tools
if (gameState === 'kitchen') {
for (var i = 0; i < ingredients.length; i++) {
var ingredient = ingredients[i];
// Check if ingredient is being dragged over cooking tools
for (var j = 0; j < cookingTools.length; j++) {
var tool = cookingTools[j];
if (ingredient.intersects(tool)) {
// Visual feedback when ingredient is over a tool
if (tool.alpha !== 0.8) {
tool.alpha = 0.8;
}
} else {
if (tool.alpha !== 1) {
tool.alpha = 1;
}
}
}
}
}
};