User prompt
add the lines of code that you showed me to house3 as in house1
User prompt
add it to the house3
Code edit (1 edits merged)
Please save this source code
User prompt
do the same code of house1 to house3
Code edit (1 edits merged)
Please save this source code
User prompt
Modify house2 down event handler to prevent timer reset when clicked
User prompt
when i click the house2 the time start over from 2:30 it must not do that only by coins and after clicking the second one.
User prompt
when i click the house2 the time start over from 2:30 it must not do that only by coins and after clicking the second one. Modify house2 down event handler to prevent timer reset when clicked
User prompt
Do the same for house2
User prompt
when i click the house the time start over from 2:30 it must not do that only by coins and after clicking the second one.
User prompt
when i click the house the time start over from 2:30 it must not do that only by coins and after clicking the second one. Modify house1 down event handler to prevent timer reset when clicked
User prompt
after duplicating and placing house1 on background1 don't restart timertext from over by clicking or dragging house1 only show and restart it after clicking the second coin.
User prompt
after duplicating and placing house1 on background1 don't restart timertext from over by clicking it or dragging it.
User prompt
don't restart timertext by any reason show it and start decreasing it after clicking both coins of the house1
User prompt
didn't disabled!
User prompt
after placing house1 on background1 make the click on house1 off because clicking house restarting the time again from 2:30!
User prompt
remove the click on house1 to prevent timer from starting over.
User prompt
don't restart timer if i click on house1 when it is placed on background1.
User prompt
don't restart timer if i click on house1 when it is placed on background1.
User prompt
remove the click on house1 when placed on background1 let the click from slot only.
User prompt
remove the click on the house1 after duplicating from slot and placing it on background1 let click on it from slots and the click on the coins when they respawns only.
User prompt
Fix house1 down event to prevent timer reset when clicked after placement Update coin collection to increment the coinsCollected counter for house1 Update duplicate.up function for house1 to handle timer restarting only after collecting both coins Update house1 countdown timer completion to reset only when both coins are collected Modify house1 countdown to restart only after collecting both coins.
User prompt
when i click the house1 the time start over from 2:30 it must not do that only restarting after collecting the 2 coins
User prompt
Modify house1 down event handler to prevent timer reset when clicked
User prompt
Modify house1 up event handler to prevent timer reset when clicked
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x73f8a8 }); /**** * Game Code ****/ var background1 = LK.getAsset('background1', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, // Center horizontally y: 2732 / 2, // Center vertically speed: 5, // Add speed property for background1 hd: true, // Enable HD mode for the image quality: "hd" // Explicitly set HD quality }); background1.dragOffset = { x: 0, y: 0 }; // Initialize dragOffset // Add drag functionality to background1 background1.down = function (x, y, obj) { this.dragging = true; this.data = obj; var newPosition = this.parent.toLocal(obj.global); this.dragOffset.x = this.x - newPosition.x; // Calculate offset this.dragOffset.y = this.y - newPosition.y; // Calculate offset }; background1.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); var deltaX = newPosition.x + this.dragOffset.x - this.x; // Calculate deltaX var deltaY = newPosition.y + this.dragOffset.y - this.y; // Calculate deltaY this.x += deltaX; // Update position this.y += deltaY; // Update position button2Text.x -= deltaX; // Prevent button2Text from moving button2Text.y -= deltaY; // Prevent button2Text from moving button1Text.x -= deltaX; // Prevent button1Text from moving button1Text.y -= deltaY; // Prevent button1Text from moving scoreText.x -= deltaX; // Prevent scoreText from moving scoreText.y -= deltaY; // Prevent scoreText from moving scoreWall.x -= deltaX; // Prevent scoreWall from moving scoreWall.y -= deltaY; // Prevent scoreWall from moving if (house1.timerText) { house1.timerText.x = house1.x; // Reposition house1 timerText to house1's x house1.timerText.y = house1.y - house1.height / 2 - 20; // Reposition house1 timerText to above and close to house1 } coinIcon.x -= deltaX; // Prevent coinIcon from moving coinIcon.y -= deltaY; // Prevent coinIcon from moving // Sync grid movement directly with background1 game.children.forEach(function (child) { if (child !== background1 && child !== buildAsset && child !== button1Asset && child !== button2Asset && child !== background2 && child !== background3 && child !== scrollbar && child !== scrollbutton && child !== scrollbutton3 && child !== scrollbar3) { child.x += deltaX; // Move grid with the same delta as background1 child.y += deltaY; // Move grid with the same delta as background1 } }); } }; background1.up = function () { this.dragging = false; this.data = null; // Removed timer text addition and positioning from background1 }; game.addChildAt(background1, 0); game.children.forEach(function (child) { if (child.assetId === 'Grid') { game.setChildIndex(child, game.children.length - 1); } }); var scrollbar = LK.getAsset('scrollbar', { anchorX: 1.0, anchorY: 0.0, x: 2048, y: 0, visible: false // Initially hidden }); var scrollbutton = LK.getAsset('scrollbutton', { anchorX: 1.0, anchorY: 0.5, x: 2048, y: 0, visible: false // Initially hidden }); game.addChildAt(background1, 0); var background2 = LK.getAsset('background2', { anchorX: 0.0, anchorY: 0.0, x: 0, y: 0, speed: 10, // Speed property for background2 visible: false // Initially hidden }); game.addChildAt(background2, game.children.length); game.addChild(scrollbar); game.addChild(scrollbutton); background2.children.forEach(function (child) { return child.visible = false; }); var background3 = LK.getAsset('background3', { anchorX: 0.0, anchorY: 0.0, x: 0, y: 0, speed: 10, // Speed property for background3 visible: false // Initially hidden }); game.children.forEach(function (child) { if (child.assetId === 'Grid') { game.setChildIndex(child, game.children.length - 1); } }); game.addChildAt(background3, game.children.length); background3.children.forEach(function (child) { return child.visible = false; }); var scrollbar3 = LK.getAsset('scrollbar', { anchorX: 1.0, anchorY: 0.0, x: 2048, y: 0, visible: false // Initially hidden }); game.addChild(scrollbar3); var scrollbutton3 = LK.getAsset('scrollbutton', { anchorX: 1.0, anchorY: 0.5, x: 2048, y: 0, visible: false // Initially hidden }); game.addChild(scrollbutton3); var slotSpacing3 = 50; // Define the space between slots for background3 for (var i = 0; i < 4; i++) { var slot3 = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing3 + 450) + slotSpacing3 + 200, y: 300 // Arbitrary y position }); background3.addChildAt(slot3, background3.children.length); // Add pricewall below each slot var pricewall3 = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot3.x, y: slot3.y + slot3.height / 2 + 0 // Position below the slot }); background3.addChild(pricewall3); // Add trees to the slots of background3 if (i === 0) { var tree1 = LK.getAsset('tree1', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree1); // Add pricetext below tree1 var priceTextTree1 = new Text2('200AD', { size: 70, fill: 0xFFFFFF }); priceTextTree1.anchor.set(0.5, 0); priceTextTree1.x = slot3.x; priceTextTree1.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree1); tree1.down = function (x, y, obj) { // Check if player has enough score to purchase tree1 if (LK.getScore() >= 200) { LK.setScore(LK.getScore() - 200); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree1', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background1) + 1); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { // Adjusted to drop to the bottom of the tree coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { // Bounce 3 times if (coin.y > this.y + 50 - bounceHeight) { // Adjusted to bounce from the bottom of the tree coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 1) { var tree2 = LK.getAsset('tree2', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree2); // Add pricetext below tree2 var priceTextTree2 = new Text2('200AD', { size: 70, fill: 0xFFFFFF }); priceTextTree2.anchor.set(0.5, 0); priceTextTree2.x = slot3.x; priceTextTree2.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree2); tree2.down = function (x, y, obj) { // Check if player has enough score to purchase tree2 if (LK.getScore() >= 200) { LK.setScore(LK.getScore() - 200); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree2', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background1) + 1); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < duplicate.y + 50) { // Adjusted to drop to the bottom of the tree coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { // Bounce 3 times if (coin.y > duplicate.y + 50 - bounceHeight) { // Adjusted to bounce from the bottom of the tree coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var tree3 = LK.getAsset('tree3', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree3); // Add pricetext below tree3 var priceTextTree3 = new Text2('200AD', { size: 70, fill: 0xFFFFFF }); priceTextTree3.anchor.set(0.5, 0); priceTextTree3.x = slot3.x; priceTextTree3.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree3); tree3.down = function (x, y, obj) { // Check if player has enough score to purchase tree3 if (LK.getScore() >= 200) { LK.setScore(LK.getScore() - 200); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree3', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background1) + 1); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var tree4 = LK.getAsset('tree4', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree4); // Add pricetext below tree4 var priceTextTree4 = new Text2('200AD', { size: 70, fill: 0xFFFFFF }); priceTextTree4.anchor.set(0.5, 0); priceTextTree4.x = slot3.x; priceTextTree4.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree4); tree4.down = function (x, y, obj) { // Check if player has enough score to purchase tree4 if (LK.getScore() >= 200) { LK.setScore(LK.getScore() - 200); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree4', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background1) + 1); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 13); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } // Add 4 slots below the first slots that are synced in background3 for (var i = 0; i < 4; i++) { var slot3 = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing3 + 450) + slotSpacing3 + 200, y: 900 // Increase y position to add more space }); background3.addChildAt(slot3, background3.children.length); // Add pricewall below each slot in the second line var pricewall3 = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot3.x, y: slot3.y + slot3.height / 2 + 0 // Position below the slot }); background3.addChild(pricewall3); // Add trees to the slots of background3 if (i === 0) { var tree5 = LK.getAsset('tree5', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree5); // Add pricetext below tree5 var priceTextTree5 = new Text2('300AD', { size: 70, fill: 0xFFFFFF }); priceTextTree5.anchor.set(0.5, 0); priceTextTree5.x = slot3.x; priceTextTree5.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree5); tree5.down = function (x, y, obj) { // Check if player has enough score to purchase tree5 if (LK.getScore() >= 300) { LK.setScore(LK.getScore() - 300); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree5', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 1) { var tree6 = LK.getAsset('tree6', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree6); // Add pricetext below tree6 var priceTextTree6 = new Text2('300AD', { size: 70, fill: 0xFFFFFF }); priceTextTree6.anchor.set(0.5, 0); priceTextTree6.x = slot3.x; priceTextTree6.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree6); tree6.down = function (x, y, obj) { // Check if player has enough score to purchase tree6 if (LK.getScore() >= 300) { LK.setScore(LK.getScore() - 300); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree6', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var tree7 = LK.getAsset('tree7', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree7); // Add pricetext below tree7 var priceTextTree7 = new Text2('300AD', { size: 70, fill: 0xFFFFFF }); priceTextTree7.anchor.set(0.5, 0); priceTextTree7.x = slot3.x; priceTextTree7.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree7); tree7.down = function (x, y, obj) { // Check if player has enough score to purchase tree7 if (LK.getScore() >= 300) { LK.setScore(LK.getScore() - 300); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree7', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var tree8 = LK.getAsset('tree8', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree8); // Add pricetext below tree8 var priceTextTree8 = new Text2('300AD', { size: 70, fill: 0xFFFFFF }); priceTextTree8.anchor.set(0.5, 0); priceTextTree8.x = slot3.x; priceTextTree8.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree8); tree8.down = function (x, y, obj) { // Check if player has enough score to purchase tree8 if (LK.getScore() >= 300) { LK.setScore(LK.getScore() - 300); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree8', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 18); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } // Add another 4 slots below the second 4 slots for (var i = 0; i < 4; i++) { var slot3 = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing3 + 450) + slotSpacing3 + 200, y: 1500 // Increase y position to add more space }); background3.addChildAt(slot3, background3.children.length); // Add pricewall below each slot in the third line var pricewall3 = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot3.x, y: slot3.y + slot3.height / 2 + 0 // Position below the slot }); background3.addChild(pricewall3); // Add trees to the slots of background3 if (i === 0) { var tree9 = LK.getAsset('tree9', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree9); var priceTextTree9 = new Text2('400AD', { size: 70, fill: 0xFFFFFF }); priceTextTree9.anchor.set(0.5, 0); priceTextTree9.x = slot3.x; priceTextTree9.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree9); tree9.down = function (x, y, obj) { // Check if player has enough score to purchase tree9 if (LK.getScore() >= 400) { LK.setScore(LK.getScore() - 400); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree9', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 27); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 27); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 1) { var tree10 = LK.getAsset('tree10', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree10); var priceTextTree10 = new Text2('400AD', { size: 70, fill: 0xFFFFFF }); priceTextTree10.anchor.set(0.5, 0); priceTextTree10.x = slot3.x; priceTextTree10.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree10); tree10.down = function (x, y, obj) { // Check if player has enough score to purchase tree10 if (LK.getScore() >= 400) { LK.setScore(LK.getScore() - 400); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree10', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 27); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 27); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var tree11 = LK.getAsset('tree11', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree11); var priceTextTree11 = new Text2('400AD', { size: 70, fill: 0xFFFFFF }); priceTextTree11.anchor.set(0.5, 0); priceTextTree11.x = slot3.x; priceTextTree11.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree11); tree11.down = function (x, y, obj) { // Check if player has enough score to purchase tree11 if (LK.getScore() >= 400) { LK.setScore(LK.getScore() - 400); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree11', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - 100 // Start from the top to the bottom of the tree }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - 100 // Start from the top to the bottom of the tree }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 35); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 35); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var tree12 = LK.getAsset('tree12', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree12); var priceTextTree12 = new Text2('400AD', { size: 70, fill: 0xFFFFFF }); priceTextTree12.anchor.set(0.5, 0); priceTextTree12.x = slot3.x; priceTextTree12.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree12); tree12.down = function (x, y, obj) { // Check if player has enough score to purchase tree12 if (LK.getScore() >= 400) { LK.setScore(LK.getScore() - 400); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree12', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('0:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - 100 // Start from the top to the bottom of the tree }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - 100 // Start from the top to the bottom of the tree }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 35); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 35); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } // Add another 4 slots below the third 4 slots for (var i = 0; i < 4; i++) { var slot3 = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing3 + 450) + slotSpacing3 + 200, y: 2100 // Increase y position to add more space }); background3.addChildAt(slot3, background3.children.length); // Add pricewall below each slot in the fourth line var pricewall3 = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot3.x, y: slot3.y + slot3.height / 2 + 0 // Position below the slot }); background3.addChild(pricewall3); // Add trees to the slots of background3 if (i === 0) { var tree13 = LK.getAsset('tree13', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree13); // Add pricetext below tree13 var priceTextTree13 = new Text2('500AD', { size: 70, fill: 0xFFFFFF }); priceTextTree13.anchor.set(0.5, 0); priceTextTree13.x = slot3.x; priceTextTree13.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree13); tree13.down = function (x, y, obj) { // Check if player has enough score to purchase tree13 if (LK.getScore() >= 500) { LK.setScore(LK.getScore() - 500); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree13', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - 100 // Start from the top to the bottom of the tree }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - 100 // Start from the top to the bottom of the tree }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 1) { var tree14 = LK.getAsset('tree14', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree14); // Add pricetext below tree14 var priceTextTree14 = new Text2('500AD', { size: 70, fill: 0xFFFFFF }); priceTextTree14.anchor.set(0.5, 0); priceTextTree14.x = slot3.x; priceTextTree14.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree14); tree14.down = function (x, y, obj) { // Check if player has enough score to purchase tree14 if (LK.getScore() >= 500) { LK.setScore(LK.getScore() - 500); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree14', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - 100 // Start from the top to the bottom of the tree }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - 100 // Start from the top to the bottom of the tree }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var tree15 = LK.getAsset('tree15', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree15); // Add pricetext below tree15 var priceTextTree15 = new Text2('500AD', { size: 70, fill: 0xFFFFFF }); priceTextTree15.anchor.set(0.5, 0); priceTextTree15.x = slot3.x; priceTextTree15.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree15); tree15.down = function (x, y, obj) { // Check if player has enough score to purchase tree15 if (LK.getScore() >= 500) { LK.setScore(LK.getScore() - 500); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree15', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - 100 // Start from the top to the bottom of the tree }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - 100 // Start from the top to the bottom of the tree }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 45); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 45); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var tree16 = LK.getAsset('tree16', { anchorX: 0.5, anchorY: 0.5, x: slot3.x, y: slot3.y }); background3.addChild(tree16); // Add pricetext below tree16 var priceTextTree16 = new Text2('500AD', { size: 70, fill: 0xFFFFFF }); priceTextTree16.anchor.set(0.5, 0); priceTextTree16.x = slot3.x; priceTextTree16.y = slot3.y + slot3.height / 2; background3.addChild(priceTextTree16); tree16.down = function (x, y, obj) { // Check if player has enough score to purchase tree16 if (LK.getScore() >= 500) { LK.setScore(LK.getScore() - 500); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('tree16', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background2)); } else { return; // Not enough score, don't create duplicate } // Add timer text above the placed tree if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the tree duplicate.dragging = true; duplicate.data = obj; // Hide background3 and its components background3.visible = false; background1.visible = true; scrollbar3.visible = false; scrollbutton3.visible = false; background3.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed tree if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the tree // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.move = function () { // Do nothing - tree is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the tree var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - 100 // Start from the top to the bottom of the tree }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - 100 // Start from the top to the bottom of the tree }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 3) { if (coin.y > this.y + 50 - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 45); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 45); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } scrollbutton3.down = function (x, y, obj) { this.dragging = true; this.data = obj; this.alpha = 0.5; }; scrollbutton3.up = function () { this.alpha = 1; this.dragging = false; this.data = null; }; scrollbutton3.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); // Limit the y position of the scrollbutton to the height of the scrollbar this.y = Math.max(Math.min(newPosition.y, scrollbar3.height - this.height / 2), this.height / 2); // Calculate the ratio of the scrollbutton's position to the scrollbar's height var ratio = (this.y - this.height / 2) / (scrollbar3.height - this.height); // Move the background3 up or down based on the ratio and the speed background3.y = -ratio * (background3.height - game.height); } }; var buildAsset = LK.getAsset('Build', { anchorX: 0.5, // Center the anchor point horizontally anchorY: 0.0, // Anchor point at the top x: 150, // Position on the left side of the screen y: 400 // Position directly below the pause button }); game.addChild(buildAsset); var button1Asset = LK.getAsset('button1', { anchorX: 0.5, anchorY: 0.0, x: 400, y: 0, visible: false // Initially hidden }); game.addChild(button1Asset); var button2Asset = LK.getAsset('button2', { anchorX: 0.5, anchorY: 0.0, x: button1Asset.x + button1Asset.width + 10, y: 0, visible: false // Initially hidden }); game.addChild(button2Asset); // Add text 'House' to button1 var button1Text = new Text2('House', { size: 80, fill: 0xFFFFFF }); button1Text.anchor.set(0.5, 0.5); // Center the text on the button button1Text.x = button1Asset.x; button1Text.y = button1Asset.y + button1Asset.height / 2; button1Text.visible = false; game.addChild(button1Text); // Add text 'Tree' to button2 var button2Text = new Text2('Tree', { size: 80, fill: 0xFFFFFF }); button2Text.anchor.set(0.5, 0.5); // Center the text on the button button2Text.x = button2Asset.x; button2Text.y = button2Asset.y + button2Asset.height / 2; button2Text.visible = false; game.addChild(button2Text); // Add score text to the top right corner var scoreWall = LK.getAsset('scorewall', { anchorX: 1, anchorY: 0, x: 2048, y: 0 }); game.addChild(scoreWall); var coinIcon = LK.getAsset('Coin', { anchorX: 1, anchorY: 0, x: scoreWall.x - scoreWall.width - 10, // Position coin to the left of scoreWall y: scoreWall.y }); game.addChild(coinIcon); var scoreText = new Text2('200', { size: 80, fill: 0xFFFFFF }); LK.setScore(200); scoreText.anchor.set(1.5, 0); // Anchor to the top right corner scoreText.x = 2048; // Right edge of the screen scoreText.y = 0; // Top edge of the screen game.addChild(scoreText); // Function to update score function updateScore() { var score = 0; game.children.forEach(function (child) { if (child.assetId && child.assetId.startsWith('tree')) { score++; } }); scoreText.setText('Score: ' + score); } // Add click event to button2 to toggle visibility of background3, its slots, and scroll components button2Asset.down = function (x, y, obj) { // Toggle visibility of background3 and its components background3.visible = !background3.visible; game.children.forEach(function (child) { if (child.assetId === 'Grid') { child.visible = false; } }); scrollbar3.visible = !scrollbar3.visible; scrollbutton3.visible = !scrollbutton3.visible; background3.children.forEach(function (child) { child.visible = background3.visible; }); // Toggle visibility of background1 based on background2 and background3 visibility background1.visible = !(background2.visible || background3.visible); // Hide all grids when button2 is clicked }; // Add click event to button1 to toggle visibility of background2, its slots, and scroll components button1Asset.down = function (x, y, obj) { // Toggle visibility of background2 and its components background2.visible = !background2.visible; game.children.forEach(function (child) { if (child.assetId === 'Grid') { child.visible = false; } }); scrollbar.visible = !scrollbar.visible; scrollbutton.visible = !scrollbutton.visible; background2.children.forEach(function (child) { child.visible = background2.visible; }); // Toggle visibility of background1 based on background2 and background3 visibility background1.visible = !(background2.visible || background3.visible); // Hide all grids when button1 is clicked }; // Add click event to build asset to hide background2 and background3 with their components buildAsset.down = function (x, y, obj) { button1Asset.visible = !button1Asset.visible; button1Text.visible = !button1Text.visible; button2Asset.visible = !button2Asset.visible; button2Text.visible = !button2Text.visible; background2.visible = false; scrollbar.visible = false; scrollbutton.visible = false; background3.visible = false; scrollbar3.visible = false; scrollbutton3.visible = false; background1.visible = true; // Ensure background1 is always visible when build is clicked }; var slotSpacing = 50; // Define the space between slots for (var i = 0; i < 4; i++) { var slot = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing + 450) + slotSpacing + 200, // Position slots with space between them y: 300 // Arbitrary y position }); background2.addChildAt(slot, background2.children.length); // Add pricewall below each slot var pricewall = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot.x, y: slot.y + slot.height / 2 + 0 // Position below the slot }); background2.addChild(pricewall); // Add house1 to the first slot on the left if (i === 0) { var house1 = LK.getAsset('house1', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house1); // Add pricetext below house1 var priceText1 = new Text2('50AD', { size: 70, fill: 0xFFFFFF }); priceText1.anchor.set(0.5, 0); priceText1.x = pricewall.x; priceText1.y = pricewall.y + pricewall.height / 2 - priceText1.height / 2; background2.addChild(priceText1); house1.down = function (x, y, obj) { // Check if player has enough score to purchase house1 if (LK.getScore() >= 50) { LK.setScore(LK.getScore() - 50); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house1', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { // Only allow dragging if timer hasn't started yet if (!this.countdownInterval) { this.dragging = true; this.data = obj; } }; duplicate.move = function (x, y, obj) { if (this.dragging && !this.countdownInterval) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Don't start countdown here, wait for the second coin click // Just initialize properties for later use this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Store reference to parent house for coins coin1.parentHouse = this; coin2.parentHouse = this; // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); // Start countdown after clicking the second coin var house = this.parentHouse; if (house && !house.countdownInterval) { // Prevent further movement after countdown starts house.down = function () { // Do nothing - house is now fixed in place until timer finishes }; house.move = function () { // Do nothing - house is now fixed in place until timer finishes }; house.countdownInterval = LK.setInterval(function () { house.countdown--; var minutes = Math.floor(house.countdown / 60); var seconds = house.countdown % 60; house.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (house.countdown <= 0) { LK.clearInterval(house.countdownInterval); game.removeChild(house.timerText); house.timerText = null; // Reset timerText to null } }.bind(house), 1000); } }; }; }; } else if (i === 1) { var house2 = LK.getAsset('house2', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house2); // Add pricetext below house2 var priceText2 = new Text2('50AD', { size: 70, fill: 0xFFFFFF }); priceText2.anchor.set(0.5, 0); priceText2.x = pricewall.x; priceText2.y = pricewall.y + pricewall.height / 2 - priceText2.height / 2; background2.addChild(priceText2); house2.down = function (x, y, obj) { // Check if player has enough score to purchase house2 if (LK.getScore() >= 50) { LK.setScore(LK.getScore() - 50); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house2', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); // Removed grid snapping logic for house2 }; }; } else if (i === 2) { var house3 = LK.getAsset('house3', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house3); // Add pricetext below house3 var priceText3 = new Text2('300AD', { size: 70, fill: 0xFFFFFF }); priceText3.anchor.set(0.5, 0); priceText3.x = pricewall.x; priceText3.y = pricewall.y + pricewall.height / 2 - priceText3.height / 2; background2.addChild(priceText3); house3.down = function (x, y, obj) { // Check if player has enough score to purchase house3 if (LK.getScore() >= 300) { LK.setScore(LK.getScore() - 300); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house3', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var house4 = LK.getAsset('house4', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house4); // Add pricetext below house4 var priceText4 = new Text2('250AD', { size: 70, fill: 0xFFFFFF }); priceText4.anchor.set(0.5, 0); priceText4.x = pricewall.x; priceText4.y = pricewall.y + pricewall.height / 2 - priceText4.height / 2; background2.addChild(priceText4); house4.down = function (x, y, obj) { // Check if player has enough score to purchase house4 if (LK.getScore() >= 250) { LK.setScore(LK.getScore() - 250); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house4', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('2:30', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 150; // 2:30 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 11); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); // Removed grid snapping logic for house4 }; }; } } // Add 4 slots below the first line of slots that are synced in background2 for (var i = 0; i < 4; i++) { var slot = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing + 450) + slotSpacing + 200, y: 900 // Increase y position to add more space }); background2.addChildAt(slot, background2.children.length); // Add pricewall below each slot in the second line var pricewall = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot.x, y: slot.y + slot.height / 2 + 0 // Position below the slot }); background2.addChild(pricewall); // Add house5 to the first slot in the second line if (i === 0) { var house5 = LK.getAsset('house5', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house5); // Add pricetext below house5 var priceText5 = new Text2('150AD', { size: 70, fill: 0xFFFFFF }); priceText5.anchor.set(0.5, 0); priceText5.x = pricewall.x; priceText5.y = pricewall.y + pricewall.height / 2 - priceText5.height / 2; background2.addChild(priceText5); house5.down = function (x, y, obj) { // Check if player has enough score to purchase house5 if (LK.getScore() >= 150) { LK.setScore(LK.getScore() - 150); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house5', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); // Removed grid snapping logic for house5 }; }; } else if (i === 1) { var house6 = LK.getAsset('house6', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house6); // Add pricetext below house6 var priceText6 = new Text2('700AD', { size: 70, fill: 0xFFFFFF }); priceText6.anchor.set(0.5, 0); priceText6.x = pricewall.x; priceText6.y = pricewall.y + pricewall.height / 2 - priceText6.height / 2; background2.addChild(priceText6); house6.down = function (x, y, obj) { // Check if player has enough score to purchase house6 if (LK.getScore() >= 700) { LK.setScore(LK.getScore() - 700); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house6', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var house7 = LK.getAsset('house7', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house7); // Add pricetext below house7 var priceText7 = new Text2('1500AD', { size: 70, fill: 0xFFFFFF }); priceText7.anchor.set(0.5, 0); priceText7.x = pricewall.x; priceText7.y = pricewall.y + pricewall.height / 2 - priceText7.height / 2; background2.addChild(priceText7); house7.down = function (x, y, obj) { // Check if player has enough score to purchase house7 if (LK.getScore() >= 1500) { LK.setScore(LK.getScore() - 1500); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house7', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var house8 = LK.getAsset('house8', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house8); // Add pricetext below house8 var priceText8 = new Text2('2250AD', { size: 70, fill: 0xFFFFFF }); priceText8.anchor.set(0.5, 0); priceText8.x = pricewall.x; priceText8.y = pricewall.y + pricewall.height / 2 - priceText8.height / 2; background2.addChild(priceText8); house8.down = function (x, y, obj) { // Check if player has enough score to purchase house8 if (LK.getScore() >= 2250) { LK.setScore(LK.getScore() - 2250); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house8', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('10:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 600; // 10:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 14); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } // Add 4 slots below the second line of slots that are synced in background2 for (var i = 0; i < 4; i++) { var slot = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing + 450) + slotSpacing + 200, y: 1500 // Increase y position to add more space }); background2.addChildAt(slot, background2.children.length); // Add pricewall below each slot in the third line var pricewall = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot.x, y: slot.y + slot.height / 2 + 0 // Position below the slot }); background2.addChild(pricewall); // Add houses to the third line of slots if (i === 0) { var house9 = LK.getAsset('house9', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house9); // Add pricetext below house9 var priceText9 = new Text2('4540AD', { size: 70, fill: 0xFFFFFF }); priceText9.anchor.set(0.5, 0); priceText9.x = pricewall.x; priceText9.y = pricewall.y + pricewall.height / 2 - priceText9.height / 2; background2.addChild(priceText9); house9.down = function (x, y, obj) { // Check if player has enough score to purchase house9 if (LK.getScore() >= 4540) { LK.setScore(LK.getScore() - 4540); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house9', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 1) { var house10 = LK.getAsset('house10', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house10); // Add pricetext below house10 var priceText10 = new Text2('7410AD', { size: 70, fill: 0xFFFFFF }); priceText10.anchor.set(0.5, 0); priceText10.x = pricewall.x; priceText10.y = pricewall.y + pricewall.height / 2 - priceText10.height / 2; background2.addChild(priceText10); house10.down = function (x, y, obj) { // Check if player has enough score to purchase house10 if (LK.getScore() >= 7410) { LK.setScore(LK.getScore() - 7410); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house10', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var house11 = LK.getAsset('house11', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house11); // Add pricetext below house11 var priceText11 = new Text2('8330AD', { size: 70, fill: 0xFFFFFF }); priceText11.anchor.set(0.5, 0); priceText11.x = pricewall.x; priceText11.y = pricewall.y + pricewall.height / 2 - priceText11.height / 2; background2.addChild(priceText11); house11.down = function (x, y, obj) { // Check if player has enough score to purchase house11 if (LK.getScore() >= 8330) { LK.setScore(LK.getScore() - 8330); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house11', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var house12 = LK.getAsset('house12', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house12); // Add pricetext below house12 var priceText12 = new Text2('9210AD', { size: 70, fill: 0xFFFFFF }); priceText12.anchor.set(0.5, 0); priceText12.x = pricewall.x; priceText12.y = pricewall.y + pricewall.height / 2 - priceText12.height / 2; background2.addChild(priceText12); house12.down = function (x, y, obj) { // Check if player has enough score to purchase house12 if (LK.getScore() >= 9210) { LK.setScore(LK.getScore() - 9210); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house12', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('15:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 900; // 15:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 20); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } // Add 4 slots below the third line of slots that are synced in background2 for (var i = 0; i < 4; i++) { var slot = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing + 450) + slotSpacing + 200, y: 2100 // Increase y position to add more space }); background2.addChildAt(slot, background2.children.length); // Add pricewall below each slot in the third line var pricewall = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot.x, y: slot.y + slot.height / 2 + 0 // Position below the slot }); background2.addChild(pricewall); // Add houses to the fourth line of slots if (i === 0) { var house13 = LK.getAsset('house13', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house13); // Add pricetext below house13 var priceText13 = new Text2('14500AD', { size: 70, fill: 0xFFFFFF }); priceText13.anchor.set(0.5, 0); priceText13.x = pricewall.x; priceText13.y = pricewall.y + pricewall.height / 2 - priceText13.height / 2; background2.addChild(priceText13); house13.down = function (x, y, obj) { // Check if player has enough score to purchase house13 if (LK.getScore() >= 14500) { LK.setScore(LK.getScore() - 14500); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house13', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 1) { var house14 = LK.getAsset('house14', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house14); // Add pricetext below house14 var priceText14 = new Text2('18000AD', { size: 70, fill: 0xFFFFFF }); priceText14.anchor.set(0.5, 0); priceText14.x = pricewall.x; priceText14.y = pricewall.y + pricewall.height / 2 - priceText14.height / 2; background2.addChild(priceText14); house14.down = function (x, y, obj) { // Check if player has enough score to purchase house14 if (LK.getScore() >= 18000) { LK.setScore(LK.getScore() - 18000); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house14', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var house15 = LK.getAsset('house15', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house15); // Add pricetext below house15 var priceText15 = new Text2('25000AD', { size: 70, fill: 0xFFFFFF }); priceText15.anchor.set(0.5, 0); priceText15.x = pricewall.x; priceText15.y = pricewall.y + pricewall.height / 2 - priceText15.height / 2; background2.addChild(priceText15); house15.down = function (x, y, obj) { // Check if player has enough score to purchase house15 if (LK.getScore() >= 25000) { LK.setScore(LK.getScore() - 25000); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house15', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var house16 = LK.getAsset('house16', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house16); // Add pricetext below house16 var priceText16 = new Text2('50000AD', { size: 70, fill: 0xFFFFFF }); priceText16.anchor.set(0.5, 0); priceText16.x = pricewall.x; priceText16.y = pricewall.y + pricewall.height / 2 - priceText16.height / 2; background2.addChild(priceText16); house16.down = function (x, y, obj) { // Check if player has enough score to purchase house16 if (LK.getScore() >= 50000) { LK.setScore(LK.getScore() - 50000); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house16', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('20:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1200; // 20:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 28); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } // Add 4 slots below the forth line of slots that are synced in background2 for (var i = 0; i < 4; i++) { var slot = LK.getAsset('Slot', { anchorX: 0.5, anchorY: 0.5, x: i * (slotSpacing + 450) + slotSpacing + 200, y: 2700 // Increase y position to add more space }); background2.addChildAt(slot, background2.children.length); // Add pricewall below each slot in the fourth line var pricewall = LK.getAsset('pricewall', { anchorX: 0.5, anchorY: 0.0, x: slot.x, y: slot.y + slot.height / 2 + 0 // Position below the slot }); background2.addChild(pricewall); // Add house17 to the first slot in the fifth line if (i === 0) { var house17 = LK.getAsset('house17', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house17); var priceText17 = new Text2('60000AD', { size: 70, fill: 0xFFFFFF }); priceText17.anchor.set(0.5, 0); priceText17.x = pricewall.x; priceText17.y = pricewall.y + pricewall.height / 2 - priceText17.height / 2; background2.addChild(priceText17); house17.down = function (x, y, obj) { // Check if player has enough score to purchase house17 if (LK.getScore() >= 60000) { LK.setScore(LK.getScore() - 60000); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house17', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1500; // 25:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 1) { var house18 = LK.getAsset('house18', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house18); var priceText18 = new Text2('75000AD', { size: 70, fill: 0xFFFFFF }); priceText18.anchor.set(0.5, 0); priceText18.x = pricewall.x; priceText18.y = pricewall.y + pricewall.height / 2 - priceText18.height / 2; background2.addChild(priceText18); house18.down = function (x, y, obj) { // Check if player has enough score to purchase house18 if (LK.getScore() >= 75000) { LK.setScore(LK.getScore() - 75000); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house18', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1500; // 25:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 2) { var house19 = LK.getAsset('house19', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house19); // Add pricetext below house19 var priceText19 = new Text2('90000AD', { size: 70, fill: 0xFFFFFF }); priceText19.anchor.set(0.5, 0); priceText19.x = pricewall.x; priceText19.y = pricewall.y + pricewall.height / 2 - priceText19.height / 2; background2.addChild(priceText19); house19.down = function (x, y, obj) { // Check if player has enough score to purchase house19 if (LK.getScore() >= 90000) { LK.setScore(LK.getScore() - 90000); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house19', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1500; // 25:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } else if (i === 3) { var house20 = LK.getAsset('house20', { anchorX: 0.5, anchorY: 0.5, x: slot.x, y: slot.y }); background2.addChild(house20); // Add pricetext below house20 var priceText20 = new Text2('100000AD', { size: 70, fill: 0xFFFFFF }); priceText20.anchor.set(0.5, 0); priceText20.x = pricewall.x; priceText20.y = pricewall.y + pricewall.height / 2 - priceText20.height / 2; background2.addChild(priceText20); house20.down = function (x, y, obj) { // Check if player has enough score to purchase house20 if (LK.getScore() >= 100000) { LK.setScore(LK.getScore() - 100000); scoreText.setText(LK.getScore()); var duplicate = LK.getAsset('house20', { anchorX: 0.5, anchorY: 0.5, x: x, y: y }); game.addChildAt(duplicate, game.getChildIndex(background1) + 1); } else { return; // Not enough score, don't create duplicate } duplicate.dragging = true; duplicate.data = obj; // Add timer text above the placed house if (!duplicate.timerText) { duplicate.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); duplicate.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChildAt(duplicate.timerText, game.getChildIndex(background2)); } duplicate.timerText.x = duplicate.x; duplicate.timerText.y = duplicate.y - duplicate.height / 2 - 10; // Position above the house duplicate.dragging = true; duplicate.data = obj; // Hide background2 and its components background2.visible = false; background1.visible = true; scrollbar.visible = false; scrollbutton.visible = false; background2.children.forEach(function (child) { child.visible = false; }); duplicate.down = function (x, y, obj) { this.dragging = true; this.data = obj; }; duplicate.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); this.x = newPosition.x; this.y = newPosition.y; } }; duplicate.up = function () { this.dragging = false; this.data = null; // Add timer text above the placed house if (!this.timerText) { this.timerText = new Text2('25:00', { size: 50, fill: 0xFFFFFF }); this.timerText.anchor.set(0.5, 1); // Anchor to the bottom center game.addChild(this.timerText); } this.timerText.x = this.x; this.timerText.y = this.y - this.height / 2 - 10; // Position above the house // Start countdown this.countdown = 1500; // 25:00 minutes if (this.countdownInterval) { LK.clearInterval(this.countdownInterval); } // Prevent further movement after placing and before countdown finishes this.down = function () { // Do nothing - house is now fixed in place until timer finishes }; this.move = function () { // Do nothing - house is now fixed in place until timer finishes }; this.countdownInterval = LK.setInterval(function () { this.countdown--; var minutes = Math.floor(this.countdown / 60); var seconds = this.countdown % 60; this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds); if (this.countdown <= 0) { LK.clearInterval(this.countdownInterval); game.removeChild(this.timerText); this.timerText = null; // Reset timerText to null // Spawn 2 coins in front of the house var coin1 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x - 50, y: this.y - this.height }); var coin2 = LK.getAsset('Coin', { anchorX: 0.5, anchorY: 0.5, x: this.x + 50, y: this.y - this.height }); game.addChildAt(coin1, game.getChildIndex(background2)); game.addChildAt(coin2, game.getChildIndex(background2)); // Function to animate the coin drop and bounce var animateCoin = function animateCoin(coin) { var bounceCount = 0; var bounceHeight = 20; var dropSpeed = 5; var bounceSpeed = 2; function drop() { if (coin.y < this.y + 50) { coin.y += dropSpeed; LK.setTimeout(drop.bind(this), 16); } else { bounce(); } } function bounce() { if (bounceCount < 2) { if (coin.y > this.y - bounceHeight) { coin.y -= bounceSpeed; } else { bounceCount++; bounceHeight /= 2; } LK.setTimeout(bounce.bind(this), 16); } } drop.call(this); }; animateCoin.call(this, coin1); animateCoin.call(this, coin2); coin1.down = function () { game.removeChild(coin1); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; coin2.down = function () { game.removeChild(coin2); LK.setScore(LK.getScore() + 40); scoreText.setText(LK.getScore()); }; } }.bind(this), 1000); }; }; } } scrollbutton.down = function (x, y, obj) { this.dragging = true; this.data = obj; this.alpha = 0.5; }; scrollbutton.up = function () { this.alpha = 1; this.dragging = false; this.data = null; }; scrollbutton.move = function (x, y, obj) { if (this.dragging) { var newPosition = this.parent.toLocal(obj.global); // Limit the y position of the scrollbutton to the height of the scrollbar this.y = Math.max(Math.min(newPosition.y, scrollbar.height - this.height / 2), this.height / 2); // Calculate the ratio of the scrollbutton's position to the scrollbar's height var ratio = (this.y - this.height / 2) / (scrollbar.height - this.height); // Move the background2 up or down based on the ratio and the speed background2.y = -ratio * (background2.height - game.height); // Removed synchronization of scrollbar with background2 movement } }; // Removed up functionality from scrollbutton;
===================================================================
--- original.js
+++ change.js
@@ -2992,13 +2992,16 @@
background2.children.forEach(function (child) {
child.visible = false;
});
duplicate.down = function (x, y, obj) {
- this.dragging = true;
- this.data = obj;
+ // Only allow dragging if timer hasn't started yet
+ if (!this.countdownInterval) {
+ this.dragging = true;
+ this.data = obj;
+ }
};
duplicate.move = function (x, y, obj) {
- if (this.dragging) {
+ if (this.dragging && !this.countdownInterval) {
var newPosition = this.parent.toLocal(obj.global);
this.x = newPosition.x;
this.y = newPosition.y;
}
@@ -3016,86 +3019,93 @@
game.addChild(this.timerText);
}
this.timerText.x = this.x;
this.timerText.y = this.y - this.height / 2 - 10; // Position above the house
- // Start countdown
+ // Don't start countdown here, wait for the second coin click
+ // Just initialize properties for later use
this.countdown = 150; // 2:30 minutes
if (this.countdownInterval) {
LK.clearInterval(this.countdownInterval);
}
- // Prevent further movement after placing and before countdown finishes
- this.down = function () {
- // Do nothing - house is now fixed in place until timer finishes
+ // Spawn 2 coins in front of the house
+ var coin1 = LK.getAsset('Coin', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: this.x - 50,
+ y: this.y - this.height
+ });
+ var coin2 = LK.getAsset('Coin', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ x: this.x + 50,
+ y: this.y - this.height
+ });
+ game.addChildAt(coin1, game.getChildIndex(background2));
+ game.addChildAt(coin2, game.getChildIndex(background2));
+ // Store reference to parent house for coins
+ coin1.parentHouse = this;
+ coin2.parentHouse = this;
+ // Function to animate the coin drop and bounce
+ var animateCoin = function animateCoin(coin) {
+ var bounceCount = 0;
+ var bounceHeight = 20;
+ var dropSpeed = 5;
+ var bounceSpeed = 2;
+ function drop() {
+ if (coin.y < this.y + 50) {
+ coin.y += dropSpeed;
+ LK.setTimeout(drop.bind(this), 16);
+ } else {
+ bounce();
+ }
+ }
+ function bounce() {
+ if (bounceCount < 2) {
+ if (coin.y > this.y - bounceHeight) {
+ coin.y -= bounceSpeed;
+ } else {
+ bounceCount++;
+ bounceHeight /= 2;
+ }
+ LK.setTimeout(bounce.bind(this), 16);
+ }
+ }
+ drop.call(this);
};
- this.move = function () {
- // Do nothing - house is now fixed in place until timer finishes
+ animateCoin.call(this, coin1);
+ animateCoin.call(this, coin2);
+ coin1.down = function () {
+ game.removeChild(coin1);
+ LK.setScore(LK.getScore() + 11);
+ scoreText.setText(LK.getScore());
};
- this.countdownInterval = LK.setInterval(function () {
- this.countdown--;
- var minutes = Math.floor(this.countdown / 60);
- var seconds = this.countdown % 60;
- this.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds);
- if (this.countdown <= 0) {
- LK.clearInterval(this.countdownInterval);
- game.removeChild(this.timerText);
- this.timerText = null; // Reset timerText to null
- // Spawn 2 coins in front of the house
- var coin1 = LK.getAsset('Coin', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: this.x - 50,
- y: this.y - this.height
- });
- var coin2 = LK.getAsset('Coin', {
- anchorX: 0.5,
- anchorY: 0.5,
- x: this.x + 50,
- y: this.y - this.height
- });
- game.addChildAt(coin1, game.getChildIndex(background2));
- game.addChildAt(coin2, game.getChildIndex(background2));
- // Function to animate the coin drop and bounce
- var animateCoin = function animateCoin(coin) {
- var bounceCount = 0;
- var bounceHeight = 20;
- var dropSpeed = 5;
- var bounceSpeed = 2;
- function drop() {
- if (coin.y < this.y + 50) {
- coin.y += dropSpeed;
- LK.setTimeout(drop.bind(this), 16);
- } else {
- bounce();
- }
- }
- function bounce() {
- if (bounceCount < 2) {
- if (coin.y > this.y - bounceHeight) {
- coin.y -= bounceSpeed;
- } else {
- bounceCount++;
- bounceHeight /= 2;
- }
- LK.setTimeout(bounce.bind(this), 16);
- }
- }
- drop.call(this);
+ coin2.down = function () {
+ game.removeChild(coin2);
+ LK.setScore(LK.getScore() + 11);
+ scoreText.setText(LK.getScore());
+ // Start countdown after clicking the second coin
+ var house = this.parentHouse;
+ if (house && !house.countdownInterval) {
+ // Prevent further movement after countdown starts
+ house.down = function () {
+ // Do nothing - house is now fixed in place until timer finishes
};
- animateCoin.call(this, coin1);
- animateCoin.call(this, coin2);
- coin1.down = function () {
- game.removeChild(coin1);
- LK.setScore(LK.getScore() + 11);
- scoreText.setText(LK.getScore());
+ house.move = function () {
+ // Do nothing - house is now fixed in place until timer finishes
};
- coin2.down = function () {
- game.removeChild(coin2);
- LK.setScore(LK.getScore() + 11);
- scoreText.setText(LK.getScore());
- };
+ house.countdownInterval = LK.setInterval(function () {
+ house.countdown--;
+ var minutes = Math.floor(house.countdown / 60);
+ var seconds = house.countdown % 60;
+ house.timerText.setText(minutes + ':' + (seconds < 10 ? '0' : '') + seconds);
+ if (house.countdown <= 0) {
+ LK.clearInterval(house.countdownInterval);
+ game.removeChild(house.timerText);
+ house.timerText = null; // Reset timerText to null
+ }
+ }.bind(house), 1000);
}
- }.bind(this), 1000);
- // Removed grid snapping logic for house1
+ };
};
};
} else if (i === 1) {
var house2 = LK.getAsset('house2', {
2D wreckage of wood, square, HD colors. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
House from the front facing the screen with big sign above it have description "SHOP", Hd colors
coin with colors, have "DA", hd colors. have black circles and black line for the "DA", between the 2 circles do small black lines all around. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Modern App Store icon, square with rounded corners, HD colors for a 2d game titled "The Collector" and with the description "about building houses and trees and decorations on a map to make it look like city, which then generate "DA" coins after a countdown timer expires. Players can collect these coins to increase their score, which they can then use to purchase more houses and trees and decorations from the shop button on the middle left side of the screen". with text on the middle top of the banner "the collector"!