/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var MovieScreen = Container.expand(function () {
var self = Container.call(this);
var screenBg = self.attachAsset('screen', {
anchorX: 0.5,
anchorY: 0.5
});
self.currentScene = 0;
self.moviePlaying = false;
self.chickSize = 1;
self.movieElements = [];
self.startMovie = function () {
self.moviePlaying = true;
self.currentScene = 1;
self.showScene1();
};
self.showScene1 = function () {
self.clearScene();
var egg = self.addChild(LK.getAsset('egg', {
anchorX: 0.5,
anchorY: 0.5
}));
egg.x = 0;
egg.y = 0;
self.movieElements.push(egg);
egg.down = function () {
LK.getSound('crack').play();
tween(egg, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 300,
onFinish: function onFinish() {
LK.setTimeout(function () {
self.showScene2();
}, 500);
}
});
};
};
self.showScene2 = function () {
self.clearScene();
self.currentScene = 2;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: self.chickSize,
scaleY: self.chickSize
}));
chick.x = 0;
chick.y = 0;
self.movieElements.push(chick);
chick.down = function () {
LK.getSound('chirp').play();
tween(chick, {
y: chick.y - 30
}, {
duration: 200,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(chick, {
y: chick.y + 30
}, {
duration: 200,
easing: tween.easeIn
});
}
});
};
LK.setTimeout(function () {
self.showScene3();
}, 3000);
};
self.showScene3 = function () {
self.clearScene();
self.currentScene = 3;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: self.chickSize,
scaleY: self.chickSize
}));
chick.x = 0;
chick.y = 0;
self.movieElements.push(chick);
for (var i = 0; i < 5; i++) {
var bubble = self.addChild(LK.getAsset('bubble', {
anchorX: 0.5,
anchorY: 0.5
}));
bubble.x = Math.random() * 400 - 200;
bubble.y = Math.random() * 300 - 150;
self.movieElements.push(bubble);
bubble.down = function () {
LK.getSound('splash').play();
tween(this, {
alpha: 0,
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300,
onFinish: function onFinish() {
this.destroy();
}
});
};
}
LK.setTimeout(function () {
self.showScene4();
}, 4000);
};
self.showScene4 = function () {
self.clearScene();
self.currentScene = 4;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: self.chickSize,
scaleY: self.chickSize
}));
chick.x = 0;
chick.y = 0;
self.movieElements.push(chick);
for (var i = 0; i < 3; i++) {
var worm = self.addChild(LK.getAsset('worm', {
anchorX: 0.5,
anchorY: 0.5
}));
worm.x = Math.random() * 300 - 150;
worm.y = Math.random() * 200 - 100;
self.movieElements.push(worm);
worm.down = function () {
self.chickSize += 0.3;
tween(chick, {
scaleX: self.chickSize,
scaleY: self.chickSize
}, {
duration: 500
});
tween(this, {
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
this.destroy();
}
});
};
}
LK.setTimeout(function () {
self.showScene5();
}, 5000);
};
self.showScene5 = function () {
self.clearScene();
self.currentScene = 5;
var bigChick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.5,
scaleY: 2.5
}));
bigChick.x = 0;
bigChick.y = 0;
self.movieElements.push(bigChick);
bigChick.down = function () {
LK.getSound('chirp').play();
tween(bigChick, {
y: bigChick.y - 50
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(bigChick, {
y: bigChick.y + 50
}, {
duration: 300,
easing: tween.easeIn
});
}
});
};
LK.setTimeout(function () {
self.showScene6();
}, 3000);
};
self.showScene6 = function () {
self.clearScene();
self.currentScene = 6;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
}));
chick.x = -200;
chick.y = 0;
self.movieElements.push(chick);
var momBird = self.addChild(LK.getAsset('momBird', {
anchorX: 0.5,
anchorY: 0.5
}));
momBird.x = 200;
momBird.y = 0;
self.movieElements.push(momBird);
for (var i = 0; i < 4; i++) {
var cloud = self.addChild(LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.7
}));
cloud.x = Math.random() * 600 - 300;
cloud.y = Math.random() * 400 - 200;
self.movieElements.push(cloud);
tween(cloud, {
x: cloud.x + 100
}, {
duration: 3000 + Math.random() * 2000
});
}
momBird.down = function () {
tween(chick, {
x: 0
}, {
duration: 1000
});
tween(momBird, {
x: 0
}, {
duration: 1000,
onFinish: function onFinish() {
LK.setTimeout(function () {
self.restartMovie();
}, 2000);
}
});
};
};
self.clearScene = function () {
for (var i = 0; i < self.movieElements.length; i++) {
self.movieElements[i].destroy();
}
self.movieElements = [];
};
self.restartMovie = function () {
self.moviePlaying = false;
self.currentScene = 0;
self.chickSize = 1;
self.clearScene();
};
return self;
});
var PowerpuffGirl = Container.expand(function (color) {
var self = Container.call(this);
var girl = self.attachAsset(color, {
anchorX: 0.5,
anchorY: 0.5
});
self.react = function () {
tween(girl, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 200,
onFinish: function onFinish() {
tween(girl, {
scaleX: 1,
scaleY: 1
}, {
duration: 200
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Create theater background
var theater = game.addChild(LK.getAsset('theater', {
anchorX: 0.5,
anchorY: 0.5
}));
theater.x = 1024;
theater.y = 1366;
// Create movie screen
var movieScreen = game.addChild(new MovieScreen());
movieScreen.x = 1024;
movieScreen.y = 800;
// Create play button
var playButton = game.addChild(LK.getAsset('playButton', {
anchorX: 0.5,
anchorY: 0.5
}));
playButton.x = 1024;
playButton.y = 800;
// Create play button text
var playText = new Text2('▶', {
size: 100,
fill: 0xFFFFFF
});
playText.anchor.set(0.5, 0.5);
playButton.addChild(playText);
// Create seats
var seats = [];
for (var i = 0; i < 3; i++) {
var seat = game.addChild(LK.getAsset('seat', {
anchorX: 0.5,
anchorY: 0.5
}));
seat.x = 500 + i * 350;
seat.y = 1800;
seats.push(seat);
}
// Create Powerpuff Girls
var blossom = game.addChild(new PowerpuffGirl('blossom'));
blossom.x = 500;
blossom.y = 1750;
var bubbles = game.addChild(new PowerpuffGirl('bubbles'));
bubbles.x = 850;
bubbles.y = 1750;
var buttercup = game.addChild(new PowerpuffGirl('buttercup'));
buttercup.x = 1200;
buttercup.y = 1750;
var girls = [blossom, bubbles, buttercup];
// Play button interaction
playButton.down = function () {
if (!movieScreen.moviePlaying) {
playButton.alpha = 0;
movieScreen.startMovie();
// Make girls react
for (var i = 0; i < girls.length; i++) {
girls[i].react();
}
LK.playMusic('theaterMusic');
}
};
// Game update loop
game.update = function () {
// Make girls react occasionally during movie
if (movieScreen.moviePlaying && LK.ticks % 180 === 0) {
var randomGirl = girls[Math.floor(Math.random() * girls.length)];
randomGirl.react();
}
// Show play button when movie is not playing
if (!movieScreen.moviePlaying) {
playButton.alpha = 1;
}
};
// Title display
var titleText = new Text2('Toca Cinema: The Lost Egg', {
size: 60,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
titleText.y = 50; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var MovieScreen = Container.expand(function () {
var self = Container.call(this);
var screenBg = self.attachAsset('screen', {
anchorX: 0.5,
anchorY: 0.5
});
self.currentScene = 0;
self.moviePlaying = false;
self.chickSize = 1;
self.movieElements = [];
self.startMovie = function () {
self.moviePlaying = true;
self.currentScene = 1;
self.showScene1();
};
self.showScene1 = function () {
self.clearScene();
var egg = self.addChild(LK.getAsset('egg', {
anchorX: 0.5,
anchorY: 0.5
}));
egg.x = 0;
egg.y = 0;
self.movieElements.push(egg);
egg.down = function () {
LK.getSound('crack').play();
tween(egg, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 300,
onFinish: function onFinish() {
LK.setTimeout(function () {
self.showScene2();
}, 500);
}
});
};
};
self.showScene2 = function () {
self.clearScene();
self.currentScene = 2;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: self.chickSize,
scaleY: self.chickSize
}));
chick.x = 0;
chick.y = 0;
self.movieElements.push(chick);
chick.down = function () {
LK.getSound('chirp').play();
tween(chick, {
y: chick.y - 30
}, {
duration: 200,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(chick, {
y: chick.y + 30
}, {
duration: 200,
easing: tween.easeIn
});
}
});
};
LK.setTimeout(function () {
self.showScene3();
}, 3000);
};
self.showScene3 = function () {
self.clearScene();
self.currentScene = 3;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: self.chickSize,
scaleY: self.chickSize
}));
chick.x = 0;
chick.y = 0;
self.movieElements.push(chick);
for (var i = 0; i < 5; i++) {
var bubble = self.addChild(LK.getAsset('bubble', {
anchorX: 0.5,
anchorY: 0.5
}));
bubble.x = Math.random() * 400 - 200;
bubble.y = Math.random() * 300 - 150;
self.movieElements.push(bubble);
bubble.down = function () {
LK.getSound('splash').play();
tween(this, {
alpha: 0,
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300,
onFinish: function onFinish() {
this.destroy();
}
});
};
}
LK.setTimeout(function () {
self.showScene4();
}, 4000);
};
self.showScene4 = function () {
self.clearScene();
self.currentScene = 4;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: self.chickSize,
scaleY: self.chickSize
}));
chick.x = 0;
chick.y = 0;
self.movieElements.push(chick);
for (var i = 0; i < 3; i++) {
var worm = self.addChild(LK.getAsset('worm', {
anchorX: 0.5,
anchorY: 0.5
}));
worm.x = Math.random() * 300 - 150;
worm.y = Math.random() * 200 - 100;
self.movieElements.push(worm);
worm.down = function () {
self.chickSize += 0.3;
tween(chick, {
scaleX: self.chickSize,
scaleY: self.chickSize
}, {
duration: 500
});
tween(this, {
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
this.destroy();
}
});
};
}
LK.setTimeout(function () {
self.showScene5();
}, 5000);
};
self.showScene5 = function () {
self.clearScene();
self.currentScene = 5;
var bigChick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2.5,
scaleY: 2.5
}));
bigChick.x = 0;
bigChick.y = 0;
self.movieElements.push(bigChick);
bigChick.down = function () {
LK.getSound('chirp').play();
tween(bigChick, {
y: bigChick.y - 50
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(bigChick, {
y: bigChick.y + 50
}, {
duration: 300,
easing: tween.easeIn
});
}
});
};
LK.setTimeout(function () {
self.showScene6();
}, 3000);
};
self.showScene6 = function () {
self.clearScene();
self.currentScene = 6;
var chick = self.addChild(LK.getAsset('chick', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
}));
chick.x = -200;
chick.y = 0;
self.movieElements.push(chick);
var momBird = self.addChild(LK.getAsset('momBird', {
anchorX: 0.5,
anchorY: 0.5
}));
momBird.x = 200;
momBird.y = 0;
self.movieElements.push(momBird);
for (var i = 0; i < 4; i++) {
var cloud = self.addChild(LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.7
}));
cloud.x = Math.random() * 600 - 300;
cloud.y = Math.random() * 400 - 200;
self.movieElements.push(cloud);
tween(cloud, {
x: cloud.x + 100
}, {
duration: 3000 + Math.random() * 2000
});
}
momBird.down = function () {
tween(chick, {
x: 0
}, {
duration: 1000
});
tween(momBird, {
x: 0
}, {
duration: 1000,
onFinish: function onFinish() {
LK.setTimeout(function () {
self.restartMovie();
}, 2000);
}
});
};
};
self.clearScene = function () {
for (var i = 0; i < self.movieElements.length; i++) {
self.movieElements[i].destroy();
}
self.movieElements = [];
};
self.restartMovie = function () {
self.moviePlaying = false;
self.currentScene = 0;
self.chickSize = 1;
self.clearScene();
};
return self;
});
var PowerpuffGirl = Container.expand(function (color) {
var self = Container.call(this);
var girl = self.attachAsset(color, {
anchorX: 0.5,
anchorY: 0.5
});
self.react = function () {
tween(girl, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 200,
onFinish: function onFinish() {
tween(girl, {
scaleX: 1,
scaleY: 1
}, {
duration: 200
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Create theater background
var theater = game.addChild(LK.getAsset('theater', {
anchorX: 0.5,
anchorY: 0.5
}));
theater.x = 1024;
theater.y = 1366;
// Create movie screen
var movieScreen = game.addChild(new MovieScreen());
movieScreen.x = 1024;
movieScreen.y = 800;
// Create play button
var playButton = game.addChild(LK.getAsset('playButton', {
anchorX: 0.5,
anchorY: 0.5
}));
playButton.x = 1024;
playButton.y = 800;
// Create play button text
var playText = new Text2('▶', {
size: 100,
fill: 0xFFFFFF
});
playText.anchor.set(0.5, 0.5);
playButton.addChild(playText);
// Create seats
var seats = [];
for (var i = 0; i < 3; i++) {
var seat = game.addChild(LK.getAsset('seat', {
anchorX: 0.5,
anchorY: 0.5
}));
seat.x = 500 + i * 350;
seat.y = 1800;
seats.push(seat);
}
// Create Powerpuff Girls
var blossom = game.addChild(new PowerpuffGirl('blossom'));
blossom.x = 500;
blossom.y = 1750;
var bubbles = game.addChild(new PowerpuffGirl('bubbles'));
bubbles.x = 850;
bubbles.y = 1750;
var buttercup = game.addChild(new PowerpuffGirl('buttercup'));
buttercup.x = 1200;
buttercup.y = 1750;
var girls = [blossom, bubbles, buttercup];
// Play button interaction
playButton.down = function () {
if (!movieScreen.moviePlaying) {
playButton.alpha = 0;
movieScreen.startMovie();
// Make girls react
for (var i = 0; i < girls.length; i++) {
girls[i].react();
}
LK.playMusic('theaterMusic');
}
};
// Game update loop
game.update = function () {
// Make girls react occasionally during movie
if (movieScreen.moviePlaying && LK.ticks % 180 === 0) {
var randomGirl = girls[Math.floor(Math.random() * girls.length)];
randomGirl.react();
}
// Show play button when movie is not playing
if (!movieScreen.moviePlaying) {
playButton.alpha = 1;
}
};
// Title display
var titleText = new Text2('Toca Cinema: The Lost Egg', {
size: 60,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
titleText.y = 50;