User prompt
add scorebg behind score
User prompt
create asset for score background
User prompt
chimnes should start spawning from x = 0
User prompt
gifts should be dropped every 2 seconds
User prompt
on game start chimneys should already be spawned across all x axis with the same current spacing.
User prompt
santa should drop present every one second
User prompt
make sure santa moves on tick to the next spot using move funciont
User prompt
santa should move to the next touch place
User prompt
add self move to santa to move him from one position to another
User prompt
show santas trayectory from one point ot another
User prompt
on tick move santa to the next click poosition
User prompt
On tick move santa to the next position based on touch.
User prompt
Show santa movement on screen
User prompt
Fix Bug: 'Uncaught ReferenceError: touchArea is not defined' in this line: 'touchArea.on('down', function (obj) {' Line Number: 131
User prompt
Move santa on touch
User prompt
Fix Bug: 'TypeError: LK.tweenTo is not a function' in this line: 'LK.tweenTo(santa, {' Line Number: 127
User prompt
Show santas transition to next touch
User prompt
Instead of draging santa follow next touch
User prompt
Drop one gift per second
User prompt
Move santa to click position
User prompt
Santa auto shoots every second
User prompt
score should be added by 1
User prompt
when santa collide wiht clouud, it should turn yellow
User prompt
change of score to a more gamy one
User prompt
change score font to 8 bit retro
var PresentIcon = Container.expand(function () {
var self = Container.call(this);
var presentIconGraphics = self.createAsset('presentIcon', 'Present Icon', 0.5, 0.5);
});
var PresentTopper = Container.expand(function (speed) {
var self = Container.call(this);
var topperGraphics = self.createAsset('presentTopper', 'Present Topper', 0.5, 1);
self.speed = speed;
self.move = function () {
self.x -= self.speed;
};
});
var RandomMover = Container.expand(function () {
var self = Container.call(this);
var moverGraphics = self.createAsset('randomMover', 'Random Mover', 0.5, 0.5);
self.speedX = (Math.random() * 4 - 2) * 4;
self.speedY = (Math.random() * 4 - 2) * 4;
self.move = function () {
self.x += self.speedX;
self.y += self.speedY;
if (self.x < 0 || self.x > 2048) {
self.speedX *= -1;
}
if (self.y < 0 || self.y > 2732) {
self.speedY *= -1;
}
};
});
var LifeIcon = Container.expand(function () {
var self = Container.call(this);
var lifeIconGraphics = self.createAsset('lifeIcon', 'Life Icon', 0.5, 0.5);
});
var Star = Container.expand(function () {
var self = Container.call(this);
var starGraphics = self.createAsset('star', 'Star', 0.5, 0.5);
self.speed = 2 + Math.random() * 3;
self.move = function () {
self.x -= self.speed;
if (self.x < -self.width) {
self.destroy();
return true;
}
return false;
};
});
var Santa = Container.expand(function () {
var self = Container.call(this);
self.resetPresents = function () {
this.presentCounter = 5;
this.parent.presentIcons.forEach((function (icon, index) {
icon.visible = index < this.presentCounter;
}).bind(this));
};
var santaGraphics = self.createAsset('santa', 'Santa character', .5, .5);
self.move = function (pos) {
self.x += (pos.x - self.x) * 0.1;
self.y += (pos.y - self.y) * 0.1;
};
self.throwPresent = function () {
if (this.presentCounter > 0) {
var present = new Present();
present.x = this.x;
present.y = this.y;
this.parent.addChild(present);
this.parent.presents.push(present);
this.presentCounter--;
this.parent.presentIcons.forEach((function (icon, index) {
icon.visible = index < this.presentCounter;
}).bind(this));
}
if (this.presentCounter === 0) {
this.parent.hazardSpeed *= 1.5;
this.parent.hazardSpawnRate = Math.max(this.parent.hazardSpawnRate * 0.8, 20);
this.parent.rudolph.visible = true;
} else {
this.parent.rudolph.visible = false;
}
};
});
var Present = Container.expand(function () {
var self = Container.call(this);
var presentGraphics = self.createAsset('present', 'Present', .5, .5);
self.move = function (hazards) {
this.y += 5;
hazards.forEach((function (hazard) {
if (this.intersects(hazard)) {
LK.effects.flashObject(this, 0xff0000, 300);
LK.setTimeout((function () {
this.destroy();
}).bind(this), 300);
}
}).bind(this));
};
});
var Chimney = Container.expand(function () {
var self = Container.call(this);
var chimneyGraphics = self.createAsset('chimney', 'Chimney', .5, .5);
self.originalTint = 0xFFFFFF;
self.presentDeliveredTint = 0x808080;
self.hasPresent = false;
self.speed = 2;
self.move = function () {
self.x -= self.speed;
if (self.x < -self.width) {
self.x = 2048;
}
};
self.checkCollision = function () {};
});
var Hazard = Container.expand(function () {
var self = Container.call(this);
var hazardGraphics = self.createAsset('hazard', 'Hazard', .5, .5);
self.move = function () {
self.x -= self.speed;
if (self.x < -self.width) {
self.destroy();
return true;
}
return false;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
stage.on('down', function (obj) {
santa.lastTapTime = Date.now();
});
self.toppers = [];
self.stars = [];
var starSpawnRate = 15;
var starSpawnCounter = 0;
var santa = self.addChild(new Santa());
santa.x = 2048 / 2;
santa.y = 2732 / 2;
self.lastTapTime = 0;
self.rudolph = self.addChild(new RandomMover());
self.rudolph.x = Math.random() * 2048;
self.rudolph.y = Math.random() * 2732;
self.rudolph.visible = false;
santa.lives = 3;
self.lifeIcons = [];
var lifeIconSpacing = 20;
var lifeIconSize = 64;
for (var i = 0; i < santa.lives; i++) {
var lifeIcon = new LifeIcon();
lifeIcon.x = lifeIconSpacing + 50 + i * (lifeIconSize + lifeIconSpacing);
lifeIcon.y = lifeIconSpacing + 50;
self.lifeIcons.push(lifeIcon);
LK.gui.topLeft.addChild(lifeIcon);
}
santa.presentCounter = 5;
self.presents = [];
var chimneys = [];
var hazards = [];
var hazardSpeed = 8;
var hazardSpawnRate = 80;
var hazardSpawnCounter = 0;
var rudolphSpawnCounter = 0;
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff",
font: "Press Start 2P"
});
self.presentIcons = [];
for (var i = 0; i < santa.presentCounter; i++) {
var presentIcon = new PresentIcon();
presentIcon.x = 60 + i * (presentIcon.width + 10);
presentIcon.y = self.lifeIcons[self.lifeIcons.length - 1].y + lifeIconSize + lifeIconSpacing;
self.presentIcons.push(presentIcon);
LK.gui.topLeft.addChild(presentIcon);
}
var maxChimneys = 5;
LK.on('tick', function () {
self.toppers = self.toppers.filter(function (topper) {
return topper.x + topper.width > 0;
});
self.toppers.forEach(function (topper) {
topper.move();
});
if (starSpawnCounter++ >= starSpawnRate) {
var newStar = new Star();
newStar.x = 2048;
newStar.y = Math.random() * (2732 * 0.8);
self.stars.push(newStar);
self.addChild(newStar);
starSpawnCounter = 0;
}
if (chimneys.length < maxChimneys) {
var lastChimney = chimneys[chimneys.length - 1];
var chimneySpacing = 500;
if (!lastChimney || lastChimney.x < 2048 - chimneySpacing) {
var newChimney = new Chimney();
newChimney.x = 2048;
newChimney.y = 2732 - newChimney.height - Math.random() * 500 + 750;
chimneys.push(newChimney);
self.addChild(newChimney);
}
}
chimneys.forEach(function (chimney) {
chimney.move();
self.presents.forEach(function (present, index) {
if (present.intersects(chimney) && !chimney.hasPresent) {
present.destroy();
self.presents.splice(index, 1);
chimney.hasPresent = true;
chimney.tint = chimney.presentDeliveredTint;
var newScore = LK.getScore() + 1;
LK.setScore(newScore);
scoreTxt.setText(newScore.toString());
var presentTopper = new PresentTopper(chimney.speed);
presentTopper.x = chimney.x;
presentTopper.y = chimney.y - chimney.height / 2;
self.addChild(presentTopper);
self.toppers.push(presentTopper);
}
});
});
chimneys = chimneys.filter(function (chimney) {
return chimney.x + chimney.width > 0;
});
});
scoreTxt.anchor.set(.5, 0);
LK.gui.topCenter.addChild(scoreTxt);
LK.on('tick', function () {
for (var i = 0; i < self.presents.length; i++) {
self.presents[i].move(hazards);
}
for (var i = 0; i < chimneys.length; i++) {
chimneys[i].checkCollision();
}
if (hazardSpawnCounter++ >= hazardSpawnRate) {
var newHazard = new Hazard();
newHazard.x = 2048;
newHazard.y = Math.random() * (2732 * 0.6) + 2732 * 0.2;
newHazard.speed = hazardSpeed;
hazards.push(newHazard);
self.addChild(newHazard);
hazardSpawnCounter = 0;
}
hazards = hazards.filter(function (hazard) {
return !hazard.move();
});
var santaHit = false;
hazards.forEach(function (hazard, index) {
if (!santaHit && santa.intersects(hazard)) {
LK.effects.flashObject(santa, 0xff0000, 500);
hazard.destroy();
hazards.splice(index, 1);
santaHit = true;
santa.lives--;
if (self.lifeIcons.length > santa.lives) {
var removedLifeIcon = self.lifeIcons.pop();
removedLifeIcon.destroy();
}
if (santa.lives <= 0) {
LK.showGameOver();
}
}
});
hazards = hazards.filter(function (hazard) {
return !hazard.hitSanta;
});
self.stars = self.stars.filter(function (star) {
return !star.move();
});
self.rudolph.move();
if (santa.intersects(self.rudolph)) {
santa.resetPresents();
self.rudolph.visible = false;
}
});
stage.on('move', function (obj) {
var pos = obj.event.getLocalPosition(self);
if (pos.y < 2732 * 0.8 && pos.y > 2732 * 0.2) {
santa.move(pos);
}
});
stage.on('up', function (obj) {
var currentTime = Date.now();
if (currentTime - santa.lastTapTime <= 500) {
santa.throwPresent();
}
santa.lastTapTime = 0;
});
});
8-bit cloud with lightning. in game asset. white cloude. yellow lighning. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8 bit x mas pressent. in game asset. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit. cartoon. santa on sledge. smiling. in game asset. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.