/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
leaderboard: {}
});
/****
* Classes
****/
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityX = 0;
self.velocityY = 0;
self.gravity = 0.6;
self.bounceStrength = -15;
self.x = 1024;
self.y = 200;
self.update = function () {
self.velocityY += self.gravity;
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityX *= 0.98;
if (self.x < 25) {
self.x = 25;
self.velocityX *= -0.8;
}
if (self.x > 2023) {
self.x = 2023;
self.velocityX *= -0.8;
}
};
return self;
});
var BonusLarge = Container.expand(function () {
var self = Container.call(this);
var bonusGraphics = self.attachAsset('bonusLarge', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 1.5;
self.velocityX = 0;
self.gravity = 0.3;
self.pointValue = 10;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
var BonusSmall = Container.expand(function () {
var self = Container.call(this);
var bonusGraphics = self.attachAsset('bonusSmall', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 2;
self.velocityX = 0;
self.gravity = 0.4;
self.pointValue = 5;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
var Paddle = Container.expand(function () {
var self = Container.call(this);
var paddleGraphics = self.attachAsset('paddle', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 1024;
self.y = 2600;
return self;
});
var Penalty = Container.expand(function () {
var self = Container.call(this);
var penaltyGraphics = self.attachAsset('penalty', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 2.5;
self.velocityX = 0;
self.gravity = 0.5;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var LeaderboardManager = function LeaderboardManager() {
var self = {};
self.addScore = function (playerName, score) {
var leaderboard = storage.leaderboard || {};
leaderboard[playerName] = Math.max(leaderboard[playerName] || 0, score);
var entries = [];
for (var key in leaderboard) {
if (leaderboard.hasOwnProperty(key)) {
entries.push({
name: key,
score: leaderboard[key]
});
}
}
entries.sort(function (a, b) {
return b.score - a.score;
});
if (entries.length > 10) {
entries = entries.slice(0, 10);
}
var newLeaderboard = {};
for (var i = 0; i < entries.length; i++) {
newLeaderboard[entries[i].name] = entries[i].score;
}
storage.leaderboard = newLeaderboard;
return entries;
};
self.getLeaderboard = function () {
var leaderboard = storage.leaderboard || {};
var entries = [];
for (var key in leaderboard) {
if (leaderboard.hasOwnProperty(key)) {
entries.push({
name: key,
score: leaderboard[key]
});
}
}
entries.sort(function (a, b) {
return b.score - a.score;
});
return entries;
};
self.isTopScore = function (score) {
var entries = self.getLeaderboard();
return entries.length < 10 || score > entries[entries.length - 1].score;
};
return self;
};
var paddle = game.addChild(new Paddle());
var ball = game.addChild(new Ball());
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var leaderboardManager = new LeaderboardManager();
var dragNode = null;
var ballLastIntersecting = false;
var ballLastY = ball.y;
var ballLastWasIntersecting = false;
var bonusObjects = [];
var penaltyObjects = [];
var spawnCounter = 0;
var playerNameInput = null;
var showingLeaderboard = false;
function handleMove(x, y, obj) {
paddle.x = x;
paddle.y = y;
if (paddle.x < 75) {
paddle.x = 75;
}
if (paddle.x > 1973) {
paddle.x = 1973;
}
if (paddle.y < 20) {
paddle.y = 20;
}
if (paddle.y > 2712) {
paddle.y = 2712;
}
if (ballLastY >= 0 && ball.y > 2732) {
LK.showGameOver();
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
handleMove(x, y, obj);
};
game.update = function () {
var paddleTop = paddle.y - 20;
var paddleBottom = paddle.y + 20;
var paddleLeft = paddle.x - 75;
var paddleRight = paddle.x + 75;
var ballRadius = 40;
var ballCenterX = ball.x;
var ballCenterY = ball.y;
var paddleCenterX = paddle.x;
var ballMovedDownward = ballLastY < ballCenterY;
var ballCrossedPaddleVertically = ballLastY - ballRadius <= paddleTop && ballCenterY + ballRadius >= paddleTop;
var ballWithinPaddleHorizontally = ballCenterX >= paddleLeft && ballCenterX <= paddleRight;
var currentIntersecting = ball.intersects(paddle);
if ((currentIntersecting || ballMovedDownward && ballCrossedPaddleVertically && ballWithinPaddleHorizontally) && ballCenterY - ballRadius < paddleBottom) {
if (!ballLastWasIntersecting) {
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
showScorePopup(paddle.x, paddle.y - 100, '+1');
}
ball.velocityY = ball.bounceStrength;
ball.y = paddleTop - ballRadius;
var distance = (ballCenterX - paddleCenterX) / 75;
ball.velocityX = distance * 8;
LK.getSound('bounce').play();
tween(ball, {
scaleX: 1.15,
scaleY: 0.85
}, {
duration: 100,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(ball, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
easing: tween.easeOut
});
}
});
}
ballLastWasIntersecting = currentIntersecting;
ballLastIntersecting = currentIntersecting;
if (ballLastY >= 0 && ball.y > 2732) {
LK.showGameOver();
}
spawnCounter++;
if (spawnCounter % 120 === 0) {
var randomType = Math.random();
if (randomType < 0.4) {
var bonusSmall = game.addChild(new BonusSmall());
bonusSmall.x = Math.random() * 1948 + 50;
bonusSmall.y = -40;
bonusSmall.lastY = bonusSmall.y;
bonusSmall.scaleX = 0.3;
bonusSmall.scaleY = 0.3;
bonusObjects.push(bonusSmall);
tween(bonusSmall, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.elasticOut
});
} else if (randomType < 0.8) {
var bonusLarge = game.addChild(new BonusLarge());
bonusLarge.x = Math.random() * 1948 + 50;
bonusLarge.y = -50;
bonusLarge.lastY = bonusLarge.y;
bonusLarge.scaleX = 0.3;
bonusLarge.scaleY = 0.3;
bonusObjects.push(bonusLarge);
tween(bonusLarge, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.elasticOut
});
} else {
var penalty = game.addChild(new Penalty());
penalty.x = Math.random() * 1946 + 50;
penalty.y = -45;
penalty.lastY = penalty.y;
penalty.scaleX = 0.3;
penalty.scaleY = 0.3;
penaltyObjects.push(penalty);
tween(penalty, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.elasticOut
});
}
}
for (var b = bonusObjects.length - 1; b >= 0; b--) {
var bonus = bonusObjects[b];
if (bonus.y > 2732) {
bonus.destroy();
bonusObjects.splice(b, 1);
continue;
}
var bonusLastIntersecting = bonus.lastWasIntersecting === undefined ? false : bonus.lastWasIntersecting;
var currentBonusIntersecting = bonus.intersects(paddle);
if (!bonusLastIntersecting && currentBonusIntersecting) {
LK.setScore(LK.getScore() + bonus.pointValue);
scoreTxt.setText(LK.getScore());
showScorePopup(bonus.x, bonus.y, '+' + bonus.pointValue);
bonus.destroy();
bonusObjects.splice(b, 1);
continue;
}
bonus.lastWasIntersecting = currentBonusIntersecting;
}
for (var p = penaltyObjects.length - 1; p >= 0; p--) {
var penaltyObj = penaltyObjects[p];
if (penaltyObj.y > 2732) {
penaltyObj.destroy();
penaltyObjects.splice(p, 1);
continue;
}
var penaltyLastIntersecting = penaltyObj.lastWasIntersecting === undefined ? false : penaltyObj.lastWasIntersecting;
var currentPenaltyIntersecting = penaltyObj.intersects(ball);
if (!penaltyLastIntersecting && currentPenaltyIntersecting) {
LK.effects.flashScreen(0xFF0000, 500);
showScorePopup(penaltyObj.x, penaltyObj.y, '-GAME OVER');
var finalScore = LK.getScore();
LK.setTimeout(function () {
if (leaderboardManager.isTopScore(finalScore)) {
showLeaderboardPrompt(finalScore);
} else {
LK.showGameOver();
}
}, 600);
return;
}
penaltyObj.lastWasIntersecting = currentPenaltyIntersecting;
}
ballLastY = ball.y;
};
function showScorePopup(x, y, text) {
var popupTxt = new Text2(text, {
size: 60,
fill: text.indexOf('-') === 0 ? 0xFF0000 : 0x00FF00
});
popupTxt.anchor.set(0.5, 0.5);
popupTxt.x = x;
popupTxt.y = y;
game.addChild(popupTxt);
tween(popupTxt, {
y: y - 150,
alpha: 0
}, {
duration: 1000,
easing: tween.easeOut,
onFinish: function onFinish() {
popupTxt.destroy();
}
});
}
function showLeaderboardPrompt(finalScore) {
var leaderboardContainer = new Container();
leaderboardContainer.x = 1024;
leaderboardContainer.y = 1366;
var background = LK.getAsset('penalty', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 15,
scaleY: 12
});
background.tint = 0x1a1a2e;
background.alpha = 0.95;
leaderboardContainer.addChild(background);
var titleTxt = new Text2('YOU ARE IN TOP 10!', {
size: 80,
fill: 0xFFFFFF
});
titleTxt.anchor.set(0.5, 0.5);
titleTxt.y = -400;
leaderboardContainer.addChild(titleTxt);
var scoreLabelTxt = new Text2('Score: ' + finalScore, {
size: 60,
fill: 0x00FF00
});
scoreLabelTxt.anchor.set(0.5, 0.5);
scoreLabelTxt.y = -250;
leaderboardContainer.addChild(scoreLabelTxt);
var nameLabelTxt = new Text2('Enter Your Name:', {
size: 50,
fill: 0xFFFFFF
});
nameLabelTxt.anchor.set(0.5, 0.5);
nameLabelTxt.y = -100;
leaderboardContainer.addChild(nameLabelTxt);
var nameInputBox = LK.getAsset('bonusSmall', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 1.5
});
nameInputBox.y = 50;
nameInputBox.tint = 0xFFFFFF;
leaderboardContainer.addChild(nameInputBox);
var leaderboardTitleTxt = new Text2('TOP 10 SCORES', {
size: 55,
fill: 0xFFD700
});
leaderboardTitleTxt.anchor.set(0.5, 0.5);
leaderboardTitleTxt.y = 200;
leaderboardContainer.addChild(leaderboardTitleTxt);
var entries = leaderboardManager.getLeaderboard();
var startY = 300;
for (var i = 0; i < Math.min(entries.length, 10); i++) {
var entryTxt = new Text2(i + 1 + '. ' + entries[i].name + ' - ' + entries[i].score, {
size: 40,
fill: 0xFFFFFF
});
entryTxt.anchor.set(0.5, 0);
entryTxt.y = startY + i * 60;
leaderboardContainer.addChild(entryTxt);
}
game.addChild(leaderboardContainer);
tween(leaderboardContainer, {
alpha: 0
}, {
duration: 0
});
tween(leaderboardContainer, {
alpha: 1
}, {
duration: 400,
easing: tween.easeOut
});
showingLeaderboard = true;
var nameValue = '';
function submitName() {
var cleanedName = nameValue.trim();
if (cleanedName.length === 0) {
cleanedName = 'Player';
}
leaderboardManager.addScore(cleanedName, finalScore);
leaderboardContainer.destroy();
showingLeaderboard = false;
LK.showGameOver();
}
var oldGameMove = game.move;
game.move = function (x, y, obj) {
if (!showingLeaderboard) {
if (oldGameMove) {
oldGameMove(x, y, obj);
}
}
};
var oldGameDown = game.down;
game.down = function (x, y, obj) {
if (!showingLeaderboard) {
if (oldGameDown) {
oldGameDown(x, y, obj);
}
}
};
} /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
leaderboard: {}
});
/****
* Classes
****/
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityX = 0;
self.velocityY = 0;
self.gravity = 0.6;
self.bounceStrength = -15;
self.x = 1024;
self.y = 200;
self.update = function () {
self.velocityY += self.gravity;
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityX *= 0.98;
if (self.x < 25) {
self.x = 25;
self.velocityX *= -0.8;
}
if (self.x > 2023) {
self.x = 2023;
self.velocityX *= -0.8;
}
};
return self;
});
var BonusLarge = Container.expand(function () {
var self = Container.call(this);
var bonusGraphics = self.attachAsset('bonusLarge', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 1.5;
self.velocityX = 0;
self.gravity = 0.3;
self.pointValue = 10;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
var BonusSmall = Container.expand(function () {
var self = Container.call(this);
var bonusGraphics = self.attachAsset('bonusSmall', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 2;
self.velocityX = 0;
self.gravity = 0.4;
self.pointValue = 5;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
var Paddle = Container.expand(function () {
var self = Container.call(this);
var paddleGraphics = self.attachAsset('paddle', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = 1024;
self.y = 2600;
return self;
});
var Penalty = Container.expand(function () {
var self = Container.call(this);
var penaltyGraphics = self.attachAsset('penalty', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 2.5;
self.velocityX = 0;
self.gravity = 0.5;
self.lastY = self.y;
self.update = function () {
self.velocityY += self.gravity;
self.y += self.velocityY;
self.x += self.velocityX;
self.lastY = self.y;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var LeaderboardManager = function LeaderboardManager() {
var self = {};
self.addScore = function (playerName, score) {
var leaderboard = storage.leaderboard || {};
leaderboard[playerName] = Math.max(leaderboard[playerName] || 0, score);
var entries = [];
for (var key in leaderboard) {
if (leaderboard.hasOwnProperty(key)) {
entries.push({
name: key,
score: leaderboard[key]
});
}
}
entries.sort(function (a, b) {
return b.score - a.score;
});
if (entries.length > 10) {
entries = entries.slice(0, 10);
}
var newLeaderboard = {};
for (var i = 0; i < entries.length; i++) {
newLeaderboard[entries[i].name] = entries[i].score;
}
storage.leaderboard = newLeaderboard;
return entries;
};
self.getLeaderboard = function () {
var leaderboard = storage.leaderboard || {};
var entries = [];
for (var key in leaderboard) {
if (leaderboard.hasOwnProperty(key)) {
entries.push({
name: key,
score: leaderboard[key]
});
}
}
entries.sort(function (a, b) {
return b.score - a.score;
});
return entries;
};
self.isTopScore = function (score) {
var entries = self.getLeaderboard();
return entries.length < 10 || score > entries[entries.length - 1].score;
};
return self;
};
var paddle = game.addChild(new Paddle());
var ball = game.addChild(new Ball());
var scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var leaderboardManager = new LeaderboardManager();
var dragNode = null;
var ballLastIntersecting = false;
var ballLastY = ball.y;
var ballLastWasIntersecting = false;
var bonusObjects = [];
var penaltyObjects = [];
var spawnCounter = 0;
var playerNameInput = null;
var showingLeaderboard = false;
function handleMove(x, y, obj) {
paddle.x = x;
paddle.y = y;
if (paddle.x < 75) {
paddle.x = 75;
}
if (paddle.x > 1973) {
paddle.x = 1973;
}
if (paddle.y < 20) {
paddle.y = 20;
}
if (paddle.y > 2712) {
paddle.y = 2712;
}
if (ballLastY >= 0 && ball.y > 2732) {
LK.showGameOver();
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
handleMove(x, y, obj);
};
game.update = function () {
var paddleTop = paddle.y - 20;
var paddleBottom = paddle.y + 20;
var paddleLeft = paddle.x - 75;
var paddleRight = paddle.x + 75;
var ballRadius = 40;
var ballCenterX = ball.x;
var ballCenterY = ball.y;
var paddleCenterX = paddle.x;
var ballMovedDownward = ballLastY < ballCenterY;
var ballCrossedPaddleVertically = ballLastY - ballRadius <= paddleTop && ballCenterY + ballRadius >= paddleTop;
var ballWithinPaddleHorizontally = ballCenterX >= paddleLeft && ballCenterX <= paddleRight;
var currentIntersecting = ball.intersects(paddle);
if ((currentIntersecting || ballMovedDownward && ballCrossedPaddleVertically && ballWithinPaddleHorizontally) && ballCenterY - ballRadius < paddleBottom) {
if (!ballLastWasIntersecting) {
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
showScorePopup(paddle.x, paddle.y - 100, '+1');
}
ball.velocityY = ball.bounceStrength;
ball.y = paddleTop - ballRadius;
var distance = (ballCenterX - paddleCenterX) / 75;
ball.velocityX = distance * 8;
LK.getSound('bounce').play();
tween(ball, {
scaleX: 1.15,
scaleY: 0.85
}, {
duration: 100,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(ball, {
scaleX: 1,
scaleY: 1
}, {
duration: 100,
easing: tween.easeOut
});
}
});
}
ballLastWasIntersecting = currentIntersecting;
ballLastIntersecting = currentIntersecting;
if (ballLastY >= 0 && ball.y > 2732) {
LK.showGameOver();
}
spawnCounter++;
if (spawnCounter % 120 === 0) {
var randomType = Math.random();
if (randomType < 0.4) {
var bonusSmall = game.addChild(new BonusSmall());
bonusSmall.x = Math.random() * 1948 + 50;
bonusSmall.y = -40;
bonusSmall.lastY = bonusSmall.y;
bonusSmall.scaleX = 0.3;
bonusSmall.scaleY = 0.3;
bonusObjects.push(bonusSmall);
tween(bonusSmall, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.elasticOut
});
} else if (randomType < 0.8) {
var bonusLarge = game.addChild(new BonusLarge());
bonusLarge.x = Math.random() * 1948 + 50;
bonusLarge.y = -50;
bonusLarge.lastY = bonusLarge.y;
bonusLarge.scaleX = 0.3;
bonusLarge.scaleY = 0.3;
bonusObjects.push(bonusLarge);
tween(bonusLarge, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.elasticOut
});
} else {
var penalty = game.addChild(new Penalty());
penalty.x = Math.random() * 1946 + 50;
penalty.y = -45;
penalty.lastY = penalty.y;
penalty.scaleX = 0.3;
penalty.scaleY = 0.3;
penaltyObjects.push(penalty);
tween(penalty, {
scaleX: 1,
scaleY: 1
}, {
duration: 300,
easing: tween.elasticOut
});
}
}
for (var b = bonusObjects.length - 1; b >= 0; b--) {
var bonus = bonusObjects[b];
if (bonus.y > 2732) {
bonus.destroy();
bonusObjects.splice(b, 1);
continue;
}
var bonusLastIntersecting = bonus.lastWasIntersecting === undefined ? false : bonus.lastWasIntersecting;
var currentBonusIntersecting = bonus.intersects(paddle);
if (!bonusLastIntersecting && currentBonusIntersecting) {
LK.setScore(LK.getScore() + bonus.pointValue);
scoreTxt.setText(LK.getScore());
showScorePopup(bonus.x, bonus.y, '+' + bonus.pointValue);
bonus.destroy();
bonusObjects.splice(b, 1);
continue;
}
bonus.lastWasIntersecting = currentBonusIntersecting;
}
for (var p = penaltyObjects.length - 1; p >= 0; p--) {
var penaltyObj = penaltyObjects[p];
if (penaltyObj.y > 2732) {
penaltyObj.destroy();
penaltyObjects.splice(p, 1);
continue;
}
var penaltyLastIntersecting = penaltyObj.lastWasIntersecting === undefined ? false : penaltyObj.lastWasIntersecting;
var currentPenaltyIntersecting = penaltyObj.intersects(ball);
if (!penaltyLastIntersecting && currentPenaltyIntersecting) {
LK.effects.flashScreen(0xFF0000, 500);
showScorePopup(penaltyObj.x, penaltyObj.y, '-GAME OVER');
var finalScore = LK.getScore();
LK.setTimeout(function () {
if (leaderboardManager.isTopScore(finalScore)) {
showLeaderboardPrompt(finalScore);
} else {
LK.showGameOver();
}
}, 600);
return;
}
penaltyObj.lastWasIntersecting = currentPenaltyIntersecting;
}
ballLastY = ball.y;
};
function showScorePopup(x, y, text) {
var popupTxt = new Text2(text, {
size: 60,
fill: text.indexOf('-') === 0 ? 0xFF0000 : 0x00FF00
});
popupTxt.anchor.set(0.5, 0.5);
popupTxt.x = x;
popupTxt.y = y;
game.addChild(popupTxt);
tween(popupTxt, {
y: y - 150,
alpha: 0
}, {
duration: 1000,
easing: tween.easeOut,
onFinish: function onFinish() {
popupTxt.destroy();
}
});
}
function showLeaderboardPrompt(finalScore) {
var leaderboardContainer = new Container();
leaderboardContainer.x = 1024;
leaderboardContainer.y = 1366;
var background = LK.getAsset('penalty', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 15,
scaleY: 12
});
background.tint = 0x1a1a2e;
background.alpha = 0.95;
leaderboardContainer.addChild(background);
var titleTxt = new Text2('YOU ARE IN TOP 10!', {
size: 80,
fill: 0xFFFFFF
});
titleTxt.anchor.set(0.5, 0.5);
titleTxt.y = -400;
leaderboardContainer.addChild(titleTxt);
var scoreLabelTxt = new Text2('Score: ' + finalScore, {
size: 60,
fill: 0x00FF00
});
scoreLabelTxt.anchor.set(0.5, 0.5);
scoreLabelTxt.y = -250;
leaderboardContainer.addChild(scoreLabelTxt);
var nameLabelTxt = new Text2('Enter Your Name:', {
size: 50,
fill: 0xFFFFFF
});
nameLabelTxt.anchor.set(0.5, 0.5);
nameLabelTxt.y = -100;
leaderboardContainer.addChild(nameLabelTxt);
var nameInputBox = LK.getAsset('bonusSmall', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 1.5
});
nameInputBox.y = 50;
nameInputBox.tint = 0xFFFFFF;
leaderboardContainer.addChild(nameInputBox);
var leaderboardTitleTxt = new Text2('TOP 10 SCORES', {
size: 55,
fill: 0xFFD700
});
leaderboardTitleTxt.anchor.set(0.5, 0.5);
leaderboardTitleTxt.y = 200;
leaderboardContainer.addChild(leaderboardTitleTxt);
var entries = leaderboardManager.getLeaderboard();
var startY = 300;
for (var i = 0; i < Math.min(entries.length, 10); i++) {
var entryTxt = new Text2(i + 1 + '. ' + entries[i].name + ' - ' + entries[i].score, {
size: 40,
fill: 0xFFFFFF
});
entryTxt.anchor.set(0.5, 0);
entryTxt.y = startY + i * 60;
leaderboardContainer.addChild(entryTxt);
}
game.addChild(leaderboardContainer);
tween(leaderboardContainer, {
alpha: 0
}, {
duration: 0
});
tween(leaderboardContainer, {
alpha: 1
}, {
duration: 400,
easing: tween.easeOut
});
showingLeaderboard = true;
var nameValue = '';
function submitName() {
var cleanedName = nameValue.trim();
if (cleanedName.length === 0) {
cleanedName = 'Player';
}
leaderboardManager.addScore(cleanedName, finalScore);
leaderboardContainer.destroy();
showingLeaderboard = false;
LK.showGameOver();
}
var oldGameMove = game.move;
game.move = function (x, y, obj) {
if (!showingLeaderboard) {
if (oldGameMove) {
oldGameMove(x, y, obj);
}
}
};
var oldGameDown = game.down;
game.down = function (x, y, obj) {
if (!showingLeaderboard) {
if (oldGameDown) {
oldGameDown(x, y, obj);
}
}
};
}