Code edit (1 edits merged)
Please save this source code
User prompt
Troll Bridge Adventure
Initial prompt
Toca hotel tv room 2 (September 2015 - January 2016). The powerpuff girls are inside ever so top floor. Tap on the play button to make the tv come to life. It will be the movie called “troll bridge”. Meet 3 goats 🐐 scene at scene 1 sliding down the biggest hill scene at scene 2 going down the big slide scene at scene 3 going up in the sky 🏙️ scene at scene 4 final battle with goblin 👹 scene at scene 5 at the theme park scene at scene 6 singing we go together song scene at scene 7 for end.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Goat = Container.expand(function (color) { var self = Container.call(this); var goatGraphics = self.attachAsset('goat', { anchorX: 0.5, anchorY: 0.5, tint: color || 0xffffff }); self.moveToPosition = function (x, y, duration) { tween(self, { x: x, y: y }, { duration: duration || 1000, easing: tween.easeOut }); }; self.bounce = function () { tween(self, { y: self.y - 50 }, { duration: 300, easing: tween.easeOut, onFinish: function onFinish() { tween(self, { y: self.y + 50 }, { duration: 300, easing: tween.easeIn }); } }); }; return self; }); var Scene = Container.expand(function (sceneNumber) { var self = Container.call(this); self.sceneNumber = sceneNumber; self.isActive = false; self.completed = false; self.activate = function () { self.isActive = true; self.alpha = 0; self.visible = true; tween(self, { alpha: 1 }, { duration: 500 }); }; self.deactivate = function () { self.isActive = false; tween(self, { alpha: 0 }, { duration: 500, onFinish: function onFinish() { self.visible = false; } }); }; return self; }); var ThemeParkScene = Scene.expand(function () { var self = Scene.call(this, 7); var bg = self.attachAsset('themepark', { anchorX: 0, anchorY: 0, x: 0, y: 0 }); var goat1 = self.addChild(new Goat(0xffffff)); var goat2 = self.addChild(new Goat(0xf0f0f0)); var goat3 = self.addChild(new Goat(0xe0e0e0)); goat1.x = 400; goat1.y = 1400; goat2.x = 1024; goat2.y = 1400; goat3.x = 1600; goat3.y = 1400; self.activate = function () { Scene.prototype.activate.call(self); LK.setTimeout(function () { goat1.moveToPosition(600, 1200, 1000); goat2.moveToPosition(1024, 1100, 1000); goat3.moveToPosition(1400, 1200, 1000); }, 500); LK.setTimeout(function () { self.completed = true; }, 2500); }; return self; }); var TVScene = Scene.expand(function () { var self = Scene.call(this, 1); var bg = self.attachAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0 }); var tv = self.attachAsset('tv', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1200 }); var tvScreen = self.attachAsset('tvScreen', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1200 }); var playButton = self.attachAsset('playButton', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1200 }); self.down = function (x, y, obj) { var localPos = self.toLocal(obj.parent.toGlobal(obj.position)); var distance = Math.sqrt(Math.pow(localPos.x - playButton.x, 2) + Math.pow(localPos.y - playButton.y, 2)); if (distance < 100) { LK.getSound('tap').play(); tween(playButton, { scaleX: 0.8, scaleY: 0.8 }, { duration: 100, onFinish: function onFinish() { tween(playButton, { scaleX: 1, scaleY: 1 }, { duration: 100 }); } }); self.completed = true; } }; return self; }); var SlideScene = Scene.expand(function () { var self = Scene.call(this, 4); var bg = self.attachAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, tint: 0x87ceeb }); var slide = self.attachAsset('slide', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, rotation: 0.3 }); var goat1 = self.addChild(new Goat(0xffffff)); var goat2 = self.addChild(new Goat(0xf0f0f0)); var goat3 = self.addChild(new Goat(0xe0e0e0)); goat1.x = 200; goat1.y = 1000; goat2.x = 400; goat2.y = 1100; goat3.x = 600; goat3.y = 1200; self.activate = function () { Scene.prototype.activate.call(self); LK.setTimeout(function () { LK.getSound('whoosh').play(); goat1.moveToPosition(1400, 1800, 2000); goat2.moveToPosition(1600, 1900, 2200); goat3.moveToPosition(1800, 2000, 2400); }, 500); LK.setTimeout(function () { self.completed = true; }, 3000); }; return self; }); var SkyScene = Scene.expand(function () { var self = Scene.call(this, 5); var bg = self.attachAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, tint: 0x87ceeb }); var cloud1 = self.attachAsset('cloud', { anchorX: 0.5, anchorY: 0.5, x: 300, y: 800 }); var cloud2 = self.attachAsset('cloud', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 600 }); var cloud3 = self.attachAsset('cloud', { anchorX: 0.5, anchorY: 0.5, x: 1700, y: 900 }); var goat1 = self.addChild(new Goat(0xffffff)); var goat2 = self.addChild(new Goat(0xf0f0f0)); var goat3 = self.addChild(new Goat(0xe0e0e0)); goat1.x = 100; goat1.y = 1400; goat2.x = 1024; goat2.y = 1400; goat3.x = 1900; goat3.y = 1400; self.activate = function () { Scene.prototype.activate.call(self); LK.setTimeout(function () { LK.getSound('whoosh').play(); goat1.moveToPosition(300, 800, 2000); goat2.moveToPosition(1024, 600, 2000); goat3.moveToPosition(1700, 900, 2000); }, 500); LK.setTimeout(function () { self.completed = true; }, 3000); }; return self; }); var MusicScene = Scene.expand(function () { var self = Scene.call(this, 8); var bg = self.attachAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, tint: 0xffd700 }); var goat1 = self.addChild(new Goat(0xffffff)); var goat2 = self.addChild(new Goat(0xf0f0f0)); var goat3 = self.addChild(new Goat(0xe0e0e0)); goat1.x = 400; goat1.y = 1400; goat2.x = 1024; goat2.y = 1400; goat3.x = 1600; goat3.y = 1400; var musicNotes = []; self.activate = function () { Scene.prototype.activate.call(self); for (var i = 0; i < 12; i++) { var note = self.attachAsset('musicNote', { anchorX: 0.5, anchorY: 0.5, x: Math.random() * 2048, y: Math.random() * 1000 + 500 }); musicNotes.push(note); tween(note, { y: note.y - 200, rotation: Math.PI * 2 }, { duration: 3000 + Math.random() * 2000, easing: tween.easeOut }); } LK.setTimeout(function () { goat1.bounce(); goat2.bounce(); goat3.bounce(); }, 500); LK.setTimeout(function () { self.completed = true; }, 4000); }; return self; }); var HillScene = Scene.expand(function () { var self = Scene.call(this, 3); var bg = self.attachAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, tint: 0x87ceeb }); var hill = self.attachAsset('hill', { anchorX: 0.5, anchorY: 1, x: 1024, y: 2732 }); var goat1 = self.addChild(new Goat(0xffffff)); var goat2 = self.addChild(new Goat(0xf0f0f0)); var goat3 = self.addChild(new Goat(0xe0e0e0)); goat1.x = 400; goat1.y = 1800; goat2.x = 1024; goat2.y = 1700; goat3.x = 1600; goat3.y = 1800; self.activate = function () { Scene.prototype.activate.call(self); LK.setTimeout(function () { LK.getSound('whoosh').play(); goat1.moveToPosition(600, 2400, 2000); goat2.moveToPosition(1024, 2300, 2000); goat3.moveToPosition(1400, 2400, 2000); }, 500); LK.setTimeout(function () { self.completed = true; }, 3000); }; return self; }); var GoatsScene = Scene.expand(function () { var self = Scene.call(this, 2); var bg = self.attachAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, tint: 0x87ceeb }); var goat1 = self.addChild(new Goat(0xffffff)); var goat2 = self.addChild(new Goat(0xf0f0f0)); var goat3 = self.addChild(new Goat(0xe0e0e0)); goat1.x = 200; goat1.y = 1400; goat2.x = 1024; goat2.y = 1400; goat3.x = 1800; goat3.y = 1400; self.activate = function () { Scene.prototype.activate.call(self); LK.setTimeout(function () { goat1.bounce(); }, 500); LK.setTimeout(function () { goat2.bounce(); }, 700); LK.setTimeout(function () { goat3.bounce(); }, 900); LK.setTimeout(function () { self.completed = true; }, 2000); }; return self; }); var BattleScene = Scene.expand(function () { var self = Scene.call(this, 6); var bg = self.attachAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, tint: 0x4a4a4a }); var goblin = self.attachAsset('goblin', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1200 }); var goat1 = self.addChild(new Goat(0xffffff)); var goat2 = self.addChild(new Goat(0xf0f0f0)); var goat3 = self.addChild(new Goat(0xe0e0e0)); goat1.x = 400; goat1.y = 1800; goat2.x = 1024; goat2.y = 1800; goat3.x = 1600; goat3.y = 1800; self.activate = function () { Scene.prototype.activate.call(self); LK.setTimeout(function () { LK.getSound('battle').play(); tween(goblin, { scaleX: 1.2, scaleY: 1.2 }, { duration: 500, onFinish: function onFinish() { tween(goblin, { alpha: 0 }, { duration: 1000 }); } }); goat1.bounce(); goat2.bounce(); goat3.bounce(); }, 500); LK.setTimeout(function () { self.completed = true; }, 3000); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ var currentSceneIndex = 0; var scenes = []; var transitionDelay = 1000; var lastSceneComplete = false; // Create all scenes scenes.push(new TVScene()); scenes.push(new GoatsScene()); scenes.push(new HillScene()); scenes.push(new SlideScene()); scenes.push(new SkyScene()); scenes.push(new BattleScene()); scenes.push(new ThemeParkScene()); scenes.push(new MusicScene()); // Add all scenes to game for (var i = 0; i < scenes.length; i++) { game.addChild(scenes[i]); scenes[i].visible = false; } // Activate first scene scenes[currentSceneIndex].activate(); // Progress text var progressText = new Text2('Tap to continue...', { size: 60, fill: 0xFFFFFF }); progressText.anchor.set(0.5, 1); LK.gui.bottom.addChild(progressText); // Scene title text var titleText = new Text2('Troll Bridge Adventure', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0); LK.gui.top.addChild(titleText); function updateSceneTitle() { var titles = ['Hotel TV Room', 'Three Goats Meet', 'Sliding Down the Hill', 'Big Slide Navigation', 'Sky Journey', 'Final Goblin Battle', 'Theme Park Adventure', 'Musical Finale']; titleText.setText(titles[currentSceneIndex] || 'Troll Bridge Adventure'); } function nextScene() { if (currentSceneIndex < scenes.length - 1) { scenes[currentSceneIndex].deactivate(); currentSceneIndex++; LK.setTimeout(function () { scenes[currentSceneIndex].activate(); updateSceneTitle(); }, transitionDelay); } else { // Game complete LK.setTimeout(function () { LK.showYouWin(); }, 2000); } } game.down = function (x, y, obj) { var currentScene = scenes[currentSceneIndex]; // Pass tap to current scene if (currentScene && currentScene.down) { currentScene.down(x, y, obj); } // Check if we can advance to next scene if (currentScene && currentScene.completed && !lastSceneComplete) { LK.getSound('tap').play(); nextScene(); } }; game.update = function () { var currentScene = scenes[currentSceneIndex]; // Track scene completion state if (currentScene) { var wasComplete = lastSceneComplete; lastSceneComplete = currentScene.completed; // Update progress text visibility if (currentScene.completed) { progressText.alpha = 0.7 + 0.3 * Math.sin(LK.ticks * 0.1); } else { progressText.alpha = 0.3; } } }; // Initialize scene title updateSceneTitle(); // Start background music LK.playMusic('storyMusic');
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Goat = Container.expand(function (color) {
var self = Container.call(this);
var goatGraphics = self.attachAsset('goat', {
anchorX: 0.5,
anchorY: 0.5,
tint: color || 0xffffff
});
self.moveToPosition = function (x, y, duration) {
tween(self, {
x: x,
y: y
}, {
duration: duration || 1000,
easing: tween.easeOut
});
};
self.bounce = function () {
tween(self, {
y: self.y - 50
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
y: self.y + 50
}, {
duration: 300,
easing: tween.easeIn
});
}
});
};
return self;
});
var Scene = Container.expand(function (sceneNumber) {
var self = Container.call(this);
self.sceneNumber = sceneNumber;
self.isActive = false;
self.completed = false;
self.activate = function () {
self.isActive = true;
self.alpha = 0;
self.visible = true;
tween(self, {
alpha: 1
}, {
duration: 500
});
};
self.deactivate = function () {
self.isActive = false;
tween(self, {
alpha: 0
}, {
duration: 500,
onFinish: function onFinish() {
self.visible = false;
}
});
};
return self;
});
var ThemeParkScene = Scene.expand(function () {
var self = Scene.call(this, 7);
var bg = self.attachAsset('themepark', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
var goat1 = self.addChild(new Goat(0xffffff));
var goat2 = self.addChild(new Goat(0xf0f0f0));
var goat3 = self.addChild(new Goat(0xe0e0e0));
goat1.x = 400;
goat1.y = 1400;
goat2.x = 1024;
goat2.y = 1400;
goat3.x = 1600;
goat3.y = 1400;
self.activate = function () {
Scene.prototype.activate.call(self);
LK.setTimeout(function () {
goat1.moveToPosition(600, 1200, 1000);
goat2.moveToPosition(1024, 1100, 1000);
goat3.moveToPosition(1400, 1200, 1000);
}, 500);
LK.setTimeout(function () {
self.completed = true;
}, 2500);
};
return self;
});
var TVScene = Scene.expand(function () {
var self = Scene.call(this, 1);
var bg = self.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
var tv = self.attachAsset('tv', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1200
});
var tvScreen = self.attachAsset('tvScreen', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1200
});
var playButton = self.attachAsset('playButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1200
});
self.down = function (x, y, obj) {
var localPos = self.toLocal(obj.parent.toGlobal(obj.position));
var distance = Math.sqrt(Math.pow(localPos.x - playButton.x, 2) + Math.pow(localPos.y - playButton.y, 2));
if (distance < 100) {
LK.getSound('tap').play();
tween(playButton, {
scaleX: 0.8,
scaleY: 0.8
}, {
duration: 100,
onFinish: function onFinish() {
tween(playButton, {
scaleX: 1,
scaleY: 1
}, {
duration: 100
});
}
});
self.completed = true;
}
};
return self;
});
var SlideScene = Scene.expand(function () {
var self = Scene.call(this, 4);
var bg = self.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
tint: 0x87ceeb
});
var slide = self.attachAsset('slide', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1366,
rotation: 0.3
});
var goat1 = self.addChild(new Goat(0xffffff));
var goat2 = self.addChild(new Goat(0xf0f0f0));
var goat3 = self.addChild(new Goat(0xe0e0e0));
goat1.x = 200;
goat1.y = 1000;
goat2.x = 400;
goat2.y = 1100;
goat3.x = 600;
goat3.y = 1200;
self.activate = function () {
Scene.prototype.activate.call(self);
LK.setTimeout(function () {
LK.getSound('whoosh').play();
goat1.moveToPosition(1400, 1800, 2000);
goat2.moveToPosition(1600, 1900, 2200);
goat3.moveToPosition(1800, 2000, 2400);
}, 500);
LK.setTimeout(function () {
self.completed = true;
}, 3000);
};
return self;
});
var SkyScene = Scene.expand(function () {
var self = Scene.call(this, 5);
var bg = self.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
tint: 0x87ceeb
});
var cloud1 = self.attachAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5,
x: 300,
y: 800
});
var cloud2 = self.attachAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 600
});
var cloud3 = self.attachAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5,
x: 1700,
y: 900
});
var goat1 = self.addChild(new Goat(0xffffff));
var goat2 = self.addChild(new Goat(0xf0f0f0));
var goat3 = self.addChild(new Goat(0xe0e0e0));
goat1.x = 100;
goat1.y = 1400;
goat2.x = 1024;
goat2.y = 1400;
goat3.x = 1900;
goat3.y = 1400;
self.activate = function () {
Scene.prototype.activate.call(self);
LK.setTimeout(function () {
LK.getSound('whoosh').play();
goat1.moveToPosition(300, 800, 2000);
goat2.moveToPosition(1024, 600, 2000);
goat3.moveToPosition(1700, 900, 2000);
}, 500);
LK.setTimeout(function () {
self.completed = true;
}, 3000);
};
return self;
});
var MusicScene = Scene.expand(function () {
var self = Scene.call(this, 8);
var bg = self.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
tint: 0xffd700
});
var goat1 = self.addChild(new Goat(0xffffff));
var goat2 = self.addChild(new Goat(0xf0f0f0));
var goat3 = self.addChild(new Goat(0xe0e0e0));
goat1.x = 400;
goat1.y = 1400;
goat2.x = 1024;
goat2.y = 1400;
goat3.x = 1600;
goat3.y = 1400;
var musicNotes = [];
self.activate = function () {
Scene.prototype.activate.call(self);
for (var i = 0; i < 12; i++) {
var note = self.attachAsset('musicNote', {
anchorX: 0.5,
anchorY: 0.5,
x: Math.random() * 2048,
y: Math.random() * 1000 + 500
});
musicNotes.push(note);
tween(note, {
y: note.y - 200,
rotation: Math.PI * 2
}, {
duration: 3000 + Math.random() * 2000,
easing: tween.easeOut
});
}
LK.setTimeout(function () {
goat1.bounce();
goat2.bounce();
goat3.bounce();
}, 500);
LK.setTimeout(function () {
self.completed = true;
}, 4000);
};
return self;
});
var HillScene = Scene.expand(function () {
var self = Scene.call(this, 3);
var bg = self.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
tint: 0x87ceeb
});
var hill = self.attachAsset('hill', {
anchorX: 0.5,
anchorY: 1,
x: 1024,
y: 2732
});
var goat1 = self.addChild(new Goat(0xffffff));
var goat2 = self.addChild(new Goat(0xf0f0f0));
var goat3 = self.addChild(new Goat(0xe0e0e0));
goat1.x = 400;
goat1.y = 1800;
goat2.x = 1024;
goat2.y = 1700;
goat3.x = 1600;
goat3.y = 1800;
self.activate = function () {
Scene.prototype.activate.call(self);
LK.setTimeout(function () {
LK.getSound('whoosh').play();
goat1.moveToPosition(600, 2400, 2000);
goat2.moveToPosition(1024, 2300, 2000);
goat3.moveToPosition(1400, 2400, 2000);
}, 500);
LK.setTimeout(function () {
self.completed = true;
}, 3000);
};
return self;
});
var GoatsScene = Scene.expand(function () {
var self = Scene.call(this, 2);
var bg = self.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
tint: 0x87ceeb
});
var goat1 = self.addChild(new Goat(0xffffff));
var goat2 = self.addChild(new Goat(0xf0f0f0));
var goat3 = self.addChild(new Goat(0xe0e0e0));
goat1.x = 200;
goat1.y = 1400;
goat2.x = 1024;
goat2.y = 1400;
goat3.x = 1800;
goat3.y = 1400;
self.activate = function () {
Scene.prototype.activate.call(self);
LK.setTimeout(function () {
goat1.bounce();
}, 500);
LK.setTimeout(function () {
goat2.bounce();
}, 700);
LK.setTimeout(function () {
goat3.bounce();
}, 900);
LK.setTimeout(function () {
self.completed = true;
}, 2000);
};
return self;
});
var BattleScene = Scene.expand(function () {
var self = Scene.call(this, 6);
var bg = self.attachAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
tint: 0x4a4a4a
});
var goblin = self.attachAsset('goblin', {
anchorX: 0.5,
anchorY: 0.5,
x: 1024,
y: 1200
});
var goat1 = self.addChild(new Goat(0xffffff));
var goat2 = self.addChild(new Goat(0xf0f0f0));
var goat3 = self.addChild(new Goat(0xe0e0e0));
goat1.x = 400;
goat1.y = 1800;
goat2.x = 1024;
goat2.y = 1800;
goat3.x = 1600;
goat3.y = 1800;
self.activate = function () {
Scene.prototype.activate.call(self);
LK.setTimeout(function () {
LK.getSound('battle').play();
tween(goblin, {
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 500,
onFinish: function onFinish() {
tween(goblin, {
alpha: 0
}, {
duration: 1000
});
}
});
goat1.bounce();
goat2.bounce();
goat3.bounce();
}, 500);
LK.setTimeout(function () {
self.completed = true;
}, 3000);
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var currentSceneIndex = 0;
var scenes = [];
var transitionDelay = 1000;
var lastSceneComplete = false;
// Create all scenes
scenes.push(new TVScene());
scenes.push(new GoatsScene());
scenes.push(new HillScene());
scenes.push(new SlideScene());
scenes.push(new SkyScene());
scenes.push(new BattleScene());
scenes.push(new ThemeParkScene());
scenes.push(new MusicScene());
// Add all scenes to game
for (var i = 0; i < scenes.length; i++) {
game.addChild(scenes[i]);
scenes[i].visible = false;
}
// Activate first scene
scenes[currentSceneIndex].activate();
// Progress text
var progressText = new Text2('Tap to continue...', {
size: 60,
fill: 0xFFFFFF
});
progressText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(progressText);
// Scene title text
var titleText = new Text2('Troll Bridge Adventure', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
function updateSceneTitle() {
var titles = ['Hotel TV Room', 'Three Goats Meet', 'Sliding Down the Hill', 'Big Slide Navigation', 'Sky Journey', 'Final Goblin Battle', 'Theme Park Adventure', 'Musical Finale'];
titleText.setText(titles[currentSceneIndex] || 'Troll Bridge Adventure');
}
function nextScene() {
if (currentSceneIndex < scenes.length - 1) {
scenes[currentSceneIndex].deactivate();
currentSceneIndex++;
LK.setTimeout(function () {
scenes[currentSceneIndex].activate();
updateSceneTitle();
}, transitionDelay);
} else {
// Game complete
LK.setTimeout(function () {
LK.showYouWin();
}, 2000);
}
}
game.down = function (x, y, obj) {
var currentScene = scenes[currentSceneIndex];
// Pass tap to current scene
if (currentScene && currentScene.down) {
currentScene.down(x, y, obj);
}
// Check if we can advance to next scene
if (currentScene && currentScene.completed && !lastSceneComplete) {
LK.getSound('tap').play();
nextScene();
}
};
game.update = function () {
var currentScene = scenes[currentSceneIndex];
// Track scene completion state
if (currentScene) {
var wasComplete = lastSceneComplete;
lastSceneComplete = currentScene.completed;
// Update progress text visibility
if (currentScene.completed) {
progressText.alpha = 0.7 + 0.3 * Math.sin(LK.ticks * 0.1);
} else {
progressText.alpha = 0.3;
}
}
};
// Initialize scene title
updateSceneTitle();
// Start background music
LK.playMusic('storyMusic');