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.