User prompt
instead of diming an item when is selected in the bottom of the screen, increase its size
User prompt
items should not be dimmed
User prompt
each level will have a timer countdown. use the timer on the top riht
User prompt
add alpha to bottombackground
User prompt
add 5 more levels
User prompt
add alpha to topbackground
User prompt
move level lo the top left and add time in the top right where level is now
User prompt
move items 20 pixels higher in bubble
User prompt
make sure shadow is also destryed when customer is destroyed
User prompt
separate animation of bubble and shadow from customer. customer should move but bubble and shadow no.
User prompt
Please fix the bug: 'Uncaught TypeError: self.orderBubble.setOrder is not a function' in or related to this line: 'self.orderBubble.setOrder(order);' Line Number: 83
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'length')' in or related to this line: 'self.orderAsset = self.attachAsset(order, {' Line Number: 163
User prompt
shadow and bubble should be separate entities than the ccustomer
User prompt
separate animation for shado, customer, and bubble
User prompt
when customer spins, shadow should not move
User prompt
Please fix the bug: 'Uncaught ReferenceError: customerGraphics is not defined' in or related to this line: 'customerGraphics.rotation = 0;' Line Number: 287
User prompt
bubble should not spin, only customer
User prompt
customer should shrink faster on tick when spining
User prompt
when customer is spining also shrink its size
User prompt
make sure customer spins when orrder is cmplete
User prompt
Please fix the bug: 'Uncaught ReferenceError: customerGraphics is not defined' in or related to this line: 'customerGraphics.rotation = 0;' Line Number: 287
User prompt
when customer spins, it should only spin the customer but bubble should stay in the same spot
User prompt
when order is complete, have customer spin on its axis
User prompt
add more space between customers
User prompt
Please fix the bug: 'Uncaught TypeError: Cannot set properties of null (setting 'x')' in or related to this line: 'customer.orderBubble.x = customer.x;' Line Number: 277
/**** * Classes ****/ // Customer class var Customer = Container.expand(function () { var self = Container.call(this); var customerGraphics = self.attachAsset('customer', { anchorX: 0.5, anchorY: 0.5 }); self.shadow = new Shadow(); self.addChild(self.shadow); self.shadow.y = customerGraphics.height / 2; self.orderBubble = new OrderBubble(); self.addChild(self.orderBubble); self.gaugeBar = null; self.moveToPosition = function (x, y) { var distance = Math.sqrt(Math.pow(self.x - x, 2) + Math.pow(self.y - y, 2)); var speed = distance / 120; // 60 frames per second var dx = (x - self.x) / distance * speed; var dy = (y - self.y) / distance * speed; self.update = function () { if (Math.abs(self.x - x) > speed || Math.abs(self.y - y) > speed) { self.x += dx; self.y += dy; self.orderBubble.visible = false; } else { self.x = x; self.y = y; self.orderBubble.alpha = 0; LK.setTimeout(function () { self.orderBubble.visible = true; var fadeInInterval = LK.setInterval(function () { if (self.orderBubble.alpha < 1) { self.orderBubble.alpha += 0.1; } if (self.orderBubble.alpha >= 1) { self.orderBubble.alpha = 1; LK.clearInterval(fadeInInterval); } }, 100); }, 500); self.update = function () { // Add small up and down movement to the customers self.y += Math.sin(LK.ticks / 10) * 0.5; self.shadow.y = customerGraphics.height / 2; }; } }; }; self.setOrder = function (order) { if (self.orderBubble) { self.removeChild(self.orderBubble); } // Filter the order to only include items available in the current level self.order = Array.isArray(order) ? order.filter(function (item) { return currentLevel.items.includes(item); }) : [order]; // Ensure that all customers have at least one item in their order if (self.order.length === 0) { self.order.push(currentLevel.items[Math.floor(Math.random() * currentLevel.items.length)]); } self.orderBubble = new OrderBubble(self.order); self.orderBubble.x = 0; self.orderBubble.y = -self.height / 2 - self.orderBubble.height / 2; self.orderBubble.setOrder(order); if (!self.orderBubble.visible) { self.orderBubble.visible = false; // Hide order bubble on game start } self.addChild(self.orderBubble); self.update = function () { // Add small up and down movement to the customers self.y += Math.sin(LK.ticks / 10) * 0.5; }; }; self.getOrder = function () { return self.order; }; self.on('down', function (x, y, obj) { if (self.orderBubble && !self.orderBubble.visible) { self.orderBubble.visible = true; } if (selectedItem && self.order.includes(selectedItem.getType())) { // Dim the item in the order bubble if (self.orderBubble.orderAsset1 && self.orderBubble.orderAsset1.type === selectedItem.getType()) { self.orderBubble.orderAsset1.alpha = 0.5; } if (self.orderBubble.orderAsset2 && self.orderBubble.orderAsset2.type === selectedItem.getType()) { self.orderBubble.orderAsset2.alpha = 0.5; } // Check if the order is fulfilled checkOrderFulfillment(self); } }); }); // Item class var Item = Container.expand(function (type) { var self = Container.call(this); var itemGraphics = self.attachAsset(type, { anchorX: 0.5, anchorY: 0.5 }); self.type = type; self.getType = function () { return self.type; }; self.alpha = 0.5; // Start items as dimmed self.on('down', function (x, y, obj) { if (selectedItem) { selectedItem.scaleX = 1; selectedItem.scaleY = 1; selectedItem.alpha = 0.5; // Dim the previously selected item } selectedItem = self; console.log("Item selected:", self.type); self.scaleX = 1.2; self.scaleY = 1.2; self.alpha = 1; // Undim the selected item }); }); // OrderBubble class var OrderBubble = Container.expand(function (order) { var self = Container.call(this); var bubbleGraphics = self.attachAsset('bubble', { anchorX: 0.5, anchorY: 0.5 }); self.order = order; if (Array.isArray(order)) { if (order.length > 0) { self.orderAsset1 = self.attachAsset(order[0], { anchorX: 0.5, anchorY: 0.5 }); self.orderAsset1.type = order[0]; self.orderAsset1.x = order.length > 1 ? -60 : 0; } if (order.length > 1) { self.orderAsset2 = self.attachAsset(order[1], { anchorX: 0.5, anchorY: 0.5 }); self.orderAsset2.type = order[1]; self.orderAsset2.x = 60; } } else { self.orderAsset = self.attachAsset(order, { anchorX: 0.5, anchorY: 0.5 }); self.orderAsset.x = 0; } }); var Shadow = Container.expand(function () { var self = Container.call(this); var shadowGraphics = self.attachAsset('shadow', { anchorX: 0.5, anchorY: 0 }); shadowGraphics.alpha = 0.5; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Init game with sky blue background }); /**** * Game Code ****/ var background = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); game.addChild(background); var backgroundTop = LK.getAsset('backgroundTop', { anchorX: 0.5, anchorY: 0, x: 2048 / 2, y: 0 }); game.addChild(backgroundTop); var backgroundBottom = LK.getAsset('backgroundBottom', { anchorX: 0.5, anchorY: 1, x: 2048 / 2, y: 2732 }); game.addChild(backgroundBottom); // Level class //<Assets used in the game will automatically appear here> // Initialize arrays and variables var Level = function Level(levelNumber, customerCount, items) { this.levelNumber = levelNumber; this.customerCount = customerCount; this.items = items; }; var selectedItem = null; // Variable to track the currently selected item var currentLevel = null; // Variable to track the current level var customers = []; var items = []; var inventory = []; // Inventory array to hold all items from the bar var score = 0; var scoreTxt = new Text2('0', { size: 90, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var levelTxt = new Text2('LVL 1', { size: 80, fill: "#ffffff", stroke: "#000000", strokeThickness: 5 }); levelTxt.anchor.set(1, 0); LK.gui.topRight.addChild(levelTxt); // Function to check if all items of an order are delivered function checkOrderFulfillment(customer) { // Check if all items are dimmed var allDimmed = true; if (customer.orderBubble.orderAsset1 && customer.orderBubble.orderAsset1.alpha === 1) { allDimmed = false; } if (customer.orderBubble.orderAsset2 && customer.orderBubble.orderAsset2.alpha === 1) { allDimmed = false; } if (allDimmed) { // Increase score only if it hasn't been increased for this customer if (!customer.scoreAdded) { score += 10; scoreTxt.setText(score); customer.scoreAdded = true; // Mark that score has been added for this customer } // Spin the customer on its axis var spinInterval = LK.setInterval(function () { customer.rotation += 0.1; }, 16.67); // Approximately 60 FPS // Wait for one second and then destroy the customer and order bubble LK.setTimeout(function () { LK.clearInterval(spinInterval); customer.destroy(); customer.orderBubble.destroy(); }, 1000); } } // Function to create a new customer function createCustomer() { if (customers.length >= currentLevel.customerCount) { return; } var customer = new Customer(); var safeDistance = 500; // Minimum distance between customers var validPosition = false; while (!validPosition) { customer.x = Math.random() * (2048 * 0.8) + 2048 * 0.1; // Spawn customers within the middle 80% of the screen customer.y = Math.random() * (2200 - 646.4) + 646.4; validPosition = true; for (var i = 0; i < customers.length; i++) { var distance = Math.sqrt(Math.pow(customers[i].x - customer.x, 2) + Math.pow(customers[i].y - customer.y, 2)); if (distance < safeDistance) { validPosition = false; break; } } } var order = ['towel', 'umbrella', 'refreshment', 'snack'].sort(function () { return 0.5 - Math.random(); }).slice(0, Math.floor(Math.random() * 2) + 1); customer.setOrder(order); customers.push(customer); customer.rotation = 0; game.addChild(customer); customer.x = Math.random() < 0.5 ? -200 : 2048 + 200; // Spawn customers from left or right side of the screen customer.y = Math.random() * (2200 - 646.4) + 646.4; customer.moveToPosition(Math.random() * (2048 * 0.8) + 2048 * 0.1, Math.random() * (2200 - 646.4) + 646.4); } // Function to create a new item function createItem(type, x, y) { if (!currentLevel.items.includes(type)) { return; } var item = new Item(type); item.x = x; item.y = y; item.width = 200; item.height = 200; items.push(item); inventory.push(item); // Add item to inventory array item.visible = true; // Show item on game start game.addChild(item); } // Initialize level data var levels = [new Level(1, 3, ['towel', 'umbrella']), new Level(3, 4, ['towel', 'umbrella', 'refreshment']), new Level(4, 5, ['towel', 'umbrella']) // Add more levels as needed ]; currentLevel = levels[0]; // Create initial customers for (var i = 0; i < currentLevel.customerCount; i++) { createCustomer(); } // Update function game.update = function () { levelTxt.setText('LVL ' + currentLevel.levelNumber); // Check if all orders are fulfilled var allOrdersFulfilled = true; for (var i = 0; i < customers.length; i++) { if (customers[i].orderBubble.orderAsset1 && customers[i].orderBubble.orderAsset1.alpha === 1) { allOrdersFulfilled = false; break; } if (customers[i].orderBubble.orderAsset2 && customers[i].orderBubble.orderAsset2.alpha === 1) { allOrdersFulfilled = false; break; } } // If all orders are fulfilled, move to the next level if (allOrdersFulfilled) { var nextLevelIndex = levels.indexOf(currentLevel) + 1; if (nextLevelIndex < levels.length) { LK.setTimeout(function () { currentLevel = levels[nextLevelIndex]; // Clear current customers and items for (var i = 0; i < customers.length; i++) { customers[i].destroy(); } customers = []; for (var i = 0; i < items.length; i++) { items[i].destroy(); } items = []; // Create new customers and items for the next level for (var i = 0; i < currentLevel.customerCount; i++) { createCustomer(); } var totalItems = currentLevel.items.length; var startingPoint = (2048 - totalItems * 250) / 2; for (var i = 0; i < totalItems; i++) { createItem(currentLevel.items[i], startingPoint + i * 250, 2732 - 200); } }, 1000); } } else if (LK.ticks % 300 == 0) { createCustomer(); } }; // Create initial items for (var i = 0; i < currentLevel.items.length; i++) { createItem(currentLevel.items[i], 2048 / 2 - 500 + i * 250, 2732 - 200); } var backgroundBottom = LK.getAsset('backgroundBottom', { anchorX: 0.5, anchorY: 1, x: 2048 / 2, y: 2732 }); game.addChildAt(backgroundBottom, 0); var backgroundTop = LK.getAsset('backgroundTop', { anchorX: 0.5, anchorY: 0, x: 2048 / 2, y: 0 }); game.addChildAt(backgroundTop, 0);
===================================================================
--- original.js
+++ change.js
@@ -7,17 +7,13 @@
var customerGraphics = self.attachAsset('customer', {
anchorX: 0.5,
anchorY: 0.5
});
- var shadow = self.attachAsset('shadow', {
- anchorX: 0.5,
- anchorY: 0
- });
- shadow.y = customerGraphics.height / 2;
- shadow.x = customerGraphics.x;
- shadow.rotation = 0; // Ensure shadow rotation remains fixed
- shadow.alpha = 0.5;
- self.orderBubble = null;
+ self.shadow = new Shadow();
+ self.addChild(self.shadow);
+ self.shadow.y = customerGraphics.height / 2;
+ self.orderBubble = new OrderBubble();
+ self.addChild(self.orderBubble);
self.gaugeBar = null;
self.moveToPosition = function (x, y) {
var distance = Math.sqrt(Math.pow(self.x - x, 2) + Math.pow(self.y - y, 2));
var speed = distance / 120; // 60 frames per second
@@ -46,13 +42,11 @@
}, 500);
self.update = function () {
// Add small up and down movement to the customers
self.y += Math.sin(LK.ticks / 10) * 0.5;
+ self.shadow.y = customerGraphics.height / 2;
};
}
- shadow.update = function () {
- shadow.y = customerGraphics.height / 2;
- };
};
};
self.setOrder = function (order) {
if (self.orderBubble) {
@@ -68,19 +62,17 @@
}
self.orderBubble = new OrderBubble(self.order);
self.orderBubble.x = 0;
self.orderBubble.y = -self.height / 2 - self.orderBubble.height / 2;
+ self.orderBubble.setOrder(order);
if (!self.orderBubble.visible) {
self.orderBubble.visible = false; // Hide order bubble on game start
}
self.addChild(self.orderBubble);
self.update = function () {
// Add small up and down movement to the customers
self.y += Math.sin(LK.ticks / 10) * 0.5;
};
- self.orderBubble.update = function () {
- self.orderBubble.y = -self.height / 2 - self.orderBubble.height / 2;
- };
};
self.getOrder = function () {
return self.order;
};
@@ -158,8 +150,16 @@
});
self.orderAsset.x = 0;
}
});
+var Shadow = Container.expand(function () {
+ var self = Container.call(this);
+ var shadowGraphics = self.attachAsset('shadow', {
+ anchorX: 0.5,
+ anchorY: 0
+ });
+ shadowGraphics.alpha = 0.5;
+});
/****
* Initialize Game
****/
@@ -237,12 +237,11 @@
score += 10;
scoreTxt.setText(score);
customer.scoreAdded = true; // Mark that score has been added for this customer
}
- // Spin the customer on its axis without affecting the order bubble
+ // Spin the customer on its axis
var spinInterval = LK.setInterval(function () {
customer.rotation += 0.1;
- shadow.rotation = 0; // Keep shadow rotation fixed
}, 16.67); // Approximately 60 FPS
// Wait for one second and then destroy the customer and order bubble
LK.setTimeout(function () {
LK.clearInterval(spinInterval);
@@ -308,16 +307,8 @@
}
// Update function
game.update = function () {
levelTxt.setText('LVL ' + currentLevel.levelNumber);
- for (var i = 0; i < customers.length; i++) {
- if (customers[i].shadow) {
- customers[i].shadow.update();
- }
- if (customers[i].orderBubble) {
- customers[i].orderBubble.update();
- }
- }
// Check if all orders are fulfilled
var allOrdersFulfilled = true;
for (var i = 0; i < customers.length; i++) {
if (customers[i].orderBubble.orderAsset1 && customers[i].orderBubble.orderAsset1.alpha === 1) {
8bit. cartoon. icecream. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
cartoon and 8 bit message. reads: Time's Up!. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8bit. cartoon. palm tree.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.