User prompt
Fix Bug: 'TypeError: workerRegistry[i] is undefined' in this line: 'console.log("gift rate adding " + workerRegistry[i].className + " : " + workerRegistry[i].workerCount + " * " + workerRegistry[i].scoreMultiplier);' Line Number: 479
User prompt
Fix Bug: 'TypeError: undefined has no properties' in this line: 'console.log("gift rate adding " + workerRegistry[i].className + " : " + workerRegistry[i].workerCount + " * " + workerRegistry[i].scoreMultiplier);' Line Number: 479
Code edit (23 edits merged)
Please save this source code
User prompt
Fix Bug: 'ReferenceError: teddyCostTxt is not defined' in this line: 'teddyCostTxt.setText(workerInfo.cost);' Line Number: 500
User prompt
Fix Bug: 'ReferenceError: teddyCostTxt is not defined' in this line: 'teddyCostTxt.setText(workerInfo.cost);' Line Number: 500
Code edit (3 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: workerType.walkingWorkers is undefined' in this line: 'for (var e = workerType.walkingWorkers.length - 1; e >= 0; e--) {' Line Number: 502
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: workerType.walkingWorkers is undefined' in this line: 'for (var e = workerType.walkingWorkers.length - 1; e >= 0; e--) {' Line Number: 503
User prompt
Fix Bug: 'TypeError: workerType.walkingWorkers is undefined' in this line: 'for (var e = workerType.walkingWorkers.length - 1; e >= 0; e--) {' Line Number: 503
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: workerType.walkingWorkers is undefined' in this line: 'for (var e = workerType.walkingWorkers.length - 1; e >= 0; e--) {' Line Number: 505
Code edit (3 edits merged)
Please save this source code
User prompt
Fix Bug: 'ReferenceError: HireElfButton is not defined' in this line: 'var hireElfButton = self.addChild(new HireElfButton());' Line Number: 270
Code edit (10 edits merged)
Please save this source code
Code edit (25 edits merged)
Please save this source code
Code edit (22 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: gifts[a].remove is not a function' in this line: 'gifts[a].remove();' Line Number: 379
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: gifts[a].remove is not a function' in this line: 'gifts[a].remove();' Line Number: 381
Code edit (1 edits merged)
Please save this source code
User prompt
Fix Bug: 'TypeError: gifts[a].remove is not a function' in this line: 'gifts[a]?.remove();' Line Number: 381
Code edit (22 edits merged)
Please save this source code
User prompt
Fix Bug: 'Timeout.tick error: gifts is not defined' in this line: 'for (var a = gifts.length - 1; a >= 0; a--) {' Line Number: 172
User prompt
Fix Bug: 'Timeout.tick error: gifts is not defined' in this line: 'for (var a = gifts.length - 1; a >= 0; a--) {' Line Number: 172
var score = 100;
var gameWinStatus = 0;
var elves = 0;
var gingerBoys = 0;
var teddyBears = 0;
var availableGiftsCounter = 0;
var secondsBeforeChristmas = 86400 * 25;
var giftsNeeded = 8000000;
var workerRegistry = {
'elf': {
'index': 0,
'className': 'Elf',
'workerCount': elves,
'scoreMultiplier': 1,
'baseCost': 5
},
'ginger': {
'index': 1,
'className': 'Ginger',
'workerCount': gingerBoys,
'scoreMultiplier': 3,
'baseCost': 10
},
'teddy': {
'index': 2,
'className': 'Teddy',
'workerCount': teddyBears,
'scoreMultiplier': 7,
'baseCost': 20
}
};
var workersTypesCount = Object.keys(workerRegistry).length;
var createWorkerWorkFunction = function (workerType, self, gifts, workingWorkers) {
console.log("createWorkerWorkFunction ", workerType, self, gifts, workingWorkers);
score += workerType.workerCount * workerType.scoreMultiplier;
var newGift = new GenericGift(workerType.className);
newGift.x = Math.random() * 2048;
newGift.y = 0;
gifts.push(newGift);
self.addChild(newGift);
console.log("workingWorkers.length=" + workingWorkers.length + " / workerType.workerCount=", workerType.workerCount);
if (workingWorkers.length < workerType.workerCount) {
var workingWorker = new WorkingWorker(workerType.className);
workingWorker.startFromLeft = Math.random() < 0.5;
workingWorker.x = workingWorker.startFromLeft ? -workingWorker.width : 2048 + workingWorker.width;
workingWorker.y = 2732 - Math.random() * (2732 / 3 - workingWorker.height);
workingWorkers.push(workingWorker);
self.addChild(workingWorker);
console.log("spawned a " + workerType.className + " worker", workingWorker);
}
};
function formatTime(nbSeconds) {
var days = Math.floor(nbSeconds / 86400);
var hours = Math.floor(nbSeconds % 86400 / 3600);
var minutes = Math.floor(nbSeconds % 3600 / 60);
var seconds = nbSeconds % 60;
days = days.toString().padStart(2, '0');
hours = hours.toString().padStart(2, '0');
minutes = minutes.toString().padStart(2, '0');
seconds = seconds.toString().padStart(2, '0');
if (nbSeconds > 86400) {
return days + 'd ' + hours + 'h ' + minutes + 'min';
} else {
return hours + 'h ' + minutes + 'min ' + seconds + 'sec';
}
}
var winAnimation = function (self, giftWrapper) {
gameWinStatus = 1;
var winBackground = self.createAsset('winBackground', 'Win Background Image', 0, 0.05);
winBackground.scale.set(2, 3);
self.addChildAt(winBackground, 1);
giftWrapper.visible = false;
if (!self.santaAdded) {
var santaClaus = new SantaClaus();
santaClaus.x = -100;
santaClaus.y = 2732 * 0.25;
self.addChild(santaClaus);
self.santaAdded = true;
}
for (var i = 0; i < 50; i++) {
var confettiPiece = new Confetti();
confettiPiece.x = Math.random() * 2048;
confettiPiece.y = Math.random() * 2732;
self.addChild(confettiPiece);
}
LK.setTimeout(function () {
LK.showGameOver(false);
santaClaus.destroy();
}, 7000);
};
var loseAnimation = function (self, giftWrapper) {
gameWinStatus = -1;
var lostBackground = self.createAsset('lostBackground', 'Lost Background Image', 0, 0.06);
lostBackground.scale.set(2, 3);
self.addChildAt(lostBackground, 1);
giftWrapper.visible = false;
for (var i = 0; i < 100; i++) {
var raindrop = new Raindrop();
raindrop.x = Math.random() * 2048;
raindrop.y = -Math.random() * 2732;
self.addChild(raindrop);
}
LK.setTimeout(function () {
LK.showGameOver();
}, 5000);
};
var elvesWork = function (self, gifts, workingElves) {
score += elves;
var newElfGift = new ElfGift();
newElfGift.x = Math.random() * 2048;
newElfGift.y = 0;
gifts.push(newElfGift);
self.addChild(newElfGift);
if (workingElves.length < elves) {
var workingElf = new WorkingElf();
workingElf.startFromLeft = Math.random() < 0.5;
workingElf.x = workingElf.startFromLeft ? -workingElf.width : 2048 + workingElf.width;
workingElf.y = 2732 - Math.random() * (2732 / 3 - workingElf.height);
workingElves.push(workingElf);
self.addChild(workingElf);
}
};
var gingersWork = function (self, gifts, workingGingers) {
score += gingerBoys * 3;
var newGingerGift = new GingerGift();
newGingerGift.x = Math.random() * 2048;
newGingerGift.y = 0;
gifts.push(newGingerGift);
self.addChild(newGingerGift);
if (workingGingers.length < gingerBoys) {
var workingGinger = new WorkingGinger();
workingGinger.startFromLeft = Math.random() < 0.5;
workingGinger.x = workingGinger.startFromLeft ? -workingGinger.width : 2048 + workingGinger.width;
workingGinger.y = 2732 - Math.random() * (2732 / 3 - workingGinger.height);
workingGingers.push(workingGinger);
self.addChild(workingGinger);
}
};
var HireButton = Container.expand(function (workerType) {
var self = Container.call(this);
var buttonGraphics = self.createAsset('hire' + workerType.className, 'Hire ' + workerType.className + ' Button', 0.5, 0.5);
buttonGraphics.scale.set(2);
self.on('down', function () {
console.log("Try buy " + workerType.className);
var cost = Math.pow(2, workerType.workerCount) * workerType.baseCost;
if (score >= cost) {
score -= cost;
workerType.workerCount += 1;
}
console.log("workerType.workerCount= " + workerType.workerCount + "/ teddyBears =" + teddyBears);
});
});
var WorkingWorker = Container.expand(function (workerClassName) {
var self = Container.call(this);
self.createAsset('working' + workerClassName, 'Working ' + workerClassName + ' Graphics', .5, .5);
self.speed = 3 + Math.random() * 2;
self.move = function () {
if (self.startFromLeft) {
self.x += self.speed;
} else {
self.x -= self.speed;
self.scale.x = -1;
}
};
});
var GenericGift = Container.expand(function (workerClassName) {
var self = Container.call(this);
self.createAsset(workerClassName + 'Gift', workerClassName + ' Gift Graphics', .5, .5);
self.speed = 4 + Math.random() * 2;
self.move = function () {
self.y += self.speed;
};
});
var SantaClaus = Container.expand(function () {
var self = Container.call(this);
var santaGraphics = self.createAsset('santaClaus', 'Santa Claus Graphics', 0.5, 0.5);
self.speed = 6;
self.move = function () {
self.x += self.speed;
};
LK.on('tick', function () {
self.move();
});
});
var Raindrop = Container.expand(function () {
var self = Container.call(this);
var raindropGraphics = self.createAsset('raindrop', 'Raindrop Graphics', 0.5, 0.5);
self.speed = Math.random() * 5 + 5;
self.move = function () {
self.y += self.speed;
if (self.y > 2732) {
self.destroy();
}
};
LK.on('tick', function () {
self.move();
});
});
var Confetti = Container.expand(function () {
var self = Container.call(this);
var colors = [0xFF0000, 0x00FF00, 0x0000FF, 0xFFFF00, 0xFF00FF, 0x00FFFF];
var confettiGraphics = self.createAsset('confetti', 'Confetti Graphics', 0.5, 0.5);
confettiGraphics.tint = colors[Math.floor(Math.random() * colors.length)];
self.speed = Math.random() * 5 + 2;
self.rotationSpeed = Math.random() * 0.1;
self.move = function () {
self.y += self.speed;
self.rotation += self.rotationSpeed;
if (self.y > 2732) {
self.destroy();
}
};
LK.on('tick', function () {
self.move();
});
});
var Gift = Container.expand(function () {
var self = Container.call(this);
var giftGraphics = self.createAsset('gift', 'Gift Graphics', .5, .5);
self.speed = 5;
self.move = function () {
self.y += self.speed;
};
});
var HireElfButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('hireElf', 'Hire Elf Button', 0.5, 0.5);
buttonGraphics.scale.set(2);
buttonGraphics.tint = 0xffff00;
self.on('down', function () {
var elfCost = Math.pow(2, elves) * 5;
if (score >= elfCost) {
score -= elfCost;
elves += 1;
}
});
});
var WorkingElf = Container.expand(function () {
var self = Container.call(this);
var elfGraphics = self.createAsset('workingElf1', 'Working Elf Graphics', .5, .5);
self.speed = 3;
self.move = function () {
if (self.startFromLeft) {
self.x += self.speed;
} else {
self.x -= self.speed;
self.scale.x = -1;
}
};
});
var ElfGift = Container.expand(function () {
var self = Container.call(this);
var elfGiftGraphics = self.createAsset('elfGift', 'Elf Gift Graphics', .5, .5);
self.speed = 5;
self.move = function () {
self.y += self.speed;
};
});
var HireGingerButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('hireGinger', 'Hire Ginger Button', 0.55, 0.5);
buttonGraphics.scale.set(2);
self.on('down', function () {
var gingerCost = Math.pow(2, gingerBoys) * 10;
if (score >= gingerCost) {
score -= gingerCost;
gingerBoys += 1;
}
});
});
var WorkingGinger = Container.expand(function () {
var self = Container.call(this);
var gingerGraphics = self.createAsset('workingGinger', 'Working Ginger Graphics', .5, .5);
self.speed = 4;
self.move = function () {
if (self.startFromLeft) {
self.x += self.speed;
} else {
self.x -= self.speed;
self.scale.x = -1;
}
};
});
var GingerGift = Container.expand(function () {
var self = Container.call(this);
var gingerGiftGraphics = self.createAsset('gingerGift', 'Ginger Gift Graphics', .5, .5);
self.speed = 6;
self.move = function () {
self.y += self.speed;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var background = self.createAsset('background', 'Background Image', 0, 0);
background.scale.set(2, 3);
self.addChildAt(background, 0);
var giftWrapper = self.createAsset('giftWrapper', 'Big central button', 0.5, 0.5);
giftWrapper.scale.set(5);
giftWrapper.x = 2048 / 2;
giftWrapper.y = 2732 / 2;
giftWrapper.on('down', function () {
clickCount++;
score++;
availableGiftsCounter++;
giftWrapper.scale.set(4.5);
LK.setTimeout(function () {
giftWrapper.scale.set(5);
}, 300);
});
var gifts = [];
var workingElves = [];
var workingGingers = [];
var workingTeddys = [];
var giftsPerSecond = 0;
var clickCount = 0;
var startTime = Date.now();
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
var giftsWrappedLabel = new Text2('Gifts wrapped', {
size: 50,
fill: "#ffffff"
});
var giftsPerSecondTxt = new Text2('0', {
size: 50,
fill: "#ffffff"
});
var giftsNeededTxt = new Text2(giftsNeeded + '', {
size: 50,
fill: "#ffffff"
});
var giftsNeededLabel = new Text2('Gifts needed', {
size: 50,
fill: "#ffffff"
});
var xmasCountdownLabel = new Text2('Xmas Countdown', {
size: 50,
fill: "#ffffff"
});
var secondsBeforeChristmasTxt = new Text2(formatTime(secondsBeforeChristmas), {
size: 50,
fill: "#ffffff"
});
scoreTxt.anchor.set(.5, -0.2);
LK.gui.topCenter.addChild(scoreTxt);
LK.gui.topLeft.addChild(giftsPerSecondTxt);
giftsPerSecondTxt.anchor.set(0, -1);
giftsNeededTxt.anchor.set(1.2, 1);
LK.gui.bottomRight.addChild(giftsNeededTxt);
giftsNeededLabel.anchor.set(1, 2);
LK.gui.bottomRight.addChild(giftsNeededLabel);
giftsWrappedLabel.anchor.set(.5, 0);
LK.gui.topCenter.addChild(giftsWrappedLabel);
xmasCountdownLabel.anchor.set(0, 2);
LK.gui.bottomLeft.addChild(xmasCountdownLabel);
secondsBeforeChristmasTxt.anchor.set(-0.1, 1);
LK.gui.bottomLeft.addChild(secondsBeforeChristmasTxt);
var elvesTxt = new Text2('', {
size: 100,
fill: "#ffffff"
});
var hireElfButton = self.addChild(new HireElfButton());
var elfCostTxt = new Text2('5', {
size: 50,
fill: "#ffffff"
});
elfCostTxt.anchor.set(0.5, 0);
elfCostTxt.x = 1340;
elfCostTxt.y = 185;
elvesTxt.x = scoreTxt.x + 460;
elvesTxt.y = scoreTxt.y + 60;
hireElfButton.x = 1920;
hireElfButton.y = 140;
LK.gui.topCenter.addChild(elvesTxt);
LK.gui.addChild(elfCostTxt);
var gingersTxt = new Text2('', {
size: 100,
fill: "#ffffff"
});
var gingerCostTxt = new Text2('15', {
size: 50,
fill: "#ffffff"
});
var hireGingerButton = self.addChild(new HireGingerButton());
hireGingerButton.x = 1920;
hireGingerButton.y = 140 + 1 * 330;
gingerCostTxt.anchor.set(0.5, 0);
gingerCostTxt.x = 1340;
gingerCostTxt.y = 180 + 1 * 235;
gingersTxt.x = scoreTxt.x + 460;
gingersTxt.y = scoreTxt.y + 260;
LK.gui.addChild(gingerCostTxt);
LK.gui.topCenter.addChild(gingersTxt);
var teddysTxt = new Text2('', {
size: 100,
fill: "#ffffff"
});
var teddyCostTxt = new Text2(workerRegistry.teddy.baseCost + '', {
size: 50,
fill: "#ffffff"
});
var hireTeddyButton = self.addChild(new HireButton(workerRegistry.teddy));
hireTeddyButton.x = 1920;
hireTeddyButton.y = 140 + 2 * 330;
teddyCostTxt.anchor.set(0.5, 0);
teddyCostTxt.x = 1340;
teddyCostTxt.y = 180 + 2 * 235;
teddysTxt.x = scoreTxt.x + 460;
teddysTxt.y = scoreTxt.y + 260;
LK.gui.addChild(teddyCostTxt);
LK.gui.topCenter.addChild(teddysTxt);
LK.setInterval(function () {
secondsBeforeChristmas = Math.max(0, secondsBeforeChristmas - 480);
secondsBeforeChristmasTxt.setText(formatTime(secondsBeforeChristmas));
if (score > giftsNeeded) {
winAnimation(self, giftWrapper);
} else if (secondsBeforeChristmas === 0 && score < giftsNeeded) {
loseAnimation(self, giftWrapper);
}
if (gameWinStatus !== 0) {
return;
}
if (elves > 0) {
elvesWork(self, gifts, workingElves);
}
if (gingerBoys > 0) {
gingersWork(self, gifts, workingGingers);
}
if (workerRegistry.teddy.workerCount > 0) {
createWorkerWorkFunction(workerRegistry.teddy, self, gifts, workingTeddys);
}
if (availableGiftsCounter > 0) {
availableGiftsCounter--;
var newGift = new Gift();
newGift.x = Math.random() * 2048;
newGift.y = 0;
gifts.push(newGift);
self.addChild(newGift);
}
self.addChild(giftWrapper);
self.addChild(hireElfButton);
self.addChild(hireGingerButton);
}, 1000);
LK.on('tick', function () {
var currentTime = Date.now();
var elapsedTime = (currentTime - startTime) / 1000;
for (var a = gifts.length - 1; a >= 0; a--) {
gifts[a].move();
if (gifts[a].y > 2732 + gifts[a].height) {
gifts[a].destroy();
gifts.splice(a, 1);
}
}
for (var e = workingElves.length - 1; e >= 0; e--) {
workingElves[e].move();
if (workingElves[e].startFromLeft && workingElves[e].x > 2048 + workingElves[e].width || !workingElves[e].startFromLeft && workingElves[e].x < -200) {
workingElves[e].destroy();
workingElves.splice(e, 1);
}
}
for (var e = workingGingers.length - 1; e >= 0; e--) {
workingGingers[e].move();
if (workingGingers[e].startFromLeft && workingGingers[e].x > 2048 + workingGingers[e].width || !workingGingers[e].startFromLeft && workingGingers[e].x < -200) {
workingGingers[e].destroy();
workingGingers.splice(e, 1);
}
}
for (var e = workingTeddys.length - 1; e >= 0; e--) {
workingTeddys[e].move();
if (workingTeddys[e].startFromLeft && workingTeddys[e].x > 2048 + workingTeddys[e].width || !workingTeddys[e].startFromLeft && workingTeddys[e].x < -200) {
workingTeddys[e].destroy();
workingTeddys.splice(e, 1);
}
}
scoreTxt.setText(score);
var giftsRateMultiplier = elves * 1 + gingerBoys * 3;
Object.keys(workerRegistry).forEach(function (key) {
var worker = workerRegistry[key];
console.log("gift rate adding " + worker.className + " : " + worker.workerCount + " * " + worker.scoreMultiplier);
giftsRateMultiplier += worker.workerCount * worker.scoreMultiplier;
});
giftsPerSecond = (clickCount + giftsRateMultiplier) * elapsedTime / elapsedTime;
giftsPerSecondTxt.setText('Gifts/sec: ' + Math.round(giftsPerSecond));
giftsNeededTxt.setText(Math.max(0, giftsNeeded - score));
var elfCost = Math.pow(2, elves) * 5;
elfCostTxt.setText(elfCost);
elvesTxt.setText(elves || '');
hireElfButton.alpha = score < elfCost ? 0.5 : 1;
hireElfButton.interactive = score >= elfCost;
var gingerCost = Math.pow(2, gingerBoys) * 15;
gingerCostTxt.setText(gingerCost);
gingersTxt.setText(gingerBoys || '');
hireGingerButton.alpha = score < gingerCost ? 0.5 : 1;
hireGingerButton.interactive = score >= gingerCost;
});
});
A big red christmas gift, isometric view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Top view of a round gift box with a ribbon Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a cute elf Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A big green christmas gift, isometric view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Profil view of a cute little elf with a green hat, standing with his hands in front of him.no background . no floor. In-Game asset. 2d. Blank background. High contrast. No shadows.
A feerical landscape with santa's house, pines, snow, glowing lights, at night. In the front, cute elves with gree hats, gingerbread boys, teddy bears, celebrating, but no Santa Clauss in the image. Background image. High contrast. No shadows.
Provile view of Santa clauss in his sleigh with reindeer, smiling and making a sign with his hand game Asset. High contrast. No shadows.
A sad landscape with santa's house, pines, snow, mountains in the back, at night. A cute sad santa crying with big tears in the front. clean feeric style. Background image. 2d. Blank background. Color. High contrast. No shadows.
a cute gingerbread boy Single Game Texture. 2d. Transparent background. High contrast. No shadows.
A big gingerbread christmas gift, isometric view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A right profile drawing of one single cute little gingerbread boy, standing with his hands in front of him. In-Game asset. 2d. No background. High contrast. No shadows. Color. digital art
a cute smiling teddy bear standing Single Game Texture. 2d. Transparent background. High contrast. No shadows. No border.
A cute brown teddy bear from his right profile, standing, looking to the right direction and smiling with his hands in front of him. Feeric style. No background. No shadows. No back light. High contrast. Single Game Texture. In-Game asset. 2d.
a little green soldier toy standing Single Game Texture. 2d. Transparent background. High contrast. No shadows.
Profil view of a little green soldier toy, walking. no background . no floor. In-Game asset. 2d. Blank background. High contrast. No shadows.
a cute little santa's reindeer with a red nose sitting Single Game Texture. 2d. Transparent background. High contrast. No shadows.
A big white and red dotted christmas gift, isometric view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Profil view of a cute little santa's reindeer with a red nose, walking in the right direction. no background . no floor. In-Game asset. 2d. Blank background. High contrast. No shadows.
a cute little grinch standing with a santa's hat Single Game Texture. 2d. Transparent background. High contrast. No shadows.
A big purple and green dotted christmas gift, isometric view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Profile view of a mischievous little green grinch with a red scarf, big ears but no tail. Walking in the right direction. no background . no floor. In-Game asset. 2d. Blank background. High contrast. No shadows.
a cute little fairy standing with a santa hat and a magic wand Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A big light blue decorated christmas gift, isometric view Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Profile view of a cute little fairy with a santa hat and a magic wand. Flying in the right direction. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a landscape with santa's house on the left, pines with chistmas lights, snow, at night Background image. 2d. High contrast.
a big light brown and yellow christmas gift decorated with holly leaf. isometric view. no floor. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
a big green and white christmas gift ornated. isometric view. nothing under. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.