/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var GiftBox = Container.expand(function () {
var self = Container.call(this);
var giftGraphics = self.attachAsset('giftBox', {
anchorX: 0.5,
anchorY: 0.5
});
self.isOpened = false;
self.contents = null;
self.setContents = function (itemType) {
self.contents = itemType;
};
self.open = function () {
if (self.isOpened) return;
self.isOpened = true;
LK.getSound('unwrap').play();
// Unwrap animation
tween(giftGraphics, {
scaleX: 0,
scaleY: 0,
rotation: Math.PI
}, {
duration: 500,
easing: tween.easeInOut,
onFinish: function onFinish() {
self.showContents();
}
});
};
self.showContents = function () {
var contentGraphics;
switch (self.contents) {
case 'goldenBoot':
contentGraphics = self.attachAsset('goldenBoot', {
anchorX: 0.5,
anchorY: 0.5
});
LK.getSound('bootFound').play();
bootsFound++;
updateBootsDisplay();
// Special celebration for boot
LK.effects.flashObject(contentGraphics, 0xffd700, 1000);
tween(contentGraphics, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300,
easing: tween.bounceOut
});
if (bootsFound >= 3) {
LK.setTimeout(function () {
LK.getSound('celebrate').play();
LK.showYouWin();
}, 1000);
}
break;
case 'toyCat':
contentGraphics = self.attachAsset('toyCat', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'toyFrog':
contentGraphics = self.attachAsset('toyFrog', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'toyMonkey':
contentGraphics = self.attachAsset('toyMonkey', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'radio':
contentGraphics = self.attachAsset('radio', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'maraca':
contentGraphics = self.attachAsset('maraca', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'drum':
contentGraphics = self.attachAsset('drum', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'trumpet':
contentGraphics = self.attachAsset('trumpet', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'partyBlower':
contentGraphics = self.attachAsset('partyBlower', {
anchorX: 0.5,
anchorY: 0.5
});
break;
}
if (contentGraphics) {
contentGraphics.scaleX = 0;
contentGraphics.scaleY = 0;
tween(contentGraphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 400,
easing: tween.bounceOut
});
}
};
self.down = function (x, y, obj) {
if (!self.isOpened) {
self.open();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
var giftBoxes = [];
var bootsFound = 0;
var totalBoxes = 12;
var boxSpawnTimer = 0;
// Items that can be in gift boxes
var possibleItems = ['goldenBoot', 'goldenBoot', 'goldenBoot',
// 3 golden boots
'toyCat', 'toyFrog', 'toyMonkey', 'radio', 'maraca', 'drum', 'trumpet', 'partyBlower'];
// UI Elements
var titleText = new Text2('Golden Boots Adventure', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
titleText.y = 50;
var bootsText = new Text2('Boots Found: 0/3', {
size: 60,
fill: 0xFFD700
});
bootsText.anchor.set(0.5, 0);
LK.gui.top.addChild(bootsText);
bootsText.y = 150;
var instructionText = new Text2('Tap gifts to unwrap them!', {
size: 50,
fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(instructionText);
instructionText.y = -50;
function updateBootsDisplay() {
bootsText.setText('Boots Found: ' + bootsFound + '/3');
}
function getRandomItem() {
var availableItems = [];
// Always ensure we have boots available if not all found
if (bootsFound < 3) {
availableItems.push('goldenBoot');
}
// Add other items
var otherItems = ['toyCat', 'toyFrog', 'toyMonkey', 'radio', 'maraca', 'drum', 'trumpet', 'partyBlower'];
for (var i = 0; i < 3; i++) {
availableItems.push(otherItems[Math.floor(Math.random() * otherItems.length)]);
}
return availableItems[Math.floor(Math.random() * availableItems.length)];
}
function createGiftBox() {
var giftBox = new GiftBox();
// Random position with margins
var margin = 150;
giftBox.x = margin + Math.random() * (2048 - 2 * margin);
giftBox.y = 400 + Math.random() * (2732 - 600 - margin);
// Set random contents
giftBox.setContents(getRandomItem());
// Add entrance animation
giftBox.scaleX = 0;
giftBox.scaleY = 0;
giftBox.alpha = 0;
tween(giftBox, {
scaleX: 1,
scaleY: 1,
alpha: 1
}, {
duration: 500,
easing: tween.bounceOut
});
giftBoxes.push(giftBox);
game.addChild(giftBox);
}
// Create initial gift boxes
for (var i = 0; i < 8; i++) {
createGiftBox();
}
game.update = function () {
// Spawn new gift boxes periodically
boxSpawnTimer++;
if (boxSpawnTimer >= 180) {
// Every 3 seconds at 60fps
boxSpawnTimer = 0;
if (giftBoxes.length < totalBoxes) {
createGiftBox();
}
}
// Clean up opened boxes after a while
for (var i = giftBoxes.length - 1; i >= 0; i--) {
var box = giftBoxes[i];
if (box.isOpened) {
box.openedTimer = (box.openedTimer || 0) + 1;
if (box.openedTimer > 300) {
// Remove after 5 seconds
tween(box, {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 500,
onFinish: function onFinish() {
box.destroy();
}
});
giftBoxes.splice(i, 1);
}
}
}
}; /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var GiftBox = Container.expand(function () {
var self = Container.call(this);
var giftGraphics = self.attachAsset('giftBox', {
anchorX: 0.5,
anchorY: 0.5
});
self.isOpened = false;
self.contents = null;
self.setContents = function (itemType) {
self.contents = itemType;
};
self.open = function () {
if (self.isOpened) return;
self.isOpened = true;
LK.getSound('unwrap').play();
// Unwrap animation
tween(giftGraphics, {
scaleX: 0,
scaleY: 0,
rotation: Math.PI
}, {
duration: 500,
easing: tween.easeInOut,
onFinish: function onFinish() {
self.showContents();
}
});
};
self.showContents = function () {
var contentGraphics;
switch (self.contents) {
case 'goldenBoot':
contentGraphics = self.attachAsset('goldenBoot', {
anchorX: 0.5,
anchorY: 0.5
});
LK.getSound('bootFound').play();
bootsFound++;
updateBootsDisplay();
// Special celebration for boot
LK.effects.flashObject(contentGraphics, 0xffd700, 1000);
tween(contentGraphics, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300,
easing: tween.bounceOut
});
if (bootsFound >= 3) {
LK.setTimeout(function () {
LK.getSound('celebrate').play();
LK.showYouWin();
}, 1000);
}
break;
case 'toyCat':
contentGraphics = self.attachAsset('toyCat', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'toyFrog':
contentGraphics = self.attachAsset('toyFrog', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'toyMonkey':
contentGraphics = self.attachAsset('toyMonkey', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'radio':
contentGraphics = self.attachAsset('radio', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'maraca':
contentGraphics = self.attachAsset('maraca', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'drum':
contentGraphics = self.attachAsset('drum', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'trumpet':
contentGraphics = self.attachAsset('trumpet', {
anchorX: 0.5,
anchorY: 0.5
});
break;
case 'partyBlower':
contentGraphics = self.attachAsset('partyBlower', {
anchorX: 0.5,
anchorY: 0.5
});
break;
}
if (contentGraphics) {
contentGraphics.scaleX = 0;
contentGraphics.scaleY = 0;
tween(contentGraphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 400,
easing: tween.bounceOut
});
}
};
self.down = function (x, y, obj) {
if (!self.isOpened) {
self.open();
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
var giftBoxes = [];
var bootsFound = 0;
var totalBoxes = 12;
var boxSpawnTimer = 0;
// Items that can be in gift boxes
var possibleItems = ['goldenBoot', 'goldenBoot', 'goldenBoot',
// 3 golden boots
'toyCat', 'toyFrog', 'toyMonkey', 'radio', 'maraca', 'drum', 'trumpet', 'partyBlower'];
// UI Elements
var titleText = new Text2('Golden Boots Adventure', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0);
LK.gui.top.addChild(titleText);
titleText.y = 50;
var bootsText = new Text2('Boots Found: 0/3', {
size: 60,
fill: 0xFFD700
});
bootsText.anchor.set(0.5, 0);
LK.gui.top.addChild(bootsText);
bootsText.y = 150;
var instructionText = new Text2('Tap gifts to unwrap them!', {
size: 50,
fill: 0xFFFFFF
});
instructionText.anchor.set(0.5, 1);
LK.gui.bottom.addChild(instructionText);
instructionText.y = -50;
function updateBootsDisplay() {
bootsText.setText('Boots Found: ' + bootsFound + '/3');
}
function getRandomItem() {
var availableItems = [];
// Always ensure we have boots available if not all found
if (bootsFound < 3) {
availableItems.push('goldenBoot');
}
// Add other items
var otherItems = ['toyCat', 'toyFrog', 'toyMonkey', 'radio', 'maraca', 'drum', 'trumpet', 'partyBlower'];
for (var i = 0; i < 3; i++) {
availableItems.push(otherItems[Math.floor(Math.random() * otherItems.length)]);
}
return availableItems[Math.floor(Math.random() * availableItems.length)];
}
function createGiftBox() {
var giftBox = new GiftBox();
// Random position with margins
var margin = 150;
giftBox.x = margin + Math.random() * (2048 - 2 * margin);
giftBox.y = 400 + Math.random() * (2732 - 600 - margin);
// Set random contents
giftBox.setContents(getRandomItem());
// Add entrance animation
giftBox.scaleX = 0;
giftBox.scaleY = 0;
giftBox.alpha = 0;
tween(giftBox, {
scaleX: 1,
scaleY: 1,
alpha: 1
}, {
duration: 500,
easing: tween.bounceOut
});
giftBoxes.push(giftBox);
game.addChild(giftBox);
}
// Create initial gift boxes
for (var i = 0; i < 8; i++) {
createGiftBox();
}
game.update = function () {
// Spawn new gift boxes periodically
boxSpawnTimer++;
if (boxSpawnTimer >= 180) {
// Every 3 seconds at 60fps
boxSpawnTimer = 0;
if (giftBoxes.length < totalBoxes) {
createGiftBox();
}
}
// Clean up opened boxes after a while
for (var i = giftBoxes.length - 1; i >= 0; i--) {
var box = giftBoxes[i];
if (box.isOpened) {
box.openedTimer = (box.openedTimer || 0) + 1;
if (box.openedTimer > 300) {
// Remove after 5 seconds
tween(box, {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 500,
onFinish: function onFinish() {
box.destroy();
}
});
giftBoxes.splice(i, 1);
}
}
}
};