User prompt
Randomise the lines that enemies use ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Enemies will spawn 7 seconds apart ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Enemies will move from right to left side of screen ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
After wave1 fades away implement the first wave of tower defence game on backdrop scene. Ensure enemies follow horizontal guidelines ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
After wave1 fades away implement the first wave of tower defence game ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Only play the music once don't loop track
User prompt
Make flyby small on backdrop scene and zoom into position ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
When cell is clicked play intro music
User prompt
Prevent intro2 fading to black ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
When story4 is clicked transition to titlescreen ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
When story3 is clicked transition to story4 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
When story2 is clicked transition to story3 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
When story1 is clicked transition to story2 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
On click transition cell asset to story1 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Prevent automatic transition from intro2 scene to title scene
User prompt
Add cell asset in middle of intro2
User prompt
Add Cutscene before titlescreen using intro2
User prompt
Add a Cutscene class with
User prompt
Add a Cutscene class
User prompt
Level2 will happen after 5 waves
User prompt
When level2 is reached swap backdrop with backdrop2
User prompt
Add a placeholder class for level2 using backdrop2 asset
User prompt
Define backdrop1 as backdrop for level1 and 2
User prompt
Remove health bar
User prompt
Please fix the bug: 'Uncaught ReferenceError: titleImage is not defined' in or related to this line: 'tween.stop(titleImage);' Line Number: 540 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Defense class var Defense = Container.expand(function () { var self = Container.call(this); var defenseGraphics = self.attachAsset('defense', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Defense logic goes here }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Enemy logic goes here }; }); // Assets will be automatically created and loaded by the LK engine // Tower class var Tower = Container.expand(function () { var self = Container.call(this); var towerGraphics = self.attachAsset('tower', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Tower logic goes here }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Import tween plugin // Display the title var titleImage = game.addChild(LK.getAsset('Title', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 1400 })); // Add skip intro button to top of title screen var skipButton = new Text2('SKIP INTRO', { size: 60, fill: 0xFFFFFF }); skipButton.anchor.set(0.5, 0); skipButton.x = 2048 / 2; skipButton.y = 150; game.addChild(skipButton); // Function to skip directly to backdrop scene function skipToBackdrop() { // Stop all tweens tween.stop(titleImage); tween.stop(flybyImage); // Remove title and flyby titleImage.destroy(); flybyImage.destroy(); skipButton.destroy(); // Add backdrop asset to game var backdropAsset = game.addChild(LK.getAsset('Backdrop1', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, alpha: 1, scaleX: 0.5, scaleY: 0.5 })); // Add flyby asset to backdrop var backdropFlyby = game.addChild(LK.getAsset('Flyby', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 800, alpha: 1, scaleX: 0.8, scaleY: 0.8 })); // Store the original Y position for backdrop flyby var backdropFlybyOriginalY = backdropFlyby.y; // Make flyby move off the right side of backdrop scene tween(backdropFlyby, { x: 2048 + 375 }, { duration: 6000, easing: tween.linear, onFinish: function onFinish() { // After flyby has left the backdrop scene, fade in wave1 asset var wave1Asset = game.addChild(LK.getAsset('Wave1', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, alpha: 0 })); // Fade in wave1 asset tween(wave1Asset, { alpha: 1 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { // Keep wave1 visible for 3 seconds then fade out LK.setTimeout(function () { tween(wave1Asset, { alpha: 0 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { wave1Asset.destroy(); } }); }, 3000); } }); } }); // Add 6 horizontal guide lines immediately var lineSpacing = 2732 / 7; for (var i = 1; i <= 6; i++) { var yPosition = lineSpacing * i; if (i === 1) { yPosition += 600; // Move guideline 1 down by 600 pixels } else if (i === 2) { yPosition += 420; // Move guideline 2 down by 420 pixels } else if (i === 3) { yPosition += 250; // Move guideline 3 down by 250 pixels } else if (i === 4) { yPosition += 120; // Move guideline 4 down by 120 pixels } else if (i === 5) { yPosition -= 50; // Move guideline 5 up by 50 pixels } else if (i === 6) { yPosition -= 200; // Move guideline 6 up by 200 pixels } var guideLine = game.addChild(LK.getAsset('guideLine', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: yPosition, alpha: 0.5 })); } } // Add touch event to skip button skipButton.down = function (x, y, obj) { skipToBackdrop(); }; // Add flyby asset to title - start at right side of screen var flybyImage = game.addChild(LK.getAsset('Flyby', { anchorX: 0.5, anchorY: 0.5, x: 2048 + 375, y: 2732 / 2 + 1400 - 500 })); // Store the original Y position for flyby var flybyOriginalY = flybyImage.y; // Create hover animation function function startFlybyHover() { // Tween up 50 pixels over 2 seconds tween(flybyImage, { y: flybyOriginalY - 50 }, { duration: 2000, easing: tween.easeInOut, onFinish: function onFinish() { // Tween down 50 pixels over 2 seconds tween(flybyImage, { y: flybyOriginalY + 50 }, { duration: 2000, easing: tween.easeInOut, onFinish: function onFinish() { // Start the cycle again startFlybyHover(); } }); } }); } // Start the hover animation startFlybyHover(); // Start flyby movement from right to left tween(flybyImage, { x: -375 }, { duration: 8000, easing: tween.linear, onFinish: function onFinish() { // After flyby has left the screen, slowly scroll title up tween(titleImage, { y: titleImage.y - titleImage.height }, { duration: 20000, easing: tween.easeOut }); // Stop the title scrolling after 5 seconds LK.setTimeout(function () { tween.stop(titleImage, { y: true }); // Fade in intro asset in the middle of the screen var introAsset = game.addChild(LK.getAsset('intro', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, alpha: 0 })); // Tween alpha from 0 to 1 for fade-in effect tween(introAsset, { alpha: 1 }, { duration: 2000, easing: tween.easeInOut, onFinish: function onFinish() { // After intro has faded in, make flyby move from left to right flybyImage.x = -375; // Reset flyby to left side flybyImage.y = 2732 / 2; // Center vertically tween(flybyImage, { x: 2048 + 375 }, { duration: 6000, easing: tween.linear, onFinish: function onFinish() { // After flyby has left the screen, fade out intro and fade in backdrop tween(introAsset, { alpha: 0 }, { duration: 2000, easing: tween.easeInOut }); // Add backdrop asset to game var backdropAsset = game.addChild(LK.getAsset('Backdrop1', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, alpha: 0, scaleX: 0.5, scaleY: 0.5 })); // Add flyby asset to backdrop var backdropFlyby = game.addChild(LK.getAsset('Flyby', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 800, alpha: 0, scaleX: 0.8, scaleY: 0.8 })); // Store the original Y position for backdrop flyby var backdropFlybyOriginalY = backdropFlyby.y; // Make flyby move off the right side of backdrop scene function startBackdropFlybyHover() { tween(backdropFlyby, { x: 2048 + 375 }, { duration: 6000, easing: tween.linear, onFinish: function onFinish() { // After flyby has left the backdrop scene, fade in wave1 asset var wave1Asset = game.addChild(LK.getAsset('Wave1', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, alpha: 0 })); // Fade in wave1 asset tween(wave1Asset, { alpha: 1 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { // Keep wave1 visible for 3 seconds then fade out LK.setTimeout(function () { tween(wave1Asset, { alpha: 0 }, { duration: 1000, easing: tween.easeInOut, onFinish: function onFinish() { wave1Asset.destroy(); } }); }, 3000); } }); } }); } // Fade in backdrop tween(backdropAsset, { alpha: 1 }, { duration: 2000, easing: tween.easeInOut, onFinish: function onFinish() { // Fade in backdrop flyby tween(backdropFlyby, { alpha: 1 }, { duration: 2000, easing: tween.easeInOut, onFinish: function onFinish() { // Start flyby movement to right side after fade in startBackdropFlybyHover(); } }); // Add 6 horizontal guide lines after backdrop fades in var lineSpacing = 2732 / 7; // Divide screen height by 7 to get 6 lines with margins for (var i = 1; i <= 6; i++) { var yPosition = lineSpacing * i; if (i === 1) { yPosition += 600; // Move guideline 1 down by 600 pixels } else if (i === 2) { yPosition += 420; // Move guideline 2 down by 420 pixels } else if (i === 3) { yPosition += 250; // Move guideline 3 down by 250 pixels } else if (i === 4) { yPosition += 120; // Move guideline 4 down by 120 pixels } else if (i === 5) { yPosition -= 50; // Move guideline 5 up by 50 pixels } else if (i === 6) { yPosition -= 200; // Move guideline 6 up by 200 pixels } var guideLine = game.addChild(LK.getAsset('guideLine', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: yPosition, alpha: 0.5 })); } } }); } }); } }); }, 5000); } }); ;
===================================================================
--- original.js
+++ change.js
@@ -21,32 +21,13 @@
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
- anchorY: 0.5,
- scaleX: 0.3,
- scaleY: 0.3
+ anchorY: 0.5
});
- // Add number text
- self.numberText = new Text2('1', {
- size: 60,
- fill: 0x000000
- });
- self.numberText.anchor.set(0.5, 0.5);
- self.numberText.x = 0;
- self.numberText.y = 0;
- self.addChild(self.numberText);
- self.takeDamage = function (damage) {
- self.health -= damage;
- if (self.health <= 0) {
- self.health = 0;
- }
- };
self.update = function () {
- // Initialize lastX if not set
- if (self.lastX === undefined) self.lastX = self.x;
+ // Enemy logic goes here
};
- return self;
});
// Assets will be automatically created and loaded by the LK engine
// Tower class
var Tower = Container.expand(function () {
@@ -69,327 +50,25 @@
/****
* Game Code
****/
-// Game update loop
-game.update = function () {
- if (!gameStarted) return;
- // Spawn enemies
- enemySpawnTimer++;
- if (enemySpawnTimer >= enemySpawnInterval) {
- spawnEnemy();
- enemySpawnTimer = 0;
- }
- // Update enemies
- updateEnemies();
- // Check win condition
- if (enemiesSpawned >= maxEnemiesInWave && enemies.length === 0) {
- LK.showYouWin();
- }
-};
-var enemies = [];
-var towers = [];
-var gameStarted = false;
-var enemySpawnTimer = 0;
-var enemySpawnInterval = 120; // Spawn every 2 seconds at 60fps
-var enemiesSpawned = 0;
-var maxEnemiesInWave = 10; // Wave 1 has exactly 10 enemies
-var titleImage; // Global variable for title image
-var flybyImage; // Global variable for flyby image
-var skipButton; // Global variable for skip button
-// Tower defense functions
-function startTowerDefenseWave1() {
- gameStarted = true;
- enemySpawnTimer = 0;
- enemiesSpawned = 0;
-}
-function spawnEnemy() {
- if (enemiesSpawned >= maxEnemiesInWave) return;
- var enemy = game.addChild(new Enemy());
- // Position enemy at the right side of the screen
- enemy.x = 2048 - 50; // Start from right side
- enemy.y = 2732 / 7 + 600; // First guideline position
- enemy.health = 100;
- enemy.maxHealth = 100;
- enemy.speed = -2; // Negative speed to move left
- enemy.pathIndex = 0;
- enemy.lastPathIndex = -1;
- // Set enemy number
- enemy.numberText.setText((enemiesSpawned + 1).toString());
- enemies.push(enemy);
- enemiesSpawned++;
-}
-function updateEnemies() {
- for (var i = enemies.length - 1; i >= 0; i--) {
- var enemy = enemies[i];
- // Move enemy using its speed (negative for left movement)
- enemy.x += enemy.speed;
- // Check if enemy reached the left side of the screen
- if (enemy.lastX >= 0 && enemy.x < 0) {
- // Enemy reached the left side - remove it
- enemy.destroy();
- enemies.splice(i, 1);
- continue;
- }
- // Update last position for next frame
- enemy.lastX = enemy.x;
- }
-}
-// Start with cell cutscene
-var cellImage = game.addChild(LK.getAsset('cell', {
+// Import tween plugin
+// Display the title
+var titleImage = game.addChild(LK.getAsset('Title', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
- y: 2732 / 2,
- alpha: 0
+ y: 2732 / 2 + 1400
}));
-// Fade in cell image
-tween(cellImage, {
- alpha: 1
-}, {
- duration: 2000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // Keep cell visible for 3 seconds
- LK.setTimeout(function () {
- // Fade out cell
- tween(cellImage, {
- alpha: 0
- }, {
- duration: 2000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- cellImage.destroy();
- // Now display the title
- showTitleScene();
- }
- });
- }, 3000);
- }
+// Add skip intro button to top of title screen
+var skipButton = new Text2('SKIP INTRO', {
+ size: 60,
+ fill: 0xFFFFFF
});
-// Function to show title scene
-function showTitleScene() {
- // Display the title
- // Import tween plugin
- titleImage = game.addChild(LK.getAsset('Title', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 2048 / 2,
- y: 2732 / 2 + 1400
- }));
- // Add skip intro button to top of title screen
- skipButton = new Text2('SKIP INTRO', {
- size: 60,
- fill: 0xFFFFFF
- });
- skipButton.x = 2048 / 2;
- skipButton.y = 150;
- game.addChild(skipButton);
- // Add flyby asset to title - start at right side of screen
- flybyImage = game.addChild(LK.getAsset('Flyby', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 2048 + 375,
- y: 2732 / 2 + 1400 - 500
- }));
- // Add touch event to skip button
- skipButton.down = function (x, y, obj) {
- skipToBackdrop();
- };
- // Store the original Y position for flyby
- var flybyOriginalY = flybyImage.y;
- // Create hover animation function
- function startFlybyHover() {
- // Tween up 50 pixels over 2 seconds
- tween(flybyImage, {
- y: flybyOriginalY - 50
- }, {
- duration: 2000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // Tween down 50 pixels over 2 seconds
- tween(flybyImage, {
- y: flybyOriginalY + 50
- }, {
- duration: 2000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // Start the cycle again
- startFlybyHover();
- }
- });
- }
- });
- }
- // Start the hover animation
- startFlybyHover();
- // Start flyby movement from right to left
- tween(flybyImage, {
- x: -375
- }, {
- duration: 8000,
- easing: tween.linear,
- onFinish: function onFinish() {
- // After flyby has left the screen, slowly scroll title up
- tween(titleImage, {
- y: titleImage.y - titleImage.height
- }, {
- duration: 20000,
- easing: tween.easeOut
- });
- // Stop the title scrolling after 5 seconds
- LK.setTimeout(function () {
- tween.stop(titleImage, {
- y: true
- });
- // Fade in intro asset in the middle of the screen
- var introAsset = game.addChild(LK.getAsset('intro', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 2048 / 2,
- y: 2732 / 2,
- alpha: 0
- }));
- // Tween alpha from 0 to 1 for fade-in effect
- tween(introAsset, {
- alpha: 1
- }, {
- duration: 2000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // After intro has faded in, make flyby move from left to right
- flybyImage.x = -375; // Reset flyby to left side
- flybyImage.y = 2732 / 2; // Center vertically
- tween(flybyImage, {
- x: 2048 + 375
- }, {
- duration: 6000,
- easing: tween.linear,
- onFinish: function onFinish() {
- // After flyby has left the screen, fade out intro and fade in backdrop
- tween(introAsset, {
- alpha: 0
- }, {
- duration: 2000,
- easing: tween.easeInOut
- });
- // Add backdrop asset to game
- var backdropAsset = game.addChild(LK.getAsset('backdrop', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 2048 / 2,
- y: 2732 / 2,
- alpha: 0,
- scaleX: 0.5,
- scaleY: 0.5
- }));
- // Add flyby asset to backdrop
- var backdropFlyby = game.addChild(LK.getAsset('Flyby', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 2048 / 2,
- y: 2732 / 2 - 800,
- alpha: 0,
- scaleX: 0.8,
- scaleY: 0.8
- }));
- // Store the original Y position for backdrop flyby
- var backdropFlybyOriginalY = backdropFlyby.y;
- // Make flyby move off the right side of backdrop scene
- function startBackdropFlybyHover() {
- tween(backdropFlyby, {
- x: 2048 + 375
- }, {
- duration: 6000,
- easing: tween.linear,
- onFinish: function onFinish() {
- // After flyby has left the backdrop scene, fade in wave1 asset
- var wave1Asset = game.addChild(LK.getAsset('Wave1', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 2048 / 2,
- y: 2732 / 2,
- alpha: 0
- }));
- // Fade in wave1 asset
- tween(wave1Asset, {
- alpha: 1
- }, {
- duration: 1000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // Keep wave1 visible for 3 seconds then fade out
- LK.setTimeout(function () {
- tween(wave1Asset, {
- alpha: 0
- }, {
- duration: 1000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- wave1Asset.destroy();
- // Start first wave of tower defense game
- startTowerDefenseWave1();
- }
- });
- }, 3000);
- }
- });
- }
- });
- }
- // Fade in backdrop
- tween(backdropAsset, {
- alpha: 1
- }, {
- duration: 2000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // Fade in backdrop flyby
- tween(backdropFlyby, {
- alpha: 1
- }, {
- duration: 2000,
- easing: tween.easeInOut,
- onFinish: function onFinish() {
- // Start flyby movement to right side after fade in
- startBackdropFlybyHover();
- }
- });
- // Add 6 horizontal guide lines after backdrop fades in
- var lineSpacing = 2732 / 7; // Divide screen height by 7 to get 6 lines with margins
- for (var i = 1; i <= 6; i++) {
- var yPosition = lineSpacing * i;
- if (i === 1) {
- yPosition += 600; // Move guideline 1 down by 600 pixels
- } else if (i === 2) {
- yPosition += 420; // Move guideline 2 down by 420 pixels
- } else if (i === 3) {
- yPosition += 250; // Move guideline 3 down by 250 pixels
- } else if (i === 4) {
- yPosition += 120; // Move guideline 4 down by 120 pixels
- } else if (i === 5) {
- yPosition -= 50; // Move guideline 5 up by 50 pixels
- } else if (i === 6) {
- yPosition -= 200; // Move guideline 6 up by 200 pixels
- }
- var guideLine = game.addChild(LK.getAsset('guideLine', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: 2048 / 2,
- y: yPosition,
- alpha: 0.5
- }));
- }
- }
- });
- }
- });
- }
- });
- }, 5000);
- }
- });
-}
+skipButton.anchor.set(0.5, 0);
+skipButton.x = 2048 / 2;
+skipButton.y = 150;
+game.addChild(skipButton);
// Function to skip directly to backdrop scene
function skipToBackdrop() {
// Stop all tweens
tween.stop(titleImage);
@@ -398,9 +77,9 @@
titleImage.destroy();
flybyImage.destroy();
skipButton.destroy();
// Add backdrop asset to game
- var backdropAsset = game.addChild(LK.getAsset('backdrop', {
+ var backdropAsset = game.addChild(LK.getAsset('Backdrop1', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2,
@@ -450,10 +129,8 @@
duration: 1000,
easing: tween.easeInOut,
onFinish: function onFinish() {
wave1Asset.destroy();
- // Start first wave of tower defense game
- startTowerDefenseWave1();
}
});
}, 3000);
}
@@ -485,5 +162,207 @@
alpha: 0.5
}));
}
}
+// Add touch event to skip button
+skipButton.down = function (x, y, obj) {
+ skipToBackdrop();
+};
+// Add flyby asset to title - start at right side of screen
+var flybyImage = game.addChild(LK.getAsset('Flyby', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 + 375,
+ y: 2732 / 2 + 1400 - 500
+}));
+// Store the original Y position for flyby
+var flybyOriginalY = flybyImage.y;
+// Create hover animation function
+function startFlybyHover() {
+ // Tween up 50 pixels over 2 seconds
+ tween(flybyImage, {
+ y: flybyOriginalY - 50
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ // Tween down 50 pixels over 2 seconds
+ tween(flybyImage, {
+ y: flybyOriginalY + 50
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ // Start the cycle again
+ startFlybyHover();
+ }
+ });
+ }
+ });
+}
+// Start the hover animation
+startFlybyHover();
+// Start flyby movement from right to left
+tween(flybyImage, {
+ x: -375
+}, {
+ duration: 8000,
+ easing: tween.linear,
+ onFinish: function onFinish() {
+ // After flyby has left the screen, slowly scroll title up
+ tween(titleImage, {
+ y: titleImage.y - titleImage.height
+ }, {
+ duration: 20000,
+ easing: tween.easeOut
+ });
+ // Stop the title scrolling after 5 seconds
+ LK.setTimeout(function () {
+ tween.stop(titleImage, {
+ y: true
+ });
+ // Fade in intro asset in the middle of the screen
+ var introAsset = game.addChild(LK.getAsset('intro', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2,
+ alpha: 0
+ }));
+ // Tween alpha from 0 to 1 for fade-in effect
+ tween(introAsset, {
+ alpha: 1
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ // After intro has faded in, make flyby move from left to right
+ flybyImage.x = -375; // Reset flyby to left side
+ flybyImage.y = 2732 / 2; // Center vertically
+ tween(flybyImage, {
+ x: 2048 + 375
+ }, {
+ duration: 6000,
+ easing: tween.linear,
+ onFinish: function onFinish() {
+ // After flyby has left the screen, fade out intro and fade in backdrop
+ tween(introAsset, {
+ alpha: 0
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut
+ });
+ // Add backdrop asset to game
+ var backdropAsset = game.addChild(LK.getAsset('Backdrop1', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2,
+ alpha: 0,
+ scaleX: 0.5,
+ scaleY: 0.5
+ }));
+ // Add flyby asset to backdrop
+ var backdropFlyby = game.addChild(LK.getAsset('Flyby', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2 - 800,
+ alpha: 0,
+ scaleX: 0.8,
+ scaleY: 0.8
+ }));
+ // Store the original Y position for backdrop flyby
+ var backdropFlybyOriginalY = backdropFlyby.y;
+ // Make flyby move off the right side of backdrop scene
+ function startBackdropFlybyHover() {
+ tween(backdropFlyby, {
+ x: 2048 + 375
+ }, {
+ duration: 6000,
+ easing: tween.linear,
+ onFinish: function onFinish() {
+ // After flyby has left the backdrop scene, fade in wave1 asset
+ var wave1Asset = game.addChild(LK.getAsset('Wave1', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: 2732 / 2,
+ alpha: 0
+ }));
+ // Fade in wave1 asset
+ tween(wave1Asset, {
+ alpha: 1
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ // Keep wave1 visible for 3 seconds then fade out
+ LK.setTimeout(function () {
+ tween(wave1Asset, {
+ alpha: 0
+ }, {
+ duration: 1000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ wave1Asset.destroy();
+ }
+ });
+ }, 3000);
+ }
+ });
+ }
+ });
+ }
+ // Fade in backdrop
+ tween(backdropAsset, {
+ alpha: 1
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ // Fade in backdrop flyby
+ tween(backdropFlyby, {
+ alpha: 1
+ }, {
+ duration: 2000,
+ easing: tween.easeInOut,
+ onFinish: function onFinish() {
+ // Start flyby movement to right side after fade in
+ startBackdropFlybyHover();
+ }
+ });
+ // Add 6 horizontal guide lines after backdrop fades in
+ var lineSpacing = 2732 / 7; // Divide screen height by 7 to get 6 lines with margins
+ for (var i = 1; i <= 6; i++) {
+ var yPosition = lineSpacing * i;
+ if (i === 1) {
+ yPosition += 600; // Move guideline 1 down by 600 pixels
+ } else if (i === 2) {
+ yPosition += 420; // Move guideline 2 down by 420 pixels
+ } else if (i === 3) {
+ yPosition += 250; // Move guideline 3 down by 250 pixels
+ } else if (i === 4) {
+ yPosition += 120; // Move guideline 4 down by 120 pixels
+ } else if (i === 5) {
+ yPosition -= 50; // Move guideline 5 up by 50 pixels
+ } else if (i === 6) {
+ yPosition -= 200; // Move guideline 6 up by 200 pixels
+ }
+ var guideLine = game.addChild(LK.getAsset('guideLine', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: 2048 / 2,
+ y: yPosition,
+ alpha: 0.5
+ }));
+ }
+ }
+ });
+ }
+ });
+ }
+ });
+ }, 5000);
+ }
+});
;
\ No newline at end of file
White circle with two eyes, seen from above.. In-Game asset. 2d. High contrast. No shadows
White simple circular enemy seen from above, black outline. Black eyes, with a single shield in-font of it. Black and white only. Blue background.
White circle with black outline. Blue background.. In-Game asset. 2d. High contrast. No shadows
Fire hydrant. In-Game asset. 2d. High contrast. No shadows
Water spraying forward In-Game asset. 2d. High contrast. No shadows
Fan blades symmetrical. In-Game asset. 2d. High contrast. No shadows
Plasma ball. In-Game asset. 2d. High contrast. No shadows
Make picture transparent
Bug zapper on a pole. In-Game asset. 2d. High contrast. No shadows
Probe droid. In-Game asset. 2d. High contrast. No shadows
Space drone. In-Game asset. 2d. High contrast. No shadows
Remove propellers and make them symmetrical
Add more rows to gris
Make this picture with more night sky above the city skyline
Change text to say wave 1
Make button grey and say ??????
Make it say Wave 2
Make it say wave 3
Make it say wave 4
WiFi symbol. In-Game asset. 2d. High contrast. No shadows
explosion effect In-Game asset. 2d. High contrast. No shadows
Make it say wave 5
Remove laser beam
Make button hot pink and say 'Reflect $20'
Make button blue and change text to say 'Water $10' in a retro style font
Make button green and change test to say 'Gas $20'
Make button orange and change test to say 'Fire $40'
Make button very light blue and change test to say 'Air $30'
Make button gold and change text to say 'Electric $50'
Make button purple and change test to say 'Plasma $60'
Make button Teal and change test to say 'Slingshot $100'
Make button silver and change test to say 'WiFi $150'
Remove little kick so it's just a smooth oval shape
Make grid 6x8
Hand should be holding the gun by the Handle
Place laser cannon in both hands holding it like a shotgun
Make it stand still
Remove the words 5g
Make sure spelling in speech bubble is correct "We have found the earthlings weakness"
Fix the spelling of the word Planet
Slingshot. In-Game asset. 2d. High contrast. No shadows
Red button with a 'X' on it. In-Game asset. 2d. High contrast. No shadows
Green button with a tick on it
Fix the spelling of word saw
Display icon that says score sci fi comic style font. In-Game asset. 2d. High contrast. No shadows
Display icon that says cash sci fi comic style font. In-Game asset. 2d. High contrast. No shadows
Display icon that says X2 speed sci fi comic style font. In-Game asset. 2d. High contrast. No shadows
Make it say x1 speed and make the x1 blue
Canvasser
Sound effect
Alien1
Sound effect
Alien2
Sound effect
Alien3
Sound effect
Intro
Music
Probedroid
Sound effect
Probedroid2
Sound effect
Towerselect
Sound effect
Water
Sound effect
Explosion
Sound effect
Confirm
Sound effect
Fart
Sound effect
Electric
Sound effect
Fireball
Sound effect