var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.createAsset('powerUp', 'PowerUp Graphics', .5, .5);
});
var Grinch = Container.expand(function () {
var self = Container.call(this);
var grinchGraphics = self.createAsset('grinch', 'Grinch Graphics', .5, .5);
self.speed = 12;
self.direction = 1;
self.lifespan = 600;
self.move = function () {
if (self.x + self.width / 2 >= 2048 || self.x - self.width / 2 <= 0) {
self.direction *= -1;
}
self.x += self.speed * self.direction;
if (--self.lifespan <= 0) {
if (self.x < 2048 / 2) {
self.x -= self.speed;
} else {
self.x += self.speed;
}
if (self.x + self.width / 2 < 0 || self.x - self.width / 2 > 2048) {
self.destroy();
}
}
};
});
var SantaSleigh = Container.expand(function () {
var self = Container.call(this);
self.updatePosition = function (mouseX) {
self.targetX = mouseX;
};
self.move = function () {
var delayFactor = 0.1;
var maxSpeed = 10;
var moveAmount = (self.targetX - self.x) * delayFactor;
moveAmount = Math.max(Math.min(moveAmount, maxSpeed), -maxSpeed);
self.x += moveAmount;
};
var santaSleighGraphics = self.createAsset('santaSleigh', 'Santa in sleigh', .5, .5);
self.targetX = self.x;
});
var Cloud = Container.expand(function () {
var self = Container.call(this);
var cloudGraphics = self.createAsset('cloud', 'Cloud Graphics', .5, .5);
self.speed = 2;
self.move = function () {};
});
var Gift = Container.expand(function () {
var self = Container.call(this);
var giftGraphics = self.createAsset('gift', 'Gift Graphics', .5, .5);
self.speed = 0;
self.gravity = 0.2;
self.move = function () {
self.speed += self.gravity;
self.y += self.speed;
if (!self.initialFlingDone) {
self.x += 150 / 60;
self.rotation += 0.1;
self.flingTicks = (self.flingTicks || 0) + 1;
if (self.flingTicks >= 400) {
self.initialFlingDone = true;
}
}
};
});
var Chimney = Container.expand(function () {
var self = Container.call(this);
var chimneyGraphics = self.createAsset('chimney', 'Chimney Graphics', .5, .5);
self.touchedByGift = false;
});
var Game = Container.expand(function () {
var self = Container.call(this);
function spawnChimney() {
var newChimney = new Chimney();
newChimney.x = 2048;
newChimney.y = 2500;
chimneys.push(newChimney);
self.addChild(newChimney);
}
stage.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
santaSleigh.updatePosition(pos.x);
});
stage.on('down', function (obj) {
if (throwPowerUpActive && LK.ticks - lastThrowTick >= 30 || !throwPowerUpActive && LK.ticks - lastThrowTick >= 120) {
if (throwPowerUpActive && LK.ticks - powerUpTimer >= 300) {
throwPowerUpActive = false;
lastThrowTick = LK.ticks;
}
var event = obj.event;
var pos = event.getLocalPosition(self);
var newGift = self.addChild(new Gift());
newGift.x = santaSleigh.x;
newGift.y = santaSleigh.y;
gifts.push(newGift);
lastThrowTick = LK.ticks;
}
});
LK.stageContainer.setBackgroundColor(0x000000);
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
var santaSleigh = self.addChild(new SantaSleigh());
santaSleigh.x = 2048 / 2;
santaSleigh.y = 2732 / 4;
var cloud = self.addChild(new Cloud());
cloud.x = 2048 / 2;
cloud.y = 2732 / 2;
self.setChildIndex(cloud, 0);
self.setChildIndex(santaSleigh, 1);
scoreTxt.anchor.set(.5, 0);
LK.gui.topCenter.addChild(scoreTxt);
var gifts = [];
var chimneys = [];
var score = 0;
var isGameOver = false;
var tickOffset = 0;
var giftThrowSpeed = -5;
var chimneySpeed = 2;
spawnChimney();
LK.on('tick', function () {
santaSleigh.move();
cloud.move();
for (var i = chimneys.length - 1; i >= 0; i--) {
var chimney = chimneys[i];
if (chimney.x < 0) {
chimney.destroy();
chimneys.splice(i, 1);
}
}
if (isGameOver) {
LK.clearInterval(chimneySpawnInterval);
}
if (LK.ticks - lastGrinchSpawnTick >= 1800) {
var newGrinch = self.addChild(new Grinch());
newGrinch.x = 2048 / 2;
newGrinch.y = 2732 / 2;
grinches.push(newGrinch);
lastGrinchSpawnTick = LK.ticks;
}
if (LK.ticks - lastPowerUpSpawnTick >= 2400) {
var newPowerUp = self.addChild(new PowerUp());
newPowerUp.x = Math.random() * 2048;
newPowerUp.y = 1800;
powerUps.push(newPowerUp);
lastPowerUpSpawnTick = LK.ticks;
self.setChildIndex(newPowerUp, self.children.length - 1);
}
for (var i = 0; i < grinches.length; i++) {
var grinch = grinches[i];
grinch.move();
for (var j = gifts.length - 1; j >= 0; j--) {
var gift = gifts[j];
if (gift.intersects(grinch)) {
gift.destroy();
gifts.splice(j, 1);
}
}
}
});
var lastThrowTick = -120;
var lastGrinchSpawnTick = 0;
var lastPowerUpSpawnTick = 0;
var grinches = [];
var powerUps = [];
var throwPowerUpActive = false;
var powerUpTimer = 0;
LK.on('tick', function () {
for (var i = gifts.length - 1; i >= 0; i--) {
var gift = gifts[i];
gift.move();
if (gift.y < 0) {
gift.destroy();
gifts.splice(i, 1);
}
}
for (var i = chimneys.length - 1; i >= 0; i--) {
var chimney = chimneys[i];
chimney.x -= chimneySpeed;
if (chimney.x < 0) {
if (!chimney.touchedByGift) {
score -= 2;
scoreTxt.setText(score);
if (score < 0) {
isGameOver = true;
if (score < 0) {
scoreTxt.setText('You disappointed too many kids');
scoreTxt.scale.set(0.6);
}
}
LK.effects.flashScreen(0xff0000, 1000);
spawnChimney();
}
chimneys.splice(i, 1);
chimney.destroy();
}
}
for (var i = gifts.length - 1; i >= 0; i--) {
var gift = gifts[i];
for (var j = chimneys.length - 1; j >= 0; j--) {
var chimney = chimneys[j];
if (gift.intersects(chimney) && !chimney.touchedByGift) {
score++;
scoreTxt.setText(score);
chimney.touchedByGift = true;
LK.effects.flashScreen(0x00ff00, 500);
gift.destroy();
gifts.splice(i, 1);
chimneySpeed += 0.2;
spawnChimney();
break;
}
}
for (var k = powerUps.length - 1; k >= 0; k--) {
var powerUp = powerUps[k];
if (gift.intersects(powerUp)) {
LK.effects.flashScreen(0x0000ff, 500);
powerUp.destroy();
powerUps.splice(k, 1);
lastThrowTick = LK.ticks - 60;
throwPowerUpActive = true;
powerUpTimer = LK.ticks;
break;
}
}
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
var powerUpGraphics = self.createAsset('powerUp', 'PowerUp Graphics', .5, .5);
});
var Grinch = Container.expand(function () {
var self = Container.call(this);
var grinchGraphics = self.createAsset('grinch', 'Grinch Graphics', .5, .5);
self.speed = 12;
self.direction = 1;
self.lifespan = 600;
self.move = function () {
if (self.x + self.width / 2 >= 2048 || self.x - self.width / 2 <= 0) {
self.direction *= -1;
}
self.x += self.speed * self.direction;
if (--self.lifespan <= 0) {
if (self.x < 2048 / 2) {
self.x -= self.speed;
} else {
self.x += self.speed;
}
if (self.x + self.width / 2 < 0 || self.x - self.width / 2 > 2048) {
self.destroy();
}
}
};
});
var SantaSleigh = Container.expand(function () {
var self = Container.call(this);
self.updatePosition = function (mouseX) {
self.targetX = mouseX;
};
self.move = function () {
var delayFactor = 0.1;
var maxSpeed = 10;
var moveAmount = (self.targetX - self.x) * delayFactor;
moveAmount = Math.max(Math.min(moveAmount, maxSpeed), -maxSpeed);
self.x += moveAmount;
};
var santaSleighGraphics = self.createAsset('santaSleigh', 'Santa in sleigh', .5, .5);
self.targetX = self.x;
});
var Cloud = Container.expand(function () {
var self = Container.call(this);
var cloudGraphics = self.createAsset('cloud', 'Cloud Graphics', .5, .5);
self.speed = 2;
self.move = function () {};
});
var Gift = Container.expand(function () {
var self = Container.call(this);
var giftGraphics = self.createAsset('gift', 'Gift Graphics', .5, .5);
self.speed = 0;
self.gravity = 0.2;
self.move = function () {
self.speed += self.gravity;
self.y += self.speed;
if (!self.initialFlingDone) {
self.x += 150 / 60;
self.rotation += 0.1;
self.flingTicks = (self.flingTicks || 0) + 1;
if (self.flingTicks >= 400) {
self.initialFlingDone = true;
}
}
};
});
var Chimney = Container.expand(function () {
var self = Container.call(this);
var chimneyGraphics = self.createAsset('chimney', 'Chimney Graphics', .5, .5);
self.touchedByGift = false;
});
var Game = Container.expand(function () {
var self = Container.call(this);
function spawnChimney() {
var newChimney = new Chimney();
newChimney.x = 2048;
newChimney.y = 2500;
chimneys.push(newChimney);
self.addChild(newChimney);
}
stage.on('move', function (obj) {
var event = obj.event;
var pos = event.getLocalPosition(self);
santaSleigh.updatePosition(pos.x);
});
stage.on('down', function (obj) {
if (throwPowerUpActive && LK.ticks - lastThrowTick >= 30 || !throwPowerUpActive && LK.ticks - lastThrowTick >= 120) {
if (throwPowerUpActive && LK.ticks - powerUpTimer >= 300) {
throwPowerUpActive = false;
lastThrowTick = LK.ticks;
}
var event = obj.event;
var pos = event.getLocalPosition(self);
var newGift = self.addChild(new Gift());
newGift.x = santaSleigh.x;
newGift.y = santaSleigh.y;
gifts.push(newGift);
lastThrowTick = LK.ticks;
}
});
LK.stageContainer.setBackgroundColor(0x000000);
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
var santaSleigh = self.addChild(new SantaSleigh());
santaSleigh.x = 2048 / 2;
santaSleigh.y = 2732 / 4;
var cloud = self.addChild(new Cloud());
cloud.x = 2048 / 2;
cloud.y = 2732 / 2;
self.setChildIndex(cloud, 0);
self.setChildIndex(santaSleigh, 1);
scoreTxt.anchor.set(.5, 0);
LK.gui.topCenter.addChild(scoreTxt);
var gifts = [];
var chimneys = [];
var score = 0;
var isGameOver = false;
var tickOffset = 0;
var giftThrowSpeed = -5;
var chimneySpeed = 2;
spawnChimney();
LK.on('tick', function () {
santaSleigh.move();
cloud.move();
for (var i = chimneys.length - 1; i >= 0; i--) {
var chimney = chimneys[i];
if (chimney.x < 0) {
chimney.destroy();
chimneys.splice(i, 1);
}
}
if (isGameOver) {
LK.clearInterval(chimneySpawnInterval);
}
if (LK.ticks - lastGrinchSpawnTick >= 1800) {
var newGrinch = self.addChild(new Grinch());
newGrinch.x = 2048 / 2;
newGrinch.y = 2732 / 2;
grinches.push(newGrinch);
lastGrinchSpawnTick = LK.ticks;
}
if (LK.ticks - lastPowerUpSpawnTick >= 2400) {
var newPowerUp = self.addChild(new PowerUp());
newPowerUp.x = Math.random() * 2048;
newPowerUp.y = 1800;
powerUps.push(newPowerUp);
lastPowerUpSpawnTick = LK.ticks;
self.setChildIndex(newPowerUp, self.children.length - 1);
}
for (var i = 0; i < grinches.length; i++) {
var grinch = grinches[i];
grinch.move();
for (var j = gifts.length - 1; j >= 0; j--) {
var gift = gifts[j];
if (gift.intersects(grinch)) {
gift.destroy();
gifts.splice(j, 1);
}
}
}
});
var lastThrowTick = -120;
var lastGrinchSpawnTick = 0;
var lastPowerUpSpawnTick = 0;
var grinches = [];
var powerUps = [];
var throwPowerUpActive = false;
var powerUpTimer = 0;
LK.on('tick', function () {
for (var i = gifts.length - 1; i >= 0; i--) {
var gift = gifts[i];
gift.move();
if (gift.y < 0) {
gift.destroy();
gifts.splice(i, 1);
}
}
for (var i = chimneys.length - 1; i >= 0; i--) {
var chimney = chimneys[i];
chimney.x -= chimneySpeed;
if (chimney.x < 0) {
if (!chimney.touchedByGift) {
score -= 2;
scoreTxt.setText(score);
if (score < 0) {
isGameOver = true;
if (score < 0) {
scoreTxt.setText('You disappointed too many kids');
scoreTxt.scale.set(0.6);
}
}
LK.effects.flashScreen(0xff0000, 1000);
spawnChimney();
}
chimneys.splice(i, 1);
chimney.destroy();
}
}
for (var i = gifts.length - 1; i >= 0; i--) {
var gift = gifts[i];
for (var j = chimneys.length - 1; j >= 0; j--) {
var chimney = chimneys[j];
if (gift.intersects(chimney) && !chimney.touchedByGift) {
score++;
scoreTxt.setText(score);
chimney.touchedByGift = true;
LK.effects.flashScreen(0x00ff00, 500);
gift.destroy();
gifts.splice(i, 1);
chimneySpeed += 0.2;
spawnChimney();
break;
}
}
for (var k = powerUps.length - 1; k >= 0; k--) {
var powerUp = powerUps[k];
if (gift.intersects(powerUp)) {
LK.effects.flashScreen(0x0000ff, 500);
powerUp.destroy();
powerUps.splice(k, 1);
lastThrowTick = LK.ticks - 60;
throwPowerUpActive = true;
powerUpTimer = LK.ticks;
break;
}
}
}
if (isGameOver) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
});
});
chimney. pixelart. residential chimney. only chimney. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
gift. pixelart. christmas. green and red. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
night sky. pixelart. seamless. clouds. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixelart. christmas. santa in sleigh. from the side. flying. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
grinch. green monster. pixelart. only face. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
pixelart. chistmas present. powerup. game art Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.