User prompt
Reduce background size
User prompt
Double background size
User prompt
Center background
User prompt
Double background size
User prompt
Fix Bug: 'Uncaught TypeError: self.createBackground is not a function' in this line: 'self.createBackground();' Line Number: 377
User prompt
Create background
User prompt
Fix Bug: 'Uncaught TypeError: self.initializeWorkPlace is not a function' in this line: 'self.initializeWorkPlace();' Line Number: 270
User prompt
Fix all code
User prompt
Fix
User prompt
Fix Bug: 'Uncaught ReferenceError: Villager is not defined' in this line: 'Villager.prototype.isDoingSomething = function () {' Line Number: 287
User prompt
Fix
User prompt
Fix
User prompt
Fix Bug: 'Uncaught TypeError: villager.initializePosition is not a function' in this line: 'villager.initializePosition(x, y);' Line Number: 259
User prompt
Fix Bug: 'Uncaught TypeError: self.initializePosition is not a function' in this line: 'self.initializePosition();' Line Number: 68
User prompt
Fix
User prompt
Fix
User prompt
Improve 2 time
User prompt
Improve
User prompt
Improve
User prompt
Fix Bug: 'this.createAndAddVillager is not a function' in this line: 'this.createAndAddVillager(false, Math.random() * 50 + 50, Math.random() * 2048, Math.random() * 2732);' Line Number: 402
User prompt
Improve
User prompt
Improve
User prompt
Improve
User prompt
Fix Bug: 'Uncaught ReferenceError: Villager is not defined' in this line: 'Villager.prototype.isDoingSomething = function () {' Line Number: 270
User prompt
Fix
var Home = Container.expand(function () {
	var self = Container.call(this);
	self.homeGraphics = self.createAsset('house', 'Villager Home Graphics', .5, .5);
	self.isOccupiable = true;
	self.occupy = function (villager) {
		if (!self.isOccupiable) return;
		self.isOccupiable = false;
		villager.home = this;
		LK.setTimeout(function () {
			villager.state = 'goingToWork';
			villager.moveTo(villager.workplace.x, villager.workplace.y);
		}, 5000);
	};
	self.initializeRandomPosition = function () {
		self.x = Math.random() * 2048;
		self.y = Math.random() * 2732;
	};
	self.initializeRandomPosition();
});
var ResourceDisplay = Container.expand(function (resources) {
	var self = Container.call(this);
	self.woodDisplay = self.addChild(new WoodDisplay(resources.wood));
	self.rockDisplay = self.addChild(new RockDisplay(resources.rock));
	self.foodDisplay = self.addChild(new FoodDisplay(resources.food));
	self.positionDisplays();
});
var WoodDisplay = Container.expand(function (woodResource) {
	var self = Container.call(this);
	self.woodResource = woodResource;
	var woodGraphics = self.createAsset('wood', 'Wood Resource Display', 0.5, 0.5);
	self.addChild(woodGraphics);
	self.woodText = new Text2(woodResource.amount.toString(), {
		size: 50,
		fill: "#ffffff"
	});
	self.woodText.position.set(woodGraphics.width / 2, woodGraphics.height + 20);
	self.addChild(self.woodText);
});
var RockDisplay = Container.expand(function (rockResource) {
	var self = Container.call(this);
	self.rockResource = rockResource;
	var rockGraphics = self.createAsset('rock', 'Rock Resource Display', 0.5, 0.5);
	self.addChild(rockGraphics);
	self.rockText = new Text2(rockResource.amount.toString(), {
		size: 50,
		fill: "#ffffff"
	});
	self.rockText.x = rockGraphics.width / 2;
	self.rockText.y = rockGraphics.height + 20;
	self.addChild(self.rockText);
});
var FoodDisplay = Container.expand(function (foodResource) {
	var self = Container.call(this);
	self.foodResource = foodResource;
	var foodGraphics = self.createAsset('food', 'Food Resource Display', 0.5, 0.5);
	self.addChild(foodGraphics);
	self.foodText = new Text2(foodResource.amount.toString(), {
		size: 50,
		fill: "#ffffff"
	});
	self.foodText.x = foodGraphics.width / 2;
	self.foodText.y = foodGraphics.height + 20;
	self.addChild(self.foodText);
});
var Well = Container.expand(function () {
	var self = Container.call(this);
	self.wellGraphics = self.createAsset('well', 'Well Graphics', .5, .5);
	self.initializePosition();
	self.drinkWater = function (villager) {
		villager.tiredness -= 5;
		if (villager.tiredness < 0) villager.tiredness = 0;
	};
});
var Inn = Container.expand(function () {
	var self = Container.call(this);
	self.x = 2048 / 2;
	self.y = 2732 / 2 + 800;
	self.isOccupiable = true;
	self.occupy = function (villager) {
		if (!self.isOccupiable) return;
		self.isOccupiable = false;
		villager.state = 'restingAtInn';
		LK.setTimeout(function () {
			self.isOccupiable = true;
		}, 10000);
	};
});
var Gardener = Container.expand(function () {
	var self = Container.call(this);
	self.x = Math.random() * 2048;
	self.y = Math.random() * 2732;
	self.tendPlants = function () {};
	self.plantNewTree = function () {
		var newTree = new Tree();
		newTree.x = Math.random() * 2048;
		newTree.y = Math.random() * 2732;
		if (self.parent) {
			self.parent.addChild(newTree);
		}
	};
});
var Festival = Container.expand(function () {
	var self = Container.call(this);
	self.x = 2048 / 2;
	self.y = 2732 / 2 - 800;
	self.isActive = false;
	self.activateFestival = function () {
		self.isActive = true;
		LK.setTimeout(function () {
			self.isActive = false;
		}, 10000);
	};
	self.isVillagerParticipating = function (villager) {
		return self.isActive && villager.intersects(self);
	};
});
var Heart = Container.expand(function () {
	var self = Container.call(this);
	self.showAbove = function (villager) {
		self.x = villager.x;
		self.y = villager.y - villager.height;
		self.alpha = 1;
		self.follow = function () {
			if (villager) {
				self.x = villager.x;
				self.y = villager.y - villager.height;
			}
		};
		LK.on('tick', self.follow);
		LK.setTimeout(function () {
			LK.off('tick', self.follow);
			self.alpha = 1;
			self.destroy();
		}, 1000);
	};
});
var Market = Container.expand(function () {
	var self = Container.call(this);
	self.x = 2048 / 2;
	self.y = 2732 / 2 + 1200;
	self.availableResources = {
		wood: 0,
		rock: 0,
		food: 0
	};
	self.trade = function (villager, resourceType, amount) {
		if (self.availableResources[resourceType] >= amount) {
			self.availableResources[resourceType] -= amount;
			villager.gameResources[resourceType].amount += amount;
		}
	};
	self.addResource = function (resourceType, amount) {
		self.availableResources[resourceType] += amount;
	};
});
var HouseBuilder = Container.expand(function () {
	var self = Container.call(this);
	self.build = function (villager) {
		var newHouse = new House();
		newHouse.initializeRandomPosition();
		this.addChild(newHouse);
		villager.state = 'atHome';
		villager.home = newHouse;
		newHouse.scheduleVillagerWork(villager);
	};
});
var WoodResource = Container.expand(function (amount) {
	var self = Container.call(this);
	self.type = 'Wood';
	self.amount = amount;
	self.collect = function (villager) {};
});
var RockResource = Container.expand(function (amount) {
	var self = Container.call(this);
	self.type = 'Rock';
	self.amount = amount;
	self.collect = function (villager) {};
});
var FoodResource = Container.expand(function (amount) {
	var self = Container.call(this);
	self.type = 'Food';
	self.amount = amount;
	self.collect = function (villager) {};
});
var Tree = Container.expand(function () {
	var self = Container.call(this);
	self.resourceType = 'food';
	self.amount = 100;
	self.collectResource = function (villager) {
		if (self.amount > 0) {
			var collectedAmount = Math.min(5, self.amount);
			villager.gameResources.food.amount += collectedAmount;
			villager.carriedFood += collectedAmount;
			self.amount -= collectedAmount;
			if (self.amount <= 0) {
				self.destroy();
			}
		}
	};
});
var Farmer = Container.expand(function (resources) {
	var self = Container.call(this);
	self.gameResources = resources;
	self.currentAction = null;
	self.targetX = null;
	self.targetY = null;
	self.speed = 2;
	self.energy = 100;
	self.tiredness = 0;
	self.state = 'idle';
	self.home = null;
	self.workplace = null;
});
var Blacksmith = Container.expand(function (resources) {
	var self = Container.call(this);
	self.gameResources = resources;
	self.currentAction = null;
	self.targetX = null;
	self.targetY = null;
	self.speed = 2;
	self.energy = 100;
	self.tiredness = 0;
	self.state = 'idle';
	self.home = null;
	self.workplace = null;
});
var Merchant = Container.expand(function (resources) {
	var self = Container.call(this);
	self.gameResources = resources;
	self.currentAction = null;
	self.targetX = null;
	self.targetY = null;
	self.speed = 2;
	self.energy = 100;
	self.tiredness = 0;
	self.state = 'idle';
	self.home = null;
	self.workplace = null;
});
var VillagerHome = Container.expand(function () {
	var self = Container.call(this);
	self.initializeHome();
});
var DayNightCycleManager = Container.expand(function () {
	var self = Container.call(this);
	self.cycleDuration = 24000;
	self.startTime = Date.now();
	self.timeOfDayText = self.createTimeOfDayText();
	LK.gui.topCenter.addChild(self.timeOfDayText);
});
var VillagerFactory = Container.expand(function (resources) {
	var self = Container.call(this);
	self.resources = resources;
	self.createVillager = function (iq) {
		return new Villager(self.resources, iq);
	};
	self.initializeAndAddVillager = function (isBaby, iq, x, y) {
		var villager = this.createVillager(iq);
		villager.setAge(isBaby);
		villager.initializePosition(x, y);
		if (this.parent) {
			this.parent.addChild(villager);
		}
		return villager;
	};
});
var House = Container.expand(function () {
	var self = Container.call(this);
	self.isOccupiable = true;
	self.occupants = [];
});
var Bakery = Container.expand(function () {
	var self = Container.call(this);
});
var Cloud = Container.expand(function () {
	var self = Container.call(this);
	self.initializeMovement = function (speed) {
		self.speed = speed;
		self.cloudGraphics = self.createAsset('cloud', 'Cloud Graphics', 0.5, 0.5);
		self.addChild(self.cloudGraphics);
		self.mover = new CloudMover(self);
		LK.on('tick', self.mover.move.bind(self.mover));
	};
});
var EmployingWorkPlace = Container.expand(function () {
	var self = Container.call(this);
	self.initializeWorkPlace();
});
var Villager = Container.expand(function (resources, iq) {
	var self = Container.call(this);
	self.gameResources = resources;
	self.iq = iq;
});
Villager.prototype.isDoingSomething = function () {
	return this.currentAction !== null;
};
Villager.prototype.moveTo = function (targetX, targetY, speed) {
	var dx = targetX - this.x;
	var dy = targetY - this.y;
	var distance = Math.sqrt(dx * dx + dy * dy);
	if (distance > 0) {
		var moveDistance = Math.min(speed, distance);
		this.x += dx / distance * moveDistance;
		this.y += dy / distance * moveDistance;
	}
};
Villager.prototype.decideNextAction = function () {};
Villager.prototype.performAction = function () {
	if (this.state === 'idle') {
		this.idle();
	} else if (this.state === 'goingHomeToRest') {
		this.goHomeToRest();
	} else if (this.state === 'goingToWork') {
		this.goToWork();
	} else if (this.state === 'wandering') {
		this.wander();
	}
};
Villager.prototype.idle = function () {};
Villager.prototype.goHomeToRest = function () {
	this.moveTo(this.home.x, this.home.y, this.speed);
	if (this.x === this.home.x && this.y === this.home.y) {
		this.state = 'resting';
	}
};
Villager.prototype.goToWork = function () {
	this.moveTo(this.workplace.x, this.workplace.y, this.speed);
	if (this.x === this.workplace.x && this.y === this.workplace.y) {
		this.state = 'working';
	}
};
Villager.prototype.wander = function () {
	this.moveTo(this.targetX, this.targetY, this.speed);
	if (this.x === this.targetX && this.y === this.targetY) {
		this.decideNextAction();
	}
};
Villager.prototype.updateStateAndPosition = function () {
	if (this.targetX !== null && this.targetY !== null) {
		this.moveTo(this.targetX, this.targetY);
	}
	this.performAction();
};
Villager.prototype.update = function () {
	this.updateStateAndPosition();
};
EmployingWorkPlace.prototype.initializeWorkPlace = function () {};
ResourceDisplay.prototype.positionDisplays = function () {
	this.woodDisplay.position.set(100, 50);
	this.rockDisplay.position.set(300, 50);
	this.foodDisplay.position.set(500, 50);
};
var FanBehavior = function (fan) {
	this.fan = fan;
};
FanBehavior.prototype.cheer = function () {};
Bakery.prototype.sellBread = function (villager) {
	if (villager.gameResources.food.amount >= 5) {
		villager.gameResources.food.amount -= 5;
		villager.energy += 10;
		if (villager.energy > 100) villager.energy = 100;
	}
};
var CloudMover = function (cloud) {
	this.cloud = cloud;
};
CloudMover.prototype.move = function () {
	this.cloud.x += this.cloud.speed;
	if (this.cloud.x > 2048) {
		this.cloud.x = -this.cloud.cloudGraphics.width;
	}
};
DayNightCycleManager.prototype.createTimeOfDayText = function () {
	var text = new Text2('', {
		size: 50,
		fill: "#ffffff"
	});
	text.anchor.set(0.5, 0);
	text.x = 2048 / 2;
	text.y = 100;
	return text;
};
DayNightCycleManager.prototype.updateCycle = function () {};
Villager.prototype.decideNextAction = function () {
	if (this.energy < 20 && this.home) {
		this.targetX = this.home.x;
		this.targetY = this.home.y;
		this.state = 'goingHomeToRest';
	} else if (this.energy >= 20 && this.workplace) {
		this.targetX = this.workplace.x;
		this.targetY = this.workplace.y;
		this.state = 'goingToWork';
	} else {
		this.targetX = Math.random() * 2048;
		this.targetY = Math.random() * 2732;
		this.state = 'wandering';
	}
};
Villager.prototype.update = function () {};
var Game = Container.expand(function () {
	var self = Container.call(this);
	Game.prototype.createAndInitializeVillagers = function () {
		for (var i = 0; i < 10; i++) {
			var iq = Math.random() * 50 + 50;
			var x = Math.random() * 2048;
			var y = Math.random() * 2732;
			var villager = this.villagerFactory.initializeAndAddVillager(false, iq, x, y);
			this.initializeVillagerProperties(villager);
			this.registerVillager(villager);
		}
	};
	Game.prototype.executeCurrentAction = function (villager) {};
	Game.prototype.registerVillager = function (villager) {
		this.villagers.push(villager);
	};
	Game.prototype.createAndAddVillagerIfPossible = function () {
		if (this.resources && this.resources.food.amount >= 10) {
			this.addVillager(false, Math.random() * 50 + 50, Math.random() * 2048, Math.random() * 2732);
			this.resources.food.amount -= 10;
		}
	};
	Game.prototype.zoomOnVillagers = function (villagerA, villagerB) {
		var zoomLevel = 2;
		var centerX = (villagerA.x + villagerB.x) / 2;
		var centerY = (villagerA.y + villagerB.y) / 2;
		LK.stageContainer.scale.x = zoomLevel;
		LK.stageContainer.scale.y = zoomLevel;
		LK.stageContainer.pivot.x = centerX;
		LK.stageContainer.pivot.y = centerY;
		LK.stageContainer.x = LK.stageContainer.width / 2;
		LK.stageContainer.y = LK.stageContainer.height / 2;
		LK.setTimeout(function () {
			LK.stageContainer.scale.x = 1;
			LK.stageContainer.scale.y = 1;
			LK.stageContainer.pivot.x = 0;
			LK.stageContainer.pivot.y = 0;
			LK.stageContainer.x = 0;
			LK.stageContainer.y = 0;
		}, 3000);
	};
	self.makeVillagerDecisions = function (villager) {
		if (!villager.currentAction) {
			villager.decideNextAction();
		}
	};
	LK.on('tick', function () {
		if (self.villagerAndFramerateDisplay) self.framerateDisplay.update();
		var currentTime = Date.now();
		var elapsedTime = Math.floor((currentTime - self.startTime) / 1000);
		self.timerText.setText('Time: ' + elapsedTime);
		for (var i = 0; i < self.villagers.length; i++) {
			var villager = self.villagers[i];
			villager.updateStateAndPosition();
			self.makeVillagerDecisions(villager);
		}
		self.handleVillagersFallingInLove();
	});
	self.timerText = new Text2('Time: 0', {
		size: 100,
		fill: "#ffffff"
	});
	self.timerText.anchor.set(1, 1);
	self.timerText.x = 2048 - 500;
	self.timerText.y = 2732;
	LK.gui.topCenter.addChild(self.timerText);
	self.startTime = Date.now();
	var market = new Market();
	self.addChild(market);
	var inn = new Inn();
	self.addChild(inn);
	var bakery = new Bakery();
	self.addChild(bakery);
	var well = new Well();
	self.addChild(well);
	self.resources = createResources();
	self.resourceDisplay = new ResourceDisplay(self.resources);
	LK.gui.addChild(self.resourceDisplay);
	Game.prototype.handleVillagersFallingInLove = function () {
		for (var i = 0; i < this.villagers.length; i++) {
			for (var j = i + 1; j < this.villagers.length; j++) {
				var villagerA = this.villagers[i];
				var villagerB = this.villagers[j];
			}
		}
	};
	function createResources() {
		return {
			wood: new WoodResource(100),
			rock: new RockResource(100),
			food: new FoodResource(100)
		};
	}
	Villager.prototype.setAge = function (isBaby) {
		if (isBaby) {
			this.scale.x = 0.5;
			this.scale.y = 0.5;
		} else {
			this.scale.x = 1;
			this.scale.y = 1;
		}
	};
	Game.prototype.addVillager = function (isBaby, iq, x, y) {
		var villager = this.villagerFactory.initializeAndAddVillager(isBaby, iq, x, y);
		this.initializeVillagerProperties(villager);
		this.registerVillager(villager);
	};
	Game.prototype.initializeVillagerProperties = function (villager) {
		villager.speed = 2;
		villager.energy = 100;
		villager.tiredness = 0;
		villager.state = 'idle';
		villager.home = null;
		villager.workplace = null;
		villager.currentAction = null;
		villager.targetX = null;
		villager.targetY = null;
	};
	self.villagers = [];
	self.houses = [];
	self.cloudLayer = new Container();
	self.clouds = [];
	for (var i = 0; i < 5; i++) {
		var cloud = new Cloud();
		self.clouds.push(cloud);
		self.cloudLayer.addChild(cloud);
	}
	self.villagerFactory = new VillagerFactory(self.resources);
	self.createAndInitializeVillagers();
	self.market = new Market();
	self.addChild(self.market);
	Game.prototype.createHouse = function (x, y) {
		var house = new House();
		house.x = x;
		house.y = y;
		return house;
	};
	Game.prototype.addHouse = function (house) {
		this.addChild(house);
		this.houses.push(house);
	};
	var houses = [];
	var newHouse = self.createHouse(2048 / 2, 2732 / 2);
	self.addHouse(newHouse);
	houses.push(newHouse);
	Game.prototype.createWorkplace = function () {
		var workplace = new EmployingWorkPlace();
		workplace.x = Math.random() * 2048;
		workplace.y = Math.random() * 2732;
		return workplace;
	};
	Game.prototype.addWorkplace = function (workplace) {
		this.addChild(workplace);
		this.workplaces.push(workplace);
	};
	self.workplaces = [];
	var workplace = self.createWorkplace();
	self.addWorkplace(workplace);
	self.workplaces.push(workplace);
	var house = new House();
	house.x = 2048 / 2;
	house.y = 2732 / 2;
	houses.push(house);
	self.addChild(house);
	var workplace = new EmployingWorkPlace();
	workplace.x = Math.random() * 2048;
	workplace.y = Math.random() * 2732;
	self.workplaces.push(workplace);
	self.addChild(workplace);
	self.villagerCreationInterval = LK.setInterval(self.createAndAddVillagerIfPossible.bind(self), 10000);
});
 ===================================================================
