/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
	money: 0,
	farmCount: 0,
	factoryCount: 0,
	farmLevel: 1,
	factoryLevel: 1,
	highScore: 0
});
/**** 
* Classes
****/ 
// Money Button (Tap to earn)
var MoneyBtn = Container.expand(function () {
	var self = Container.call(this);
	var btn = self.attachAsset('moneyBtn', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Animate on tap
	self.tapAnim = function () {
		tween(self, {
			scaleX: 1.15,
			scaleY: 1.15
		}, {
			duration: 80,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tween(self, {
					scaleX: 1,
					scaleY: 1
				}, {
					duration: 120,
					easing: tween.easeIn
				});
			}
		});
	};
	return self;
});
// Upgrade Button (for farms/factories)
var UpgradeBtn = Container.expand(function () {
	var self = Container.call(this);
	var btn = self.attachAsset('upgradeBtn', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x222222
});
/**** 
* Game Code
****/ 
// --- Persistent State ---
// Money icon (main tap button)
// Money Farm icon
// Money Factory icon
// Upgrade button
var money = storage.money || 0;
var farmCount = storage.farmCount || 0;
var factoryCount = storage.factoryCount || 0;
var farmLevel = storage.farmLevel || 1;
var factoryLevel = storage.factoryLevel || 1;
var highScore = storage.highScore || 0;
// --- Constants ---
var FARM_BASE_COST = 50;
var FACTORY_BASE_COST = 500;
var FARM_BASE_INCOME = 2;
var FACTORY_BASE_INCOME = 20;
var FARM_UPGRADE_COST = 100;
var FACTORY_UPGRADE_COST = 1000;
var FARM_UPGRADE_MULT = 1.5;
var FACTORY_UPGRADE_MULT = 1.5;
// --- UI Elements ---
var moneyBtn = new MoneyBtn();
moneyBtn.x = 2048 / 2;
moneyBtn.y = 1100;
game.addChild(moneyBtn);
var moneyTxt = new Text2('', {
	size: 180,
	fill: "#fff"
});
moneyTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(moneyTxt);
var highScoreTxt = new Text2('', {
	size: 80,
	fill: 0xFFD700
});
highScoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(highScoreTxt);
highScoreTxt.y = 180;
// --- Farm Section ---
var farmIcon = LK.getAsset('farmIcon', {
	anchorX: 0.5,
	anchorY: 0.5
});
farmIcon.x = 600;
farmIcon.y = 1800;
game.addChild(farmIcon);
var farmCountTxt = new Text2('', {
	size: 100,
	fill: "#fff"
});
farmCountTxt.anchor.set(0.5, 0.5);
farmCountTxt.x = farmIcon.x;
farmCountTxt.y = farmIcon.y + 160;
game.addChild(farmCountTxt);
var farmBuyBtn = new UpgradeBtn();
farmBuyBtn.x = farmIcon.x;
farmBuyBtn.y = farmIcon.y + 380;
game.addChild(farmBuyBtn);
var farmBuyTxt = new Text2('', {
	size: 70,
	fill: "#fff"
});
farmBuyTxt.anchor.set(0.5, 0.5);
farmBuyTxt.x = farmBuyBtn.x;
farmBuyTxt.y = farmBuyBtn.y;
game.addChild(farmBuyTxt);
var farmUpgradeBtn = new UpgradeBtn();
farmUpgradeBtn.x = farmIcon.x;
farmUpgradeBtn.y = farmBuyBtn.y + 160;
game.addChild(farmUpgradeBtn);
var farmUpgradeTxt = new Text2('', {
	size: 60,
	fill: "#fff"
});
farmUpgradeTxt.anchor.set(0.5, 0.5);
farmUpgradeTxt.x = farmUpgradeBtn.x;
farmUpgradeTxt.y = farmUpgradeBtn.y;
game.addChild(farmUpgradeTxt);
// --- Factory Section ---
var factoryIcon = LK.getAsset('factoryIcon', {
	anchorX: 0.5,
	anchorY: 0.5
});
factoryIcon.x = 1448;
factoryIcon.y = 1800;
game.addChild(factoryIcon);
var factoryCountTxt = new Text2('', {
	size: 100,
	fill: "#fff"
});
factoryCountTxt.anchor.set(0.5, 0.5);
factoryCountTxt.x = factoryIcon.x;
factoryCountTxt.y = factoryIcon.y + 160;
game.addChild(factoryCountTxt);
var factoryBuyBtn = new UpgradeBtn();
factoryBuyBtn.x = factoryIcon.x;
factoryBuyBtn.y = factoryIcon.y + 380;
game.addChild(factoryBuyBtn);
var factoryBuyTxt = new Text2('', {
	size: 70,
	fill: "#fff"
});
factoryBuyTxt.anchor.set(0.5, 0.5);
factoryBuyTxt.x = factoryBuyBtn.x;
factoryBuyTxt.y = factoryBuyBtn.y;
game.addChild(factoryBuyTxt);
var factoryUpgradeBtn = new UpgradeBtn();
factoryUpgradeBtn.x = factoryIcon.x;
factoryUpgradeBtn.y = factoryBuyBtn.y + 160;
game.addChild(factoryUpgradeBtn);
var factoryUpgradeTxt = new Text2('', {
	size: 60,
	fill: "#fff"
});
factoryUpgradeTxt.anchor.set(0.5, 0.5);
factoryUpgradeTxt.x = factoryUpgradeBtn.x;
factoryUpgradeTxt.y = factoryUpgradeBtn.y;
game.addChild(factoryUpgradeTxt);
// --- Helper Functions ---
function formatMoney(val) {
	if (val >= 1e9) return (val / 1e9).toFixed(2) + "B";
	if (val >= 1e6) return (val / 1e6).toFixed(2) + "M";
	if (val >= 1e3) return (val / 1e3).toFixed(2) + "K";
	return Math.floor(val) + "";
}
function getFarmCost() {
	return Math.floor(FARM_BASE_COST * Math.pow(1.15, farmCount));
}
function getFactoryCost() {
	return Math.floor(FACTORY_BASE_COST * Math.pow(1.18, factoryCount));
}
function getFarmIncome() {
	return farmCount * FARM_BASE_INCOME * farmLevel;
}
function getFactoryIncome() {
	return factoryCount * FACTORY_BASE_INCOME * factoryLevel;
}
function getFarmUpgradeCost() {
	return Math.floor(FARM_UPGRADE_COST * Math.pow(FARM_UPGRADE_MULT, farmLevel - 1));
}
function getFactoryUpgradeCost() {
	return Math.floor(FACTORY_UPGRADE_COST * Math.pow(FACTORY_UPGRADE_MULT, factoryLevel - 1));
}
function saveState() {
	storage.money = money;
	storage.farmCount = farmCount;
	storage.factoryCount = factoryCount;
	storage.farmLevel = farmLevel;
	storage.factoryLevel = factoryLevel;
	if (money > highScore) {
		highScore = money;
		storage.highScore = highScore;
	}
}
// --- UI Update ---
function updateUI() {
	moneyTxt.setText("Money: $" + formatMoney(money));
	highScoreTxt.setText("High Score: $" + formatMoney(highScore));
	farmCountTxt.setText("Farms: " + farmCount + "\nIncome: $" + formatMoney(getFarmIncome()) + "/s");
	farmBuyTxt.setText("Buy Farm\n$" + formatMoney(getFarmCost()));
	farmUpgradeTxt.setText("Upgrade Farm\nLvl " + farmLevel + " ($" + formatMoney(getFarmUpgradeCost()) + ")");
	factoryCountTxt.setText("Factories: " + factoryCount + "\nIncome: $" + formatMoney(getFactoryIncome()) + "/s");
	factoryBuyTxt.setText("Buy Factory\n$" + formatMoney(getFactoryCost()));
	factoryUpgradeTxt.setText("Upgrade Factory\nLvl " + factoryLevel + " ($" + formatMoney(getFactoryUpgradeCost()) + ")");
}
// --- Money Button Tap ---
moneyBtn.down = function (x, y, obj) {
	var add = 1 + farmLevel + factoryLevel;
	money += add;
	if (money > highScore) {
		highScore = money;
		storage.highScore = highScore;
	}
	moneyBtn.tapAnim();
	updateUI();
	saveState();
};
// --- Farm Buy ---
farmBuyBtn.down = function (x, y, obj) {
	var cost = getFarmCost();
	if (money >= cost) {
		money -= cost;
		farmCount += 1;
		updateUI();
		saveState();
		// Animate farm icon
		tween(farmIcon, {
			scaleX: 1.2,
			scaleY: 1.2
		}, {
			duration: 100,
			onFinish: function onFinish() {
				tween(farmIcon, {
					scaleX: 1,
					scaleY: 1
				}, {
					duration: 120
				});
			}
		});
	}
};
// --- Farm Upgrade ---
farmUpgradeBtn.down = function (x, y, obj) {
	var cost = getFarmUpgradeCost();
	if (money >= cost) {
		money -= cost;
		farmLevel += 1;
		updateUI();
		saveState();
		// Animate farm icon
		tween(farmIcon, {
			tint: 0xA5D6A7
		}, {
			duration: 200,
			onFinish: function onFinish() {
				tween(farmIcon, {
					tint: 0x4CAF50
				}, {
					duration: 200
				});
			}
		});
	}
};
// --- Factory Buy ---
factoryBuyBtn.down = function (x, y, obj) {
	var cost = getFactoryCost();
	if (money >= cost) {
		money -= cost;
		factoryCount += 1;
		updateUI();
		saveState();
		// Animate factory icon
		tween(factoryIcon, {
			scaleX: 1.2,
			scaleY: 1.2
		}, {
			duration: 100,
			onFinish: function onFinish() {
				tween(factoryIcon, {
					scaleX: 1,
					scaleY: 1
				}, {
					duration: 120
				});
			}
		});
	}
};
// --- Factory Upgrade ---
factoryUpgradeBtn.down = function (x, y, obj) {
	var cost = getFactoryUpgradeCost();
	if (money >= cost) {
		money -= cost;
		factoryLevel += 1;
		updateUI();
		saveState();
		// Animate factory icon
		tween(factoryIcon, {
			tint: 0x90CAF9
		}, {
			duration: 200,
			onFinish: function onFinish() {
				tween(factoryIcon, {
					tint: 0x2196F3
				}, {
					duration: 200
				});
			}
		});
	}
};
// --- Passive Income Timer ---
var incomeTimer = LK.setInterval(function () {
	var farmIncome = getFarmIncome() / 10; // 10x per second
	var factoryIncome = getFactoryIncome() / 10;
	var total = farmIncome + factoryIncome;
	if (total > 0) {
		money += total;
		if (money > highScore) {
			highScore = money;
			storage.highScore = highScore;
		}
		updateUI();
		saveState();
	}
}, 100);
// --- Save every 5 seconds for redundancy ---
var saveTimer = LK.setInterval(function () {
	saveState();
}, 5000);
// --- Initial UI Update ---
updateUI(); /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
	money: 0,
	farmCount: 0,
	factoryCount: 0,
	farmLevel: 1,
	factoryLevel: 1,
	highScore: 0
});
/**** 
* Classes
****/ 
// Money Button (Tap to earn)
var MoneyBtn = Container.expand(function () {
	var self = Container.call(this);
	var btn = self.attachAsset('moneyBtn', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Animate on tap
	self.tapAnim = function () {
		tween(self, {
			scaleX: 1.15,
			scaleY: 1.15
		}, {
			duration: 80,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				tween(self, {
					scaleX: 1,
					scaleY: 1
				}, {
					duration: 120,
					easing: tween.easeIn
				});
			}
		});
	};
	return self;
});
// Upgrade Button (for farms/factories)
var UpgradeBtn = Container.expand(function () {
	var self = Container.call(this);
	var btn = self.attachAsset('upgradeBtn', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x222222
});
/**** 
* Game Code
****/ 
// --- Persistent State ---
// Money icon (main tap button)
// Money Farm icon
// Money Factory icon
// Upgrade button
var money = storage.money || 0;
var farmCount = storage.farmCount || 0;
var factoryCount = storage.factoryCount || 0;
var farmLevel = storage.farmLevel || 1;
var factoryLevel = storage.factoryLevel || 1;
var highScore = storage.highScore || 0;
// --- Constants ---
var FARM_BASE_COST = 50;
var FACTORY_BASE_COST = 500;
var FARM_BASE_INCOME = 2;
var FACTORY_BASE_INCOME = 20;
var FARM_UPGRADE_COST = 100;
var FACTORY_UPGRADE_COST = 1000;
var FARM_UPGRADE_MULT = 1.5;
var FACTORY_UPGRADE_MULT = 1.5;
// --- UI Elements ---
var moneyBtn = new MoneyBtn();
moneyBtn.x = 2048 / 2;
moneyBtn.y = 1100;
game.addChild(moneyBtn);
var moneyTxt = new Text2('', {
	size: 180,
	fill: "#fff"
});
moneyTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(moneyTxt);
var highScoreTxt = new Text2('', {
	size: 80,
	fill: 0xFFD700
});
highScoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(highScoreTxt);
highScoreTxt.y = 180;
// --- Farm Section ---
var farmIcon = LK.getAsset('farmIcon', {
	anchorX: 0.5,
	anchorY: 0.5
});
farmIcon.x = 600;
farmIcon.y = 1800;
game.addChild(farmIcon);
var farmCountTxt = new Text2('', {
	size: 100,
	fill: "#fff"
});
farmCountTxt.anchor.set(0.5, 0.5);
farmCountTxt.x = farmIcon.x;
farmCountTxt.y = farmIcon.y + 160;
game.addChild(farmCountTxt);
var farmBuyBtn = new UpgradeBtn();
farmBuyBtn.x = farmIcon.x;
farmBuyBtn.y = farmIcon.y + 380;
game.addChild(farmBuyBtn);
var farmBuyTxt = new Text2('', {
	size: 70,
	fill: "#fff"
});
farmBuyTxt.anchor.set(0.5, 0.5);
farmBuyTxt.x = farmBuyBtn.x;
farmBuyTxt.y = farmBuyBtn.y;
game.addChild(farmBuyTxt);
var farmUpgradeBtn = new UpgradeBtn();
farmUpgradeBtn.x = farmIcon.x;
farmUpgradeBtn.y = farmBuyBtn.y + 160;
game.addChild(farmUpgradeBtn);
var farmUpgradeTxt = new Text2('', {
	size: 60,
	fill: "#fff"
});
farmUpgradeTxt.anchor.set(0.5, 0.5);
farmUpgradeTxt.x = farmUpgradeBtn.x;
farmUpgradeTxt.y = farmUpgradeBtn.y;
game.addChild(farmUpgradeTxt);
// --- Factory Section ---
var factoryIcon = LK.getAsset('factoryIcon', {
	anchorX: 0.5,
	anchorY: 0.5
});
factoryIcon.x = 1448;
factoryIcon.y = 1800;
game.addChild(factoryIcon);
var factoryCountTxt = new Text2('', {
	size: 100,
	fill: "#fff"
});
factoryCountTxt.anchor.set(0.5, 0.5);
factoryCountTxt.x = factoryIcon.x;
factoryCountTxt.y = factoryIcon.y + 160;
game.addChild(factoryCountTxt);
var factoryBuyBtn = new UpgradeBtn();
factoryBuyBtn.x = factoryIcon.x;
factoryBuyBtn.y = factoryIcon.y + 380;
game.addChild(factoryBuyBtn);
var factoryBuyTxt = new Text2('', {
	size: 70,
	fill: "#fff"
});
factoryBuyTxt.anchor.set(0.5, 0.5);
factoryBuyTxt.x = factoryBuyBtn.x;
factoryBuyTxt.y = factoryBuyBtn.y;
game.addChild(factoryBuyTxt);
var factoryUpgradeBtn = new UpgradeBtn();
factoryUpgradeBtn.x = factoryIcon.x;
factoryUpgradeBtn.y = factoryBuyBtn.y + 160;
game.addChild(factoryUpgradeBtn);
var factoryUpgradeTxt = new Text2('', {
	size: 60,
	fill: "#fff"
});
factoryUpgradeTxt.anchor.set(0.5, 0.5);
factoryUpgradeTxt.x = factoryUpgradeBtn.x;
factoryUpgradeTxt.y = factoryUpgradeBtn.y;
game.addChild(factoryUpgradeTxt);
// --- Helper Functions ---
function formatMoney(val) {
	if (val >= 1e9) return (val / 1e9).toFixed(2) + "B";
	if (val >= 1e6) return (val / 1e6).toFixed(2) + "M";
	if (val >= 1e3) return (val / 1e3).toFixed(2) + "K";
	return Math.floor(val) + "";
}
function getFarmCost() {
	return Math.floor(FARM_BASE_COST * Math.pow(1.15, farmCount));
}
function getFactoryCost() {
	return Math.floor(FACTORY_BASE_COST * Math.pow(1.18, factoryCount));
}
function getFarmIncome() {
	return farmCount * FARM_BASE_INCOME * farmLevel;
}
function getFactoryIncome() {
	return factoryCount * FACTORY_BASE_INCOME * factoryLevel;
}
function getFarmUpgradeCost() {
	return Math.floor(FARM_UPGRADE_COST * Math.pow(FARM_UPGRADE_MULT, farmLevel - 1));
}
function getFactoryUpgradeCost() {
	return Math.floor(FACTORY_UPGRADE_COST * Math.pow(FACTORY_UPGRADE_MULT, factoryLevel - 1));
}
function saveState() {
	storage.money = money;
	storage.farmCount = farmCount;
	storage.factoryCount = factoryCount;
	storage.farmLevel = farmLevel;
	storage.factoryLevel = factoryLevel;
	if (money > highScore) {
		highScore = money;
		storage.highScore = highScore;
	}
}
// --- UI Update ---
function updateUI() {
	moneyTxt.setText("Money: $" + formatMoney(money));
	highScoreTxt.setText("High Score: $" + formatMoney(highScore));
	farmCountTxt.setText("Farms: " + farmCount + "\nIncome: $" + formatMoney(getFarmIncome()) + "/s");
	farmBuyTxt.setText("Buy Farm\n$" + formatMoney(getFarmCost()));
	farmUpgradeTxt.setText("Upgrade Farm\nLvl " + farmLevel + " ($" + formatMoney(getFarmUpgradeCost()) + ")");
	factoryCountTxt.setText("Factories: " + factoryCount + "\nIncome: $" + formatMoney(getFactoryIncome()) + "/s");
	factoryBuyTxt.setText("Buy Factory\n$" + formatMoney(getFactoryCost()));
	factoryUpgradeTxt.setText("Upgrade Factory\nLvl " + factoryLevel + " ($" + formatMoney(getFactoryUpgradeCost()) + ")");
}
// --- Money Button Tap ---
moneyBtn.down = function (x, y, obj) {
	var add = 1 + farmLevel + factoryLevel;
	money += add;
	if (money > highScore) {
		highScore = money;
		storage.highScore = highScore;
	}
	moneyBtn.tapAnim();
	updateUI();
	saveState();
};
// --- Farm Buy ---
farmBuyBtn.down = function (x, y, obj) {
	var cost = getFarmCost();
	if (money >= cost) {
		money -= cost;
		farmCount += 1;
		updateUI();
		saveState();
		// Animate farm icon
		tween(farmIcon, {
			scaleX: 1.2,
			scaleY: 1.2
		}, {
			duration: 100,
			onFinish: function onFinish() {
				tween(farmIcon, {
					scaleX: 1,
					scaleY: 1
				}, {
					duration: 120
				});
			}
		});
	}
};
// --- Farm Upgrade ---
farmUpgradeBtn.down = function (x, y, obj) {
	var cost = getFarmUpgradeCost();
	if (money >= cost) {
		money -= cost;
		farmLevel += 1;
		updateUI();
		saveState();
		// Animate farm icon
		tween(farmIcon, {
			tint: 0xA5D6A7
		}, {
			duration: 200,
			onFinish: function onFinish() {
				tween(farmIcon, {
					tint: 0x4CAF50
				}, {
					duration: 200
				});
			}
		});
	}
};
// --- Factory Buy ---
factoryBuyBtn.down = function (x, y, obj) {
	var cost = getFactoryCost();
	if (money >= cost) {
		money -= cost;
		factoryCount += 1;
		updateUI();
		saveState();
		// Animate factory icon
		tween(factoryIcon, {
			scaleX: 1.2,
			scaleY: 1.2
		}, {
			duration: 100,
			onFinish: function onFinish() {
				tween(factoryIcon, {
					scaleX: 1,
					scaleY: 1
				}, {
					duration: 120
				});
			}
		});
	}
};
// --- Factory Upgrade ---
factoryUpgradeBtn.down = function (x, y, obj) {
	var cost = getFactoryUpgradeCost();
	if (money >= cost) {
		money -= cost;
		factoryLevel += 1;
		updateUI();
		saveState();
		// Animate factory icon
		tween(factoryIcon, {
			tint: 0x90CAF9
		}, {
			duration: 200,
			onFinish: function onFinish() {
				tween(factoryIcon, {
					tint: 0x2196F3
				}, {
					duration: 200
				});
			}
		});
	}
};
// --- Passive Income Timer ---
var incomeTimer = LK.setInterval(function () {
	var farmIncome = getFarmIncome() / 10; // 10x per second
	var factoryIncome = getFactoryIncome() / 10;
	var total = farmIncome + factoryIncome;
	if (total > 0) {
		money += total;
		if (money > highScore) {
			highScore = money;
			storage.highScore = highScore;
		}
		updateUI();
		saveState();
	}
}, 100);
// --- Save every 5 seconds for redundancy ---
var saveTimer = LK.setInterval(function () {
	saveState();
}, 5000);
// --- Initial UI Update ---
updateUI();