--- original.js
+++ change.js
@@ -349,19 +349,12 @@
 	this.woodDisplay.position.set(100, 50);
 	this.rockDisplay.position.set(300, 50);
 	this.foodDisplay.position.set(500, 50);
 };
-Well.prototype.initializePosition = function () {
-	this.position.set(2048 / 2 - 800, 2732 / 2 - 600);
-};
 var FanBehavior = function (fan) {
 	this.fan = fan;
 };
 FanBehavior.prototype.cheer = function () {};
-VillagerHome.prototype.initializeRandomPosition = function () {
-	this.x = Math.random() * 2048;
-	this.y = Math.random() * 2732;
-};
 Bakery.prototype.sellBread = function (villager) {
 	if (villager.gameResources.food.amount >= 5) {
 		villager.gameResources.food.amount -= 5;
 		villager.energy += 10;
@@ -402,12 +395,8 @@
 		this.targetY = Math.random() * 2732;
 		this.state = 'wandering';
 	}
 };
-Villager.prototype.initializePosition = function (x, y) {
-	this.x = x;
-	this.y = y;
-};
 Villager.prototype.update = function () {};
 var Game = Container.expand(function () {
 	var self = Container.call(this);
 	Game.prototype.createAndInitializeVillagers = function () {
 A background of a paysage with plain and without tree or montainbut no water see from the top in the air 100m by 100m Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 One human medieval villager in a warcraft 2 style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 a house in a warcraft 2 style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A tree a rock and crambery in a RTS style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A heart comic style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A cloud in a comic style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A market in a RTS fantasy style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 An Inn in a RTS fantasy style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 An school in a RTS fantasy style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 An bakery in a RTS fantasy style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A well in a RTS fantasy style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A tree in a rts style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 An apple in a rts style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A rock in a rts style Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A home in a RTS and fantasy style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A brewery in a fantasy rts style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 A lumberjack in a fantasy rts style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 a marketplace in a fantasy rts style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
 a festival in a fantasy rts style. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.