/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var BitcoinParticle = Container.expand(function () {
	var self = Container.call(this);
	var particle = self.attachAsset('bitcoinIcon', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.startY = 0;
	self.targetY = 0;
	self.animate = function (startY, targetY) {
		self.y = startY;
		self.startY = startY;
		self.targetY = targetY;
		tween(self, {
			y: targetY,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				self.destroy();
			}
		});
	};
	return self;
});
var MiningRig = Container.expand(function (rigType) {
	var self = Container.call(this);
	// Rig properties based on type
	var rigStats = {
		basic: {
			hashRate: 0.01,
			powerCost: 0.5,
			price: 2500
		},
		advanced: {
			hashRate: 0.4,
			powerCost: 1.5,
			price: 1500
		},
		professional: {
			hashRate: 2.25,
			powerCost: 5.0,
			price: 7500
		}
	};
	self.rigType = rigType || 'basic';
	self.stats = rigStats[self.rigType];
	self.lastMineTime = Date.now();
	var rigGraphics = self.attachAsset('miningRig', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add visual indicator for rig type
	if (self.rigType === 'advanced') {
		rigGraphics.tint = 0x8e44ad;
	} else if (self.rigType === 'professional') {
		rigGraphics.tint = 0xe67e22;
	}
	// Mining animation
	self.animate = function () {
		tween(rigGraphics, {
			scaleX: 1.1,
			scaleY: 1.1
		}, {
			duration: 500,
			easing: tween.easeInOut,
			onFinish: function onFinish() {
				tween(rigGraphics, {
					scaleX: 1.0,
					scaleY: 1.0
				}, {
					duration: 500,
					easing: tween.easeInOut
				});
			}
		});
	};
	self.update = function () {
		var currentTime = Date.now();
		if (currentTime - self.lastMineTime >= 10000) {
			// Mine every 10 seconds
			self.lastMineTime = currentTime;
			self.animate();
			// Generate bitcoin based on hash rate with prestige multiplier
			var prestigeMultiplier = Math.pow(1.2, prestigePoints);
			bitcoin += self.stats.hashRate * prestigeMultiplier;
			// Power usage is calculated globally, not per rig
			// Play mining sound occasionally
			if (Math.random() < 0.1 && settings.effectsEnabled) {
				LK.getSound('mining').play();
			}
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x1a1a1a
});
/**** 
* Game Code
****/ 
// Add background image
var backgroundImage = LK.getAsset('background', {
	anchorX: 0,
	anchorY: 0
});
backgroundImage.x = 0;
backgroundImage.y = 0;
game.addChild(backgroundImage);
// Game state variables
var bitcoin = storage.bitcoin || 0;
var cash = storage.cash || 1000;
var miningRigs = [];
var powerCapacity = storage.powerCapacity || 10;
var coolingCapacity = storage.coolingCapacity || 10;
var powerUsage = 0;
var bitcoinPrice = 45000 + Math.random() * 10000; // Starting price between 45k-55k
var lastPriceUpdate = Date.now();
var prestigePoints = storage.prestigePoints || 0;
var showingPrestige = false;
// UI Elements
var bitcoinDisplay = new Text2('₿ 0.00000', {
	size: 50,
	fill: 0xF39C12
});
bitcoinDisplay.anchor.set(0, 0);
bitcoinDisplay.x = 150;
bitcoinDisplay.y = 50;
LK.gui.topLeft.addChild(bitcoinDisplay);
var cashDisplay = new Text2('$ 1,000', {
	size: 50,
	fill: 0x27AE60
});
cashDisplay.anchor.set(0, 0);
cashDisplay.x = 150;
cashDisplay.y = 120;
LK.gui.topLeft.addChild(cashDisplay);
var priceDisplay = new Text2('BTC: $45,000', {
	size: 40,
	fill: 0xFFFFFF
});
priceDisplay.anchor.set(1, 0);
LK.gui.topRight.addChild(priceDisplay);
var powerDisplay = new Text2('Power: 0/10', {
	size: 35,
	fill: 0xE74C3C
});
powerDisplay.anchor.set(0.5, 0);
powerDisplay.y = 50;
LK.gui.top.addChild(powerDisplay);
// Power meter visual
var powerMeterBg = LK.getAsset('powerMeter', {
	anchorX: 0.5,
	anchorY: 0.5
});
powerMeterBg.tint = 0x34495e;
powerMeterBg.x = 1024;
powerMeterBg.y = 150;
game.addChild(powerMeterBg);
var powerMeterFill = LK.getAsset('powerMeter', {
	anchorX: 0,
	anchorY: 0.5,
	scaleX: 0
});
powerMeterFill.x = powerMeterBg.x - powerMeterBg.width / 2;
powerMeterFill.y = powerMeterBg.y;
game.addChild(powerMeterFill);
// Upgrade buttons
var rigUpgradeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
rigUpgradeButton.x = 300;
rigUpgradeButton.y = 2600;
game.addChild(rigUpgradeButton);
var rigUpgradeText = new Text2('Buy Mining Rig - $100', {
	size: 50,
	fill: 0xFFFFFF
});
rigUpgradeText.anchor.set(0.5, 0.5);
rigUpgradeText.x = rigUpgradeButton.x;
rigUpgradeText.y = rigUpgradeButton.y;
game.addChild(rigUpgradeText);
var powerUpgradeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
powerUpgradeButton.x = 850;
powerUpgradeButton.y = 2600;
game.addChild(powerUpgradeButton);
var powerUpgradeText = new Text2('Upgrade Power - $200', {
	size: 50,
	fill: 0xFFFFFF
});
powerUpgradeText.anchor.set(0.5, 0.5);
powerUpgradeText.x = powerUpgradeButton.x;
powerUpgradeText.y = powerUpgradeButton.y;
game.addChild(powerUpgradeText);
var sellButton = LK.getAsset('sellButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
sellButton.x = 1300;
sellButton.y = 2600;
game.addChild(sellButton);
var sellButtonText = new Text2(' SELL ', {
	size: 50,
	fill: 0xFFFFFF
});
sellButtonText.anchor.set(0.5, 0.5);
sellButtonText.x = sellButton.x;
sellButtonText.y = sellButton.y;
game.addChild(sellButtonText);
// Mining rig types and costs - only basic rigs available
var rigTypes = ['basic'];
var currentRigType = 0;
// Starting mining rigs
if (storage.rigCount === undefined) {
	var startingRig = new MiningRig('basic');
	startingRig.x = 400;
	startingRig.y = 400;
	game.addChild(startingRig);
	miningRigs.push(startingRig);
	storage.rigCount = 1;
	storage.rigTypes = ['basic'];
} else {
	// Restore saved rigs
	var savedRigTypes = storage.rigTypes || [];
	for (var i = 0; i < storage.rigCount; i++) {
		var rigType = savedRigTypes[i] || 'basic';
		var rig = new MiningRig(rigType);
		rig.x = 400 + i % 10 * 140;
		rig.y = 400 + Math.floor(i / 10) * 120;
		game.addChild(rig);
		miningRigs.push(rig);
	}
}
// Number formatting utility
function formatNumber(num) {
	if (num < 1000) {
		return num.toFixed(0);
	} else if (num < 1000000) {
		return (num / 1000).toFixed(1) + 'K';
	} else if (num < 1000000000) {
		return (num / 1000000).toFixed(1) + 'M';
	} else if (num < 1000000000000) {
		return (num / 1000000000).toFixed(1) + 'B';
	} else if (num < 1000000000000000) {
		return (num / 1000000000000).toFixed(1) + 'T';
	} else if (num < 1000000000000000000) {
		return (num / 1000000000000000).toFixed(1) + 'Qa';
	} else {
		return (num / 1000000000000000000).toFixed(1) + 'Qi';
	}
}
// Utility functions
function updateUI() {
	bitcoinDisplay.setText(texts[settings.language].bitcoin + ' ' + bitcoin.toFixed(5));
	cashDisplay.setText(texts[settings.language].cash + ' ' + formatNumber(cash));
	priceDisplay.setText(texts[settings.language].btcPrice + formatNumber(bitcoinPrice));
	powerDisplay.setText(texts[settings.language].power + powerUsage.toFixed(1) + '/' + powerCapacity);
	// Update power meter
	var powerRatio = Math.min(powerUsage / powerCapacity, 1);
	powerMeterFill.scaleX = powerRatio;
	if (powerRatio > 0.9) {
		powerMeterFill.tint = 0xe74c3c; // Red when near capacity
	} else if (powerRatio > 0.7) {
		powerMeterFill.tint = 0xf39c12; // Orange when high
	} else {
		powerMeterFill.tint = 0x27ae60; // Green when safe
	}
	// Update upgrade button costs - only basic rigs
	var rigType = 'basic';
	var baseCost = 2500;
	var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3));
	var rigName = 'Basic';
	rigUpgradeText.setText(texts[settings.language].buyRig + rigName + texts[settings.language].rig + formatNumber(rigCost));
	var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 1);
	powerUpgradeText.setText(texts[settings.language].upgradePower + formatNumber(powerCost));
}
function spawnBitcoinParticle() {
	if (Math.random() < 0.002) {
		// 0.2% chance per frame when mining
		var particle = new BitcoinParticle();
		particle.x = 400 + Math.random() * 800;
		particle.animate(300, 150);
		game.addChild(particle);
	}
}
// Function to calculate total power requirement
function calculateTotalPowerUsage() {
	var totalPower = 0;
	for (var i = 0; i < miningRigs.length; i++) {
		totalPower += miningRigs[i].stats.powerCost;
	}
	return totalPower;
}
// Settings state
var settings = storage.settings || {
	musicEnabled: true,
	effectsEnabled: true,
	language: 'en'
};
var showingSettings = false;
// Admin state
var adminMode = false;
var showingAdmin = false;
var unlimitedMoney = false;
// Language texts
var texts = {
	en: {
		bitcoin: '₿',
		cash: '$',
		btcPrice: 'BTC: $',
		power: 'Power: ',
		buyRig: 'Buy ',
		rig: ' Rig - $',
		upgradePower: 'Upgrade Power - $',
		sellBitcoin: 'Sell Bitcoin',
		settings: 'Settings',
		music: 'Music',
		effects: 'Effects',
		language: 'Language',
		reset: 'Reset Game',
		on: 'ON',
		off: 'OFF',
		english: 'English',
		turkish: 'Turkish',
		close: 'Close'
	},
	tr: {
		bitcoin: '₿',
		cash: '$',
		btcPrice: 'BTC: $',
		power: 'Güç: ',
		buyRig: 'Al ',
		rig: ' Cihaz - $',
		upgradePower: 'Güç Yükselt - $',
		sellBitcoin: 'Bitcoin Sat',
		settings: 'Ayarlar',
		music: 'Müzik',
		effects: 'Efektler',
		language: 'Dil',
		reset: 'Oyunu Sıfırla',
		on: 'AÇIK',
		off: 'KAPALI',
		english: 'İngilizce',
		turkish: 'Türkçe',
		close: 'Kapat'
	}
};
// Settings button
var settingsButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
settingsButton.interactive = true;
settingsButton.x = 1800;
settingsButton.y = 2600;
game.addChild(settingsButton);
var settingsButtonText = new Text2(texts[settings.language].settings, {
	size: 50,
	fill: 0xFFFFFF
});
settingsButtonText.anchor.set(0.5, 0.5);
settingsButtonText.x = settingsButton.x;
settingsButtonText.y = settingsButton.y;
game.addChild(settingsButtonText);
// Admin button (hidden by default)
var adminButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
adminButton.interactive = true;
adminButton.tint = 0xFF0000;
adminButton.x = 1224;
adminButton.y = 500;
adminButton.visible = adminMode;
game.addChild(adminButton);
var adminButtonText = new Text2('ADMIN', {
	size: 30,
	fill: 0xFFFFFF
});
adminButtonText.anchor.set(0.5, 0.5);
adminButtonText.x = adminButton.x;
adminButtonText.y = adminButton.y;
adminButtonText.visible = adminMode;
game.addChild(adminButtonText);
// Settings panel
var settingsPanel = new Container();
settingsPanel.visible = false;
var panelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 10
});
panelBg.tint = 0x2c3e50;
panelBg.x = 0;
panelBg.y = 0;
settingsPanel.x = 2048 / 2;
settingsPanel.y = 2732 / 2;
settingsPanel.addChild(panelBg);
// Music toggle
var musicToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
musicToggle.interactive = true;
musicToggle.x = 0;
musicToggle.y = -266;
settingsPanel.addChild(musicToggle);
var musicText = new Text2(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off), {
	size: 60,
	fill: 0xFFFFFF
});
musicText.anchor.set(0.5, 0.5);
musicText.x = musicToggle.x;
musicText.y = musicToggle.y;
settingsPanel.addChild(musicText);
// Effects toggle
var effectsToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
effectsToggle.interactive = true;
effectsToggle.x = 0;
effectsToggle.y = -116;
settingsPanel.addChild(effectsToggle);
var effectsText = new Text2(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off), {
	size: 60,
	fill: 0xFFFFFF
});
effectsText.anchor.set(0.5, 0.5);
effectsText.x = effectsToggle.x;
effectsText.y = effectsToggle.y;
settingsPanel.addChild(effectsText);
// Language toggle
var languageToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
languageToggle.interactive = true;
languageToggle.x = 0;
languageToggle.y = 34;
settingsPanel.addChild(languageToggle);
var languageText = new Text2(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish), {
	size: 60,
	fill: 0xFFFFFF
});
languageText.anchor.set(0.5, 0.5);
languageText.x = languageToggle.x;
languageText.y = languageToggle.y;
settingsPanel.addChild(languageText);
// Reset button
var resetButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
resetButton.interactive = true;
resetButton.tint = 0xe74c3c;
resetButton.x = 0;
resetButton.y = 184;
settingsPanel.addChild(resetButton);
var resetText = new Text2(texts[settings.language].reset, {
	size: 60,
	fill: 0xFFFFFF
});
resetText.anchor.set(0.5, 0.5);
resetText.x = resetButton.x;
resetText.y = resetButton.y;
settingsPanel.addChild(resetText);
// Reset button
var resetButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
resetButton.interactive = true;
resetButton.tint = 0xe74c3c;
resetButton.x = 0;
resetButton.y = 184;
settingsPanel.addChild(resetButton);
var resetText = new Text2(texts[settings.language].reset, {
	size: 60,
	fill: 0xFFFFFF
});
resetText.anchor.set(0.5, 0.5);
resetText.x = resetButton.x;
resetText.y = resetButton.y;
settingsPanel.addChild(resetText);
// Close button
var closeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.2,
	scaleY: 1.2
});
closeButton.interactive = true;
closeButton.x = 0;
closeButton.y = 484;
settingsPanel.addChild(closeButton);
var closeText = new Text2(texts[settings.language].close, {
	size: 60,
	fill: 0xFFFFFF
});
closeText.anchor.set(0.5, 0.5);
closeText.x = closeButton.x;
closeText.y = closeButton.y;
settingsPanel.addChild(closeText);
LK.gui.addChild(settingsPanel);
// Prestige panel
var prestigePanel = new Container();
prestigePanel.visible = false;
var prestigePanelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 8
});
prestigePanelBg.tint = 0x8e44ad;
prestigePanelBg.x = 0;
prestigePanelBg.y = 0;
prestigePanel.x = 1024;
prestigePanel.y = 1366;
prestigePanel.addChild(prestigePanelBg);
// Prestige title
var prestigeTitle = new Text2('PRESTIGE AVAILABLE!', {
	size: 80,
	fill: 0xFFFFFF
});
prestigeTitle.anchor.set(0.5, 0.5);
prestigeTitle.x = 0;
prestigeTitle.y = -250;
prestigePanel.addChild(prestigeTitle);
// Prestige info
var prestigeInfo = new Text2('You have reached 100 rigs!\nPrestige to reset progress\nand gain permanent bonuses', {
	size: 50,
	fill: 0xFFFFFF
});
prestigeInfo.anchor.set(0.5, 0.5);
prestigeInfo.x = 0;
prestigeInfo.y = -100;
prestigePanel.addChild(prestigeInfo);
// Current prestige points display
var currentPrestigeText = new Text2('Current Prestige Points: ' + prestigePoints, {
	size: 45,
	fill: 0xF39C12
});
currentPrestigeText.anchor.set(0.5, 0.5);
currentPrestigeText.x = 0;
currentPrestigeText.y = 0;
prestigePanel.addChild(currentPrestigeText);
// Prestige multiplier display
var multiplierText = new Text2('Current Multiplier: ' + Math.pow(1.2, prestigePoints).toFixed(2) + 'x', {
	size: 45,
	fill: 0x27AE60
});
multiplierText.anchor.set(0.5, 0.5);
multiplierText.x = 0;
multiplierText.y = 70;
prestigePanel.addChild(multiplierText);
// Prestige button
var prestigeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.5
});
prestigeButton.interactive = true;
prestigeButton.tint = 0x8e44ad;
prestigeButton.x = 0;
prestigeButton.y = 180;
prestigePanel.addChild(prestigeButton);
var prestigeButtonText = new Text2('PRESTIGE (+1 Point)', {
	size: 55,
	fill: 0xFFFFFF
});
prestigeButtonText.anchor.set(0.5, 0.5);
prestigeButtonText.x = prestigeButton.x;
prestigeButtonText.y = prestigeButton.y;
prestigePanel.addChild(prestigeButtonText);
LK.gui.addChild(prestigePanel);
// Admin panel
var adminPanel = new Container();
adminPanel.visible = false;
var adminPanelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 6
});
adminPanelBg.tint = 0x2c3e50;
adminPanelBg.x = 0;
adminPanelBg.y = 0;
adminPanel.x = 1024;
adminPanel.y = 1366;
adminPanel.addChild(adminPanelBg);
// Admin title
var adminTitle = new Text2('ADMIN PANEL', {
	size: 80,
	fill: 0xFF0000
});
adminTitle.anchor.set(0.5, 0.5);
adminTitle.x = 0;
adminTitle.y = -200;
adminPanel.addChild(adminTitle);
// Unlimited money toggle
var unlimitedMoneyToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
unlimitedMoneyToggle.interactive = true;
unlimitedMoneyToggle.x = 0;
unlimitedMoneyToggle.y = -50;
adminPanel.addChild(unlimitedMoneyToggle);
var unlimitedMoneyText = new Text2('Unlimited Money: ' + (unlimitedMoney ? 'ON' : 'OFF'), {
	size: 50,
	fill: 0xFFFFFF
});
unlimitedMoneyText.anchor.set(0.5, 0.5);
unlimitedMoneyText.x = unlimitedMoneyToggle.x;
unlimitedMoneyText.y = unlimitedMoneyToggle.y;
adminPanel.addChild(unlimitedMoneyText);
// Admin close button
var adminCloseButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.2,
	scaleY: 1.2
});
adminCloseButton.interactive = true;
adminCloseButton.x = 0;
adminCloseButton.y = 100;
adminPanel.addChild(adminCloseButton);
var adminCloseText = new Text2('Close', {
	size: 60,
	fill: 0xFFFFFF
});
adminCloseText.anchor.set(0.5, 0.5);
adminCloseText.x = adminCloseButton.x;
adminCloseText.y = adminCloseButton.y;
adminPanel.addChild(adminCloseText);
LK.gui.addChild(adminPanel);
// Function to update language texts
function updateLanguageTexts() {
	settingsButtonText.setText(texts[settings.language].settings);
	musicText.setText(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off));
	effectsText.setText(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off));
	languageText.setText(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish));
	resetText.setText(texts[settings.language].reset);
	closeText.setText(texts[settings.language].close);
	sellButtonText.setText(texts[settings.language].sellBitcoin);
}
// Settings button handler
settingsButton.down = function (x, y, obj) {
	showingSettings = !showingSettings;
	settingsPanel.visible = showingSettings;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(settingsButton, 0x3498db, 300);
	}
};
// Music toggle handler
musicToggle.down = function (x, y, obj) {
	settings.musicEnabled = !settings.musicEnabled;
	storage.settings = settings;
	updateLanguageTexts();
	// Control music playback based on setting
	if (settings.musicEnabled) {
		LK.playMusic('Music');
	} else {
		LK.stopMusic();
	}
	if (settings.effectsEnabled) {
		LK.effects.flashObject(musicToggle, 0x27ae60, 300);
	}
};
// Effects toggle handler
effectsToggle.down = function (x, y, obj) {
	settings.effectsEnabled = !settings.effectsEnabled;
	storage.settings = settings;
	updateLanguageTexts();
	LK.effects.flashObject(effectsToggle, 0x27ae60, 300);
};
// Language toggle handler
languageToggle.down = function (x, y, obj) {
	settings.language = settings.language === 'en' ? 'tr' : 'en';
	storage.settings = settings;
	updateLanguageTexts();
	if (settings.effectsEnabled) {
		LK.effects.flashObject(languageToggle, 0x27ae60, 300);
	}
};
// Reset button handler
resetButton.down = function (x, y, obj) {
	// Clear all storage
	storage.bitcoin = 0;
	storage.cash = 1000;
	storage.powerCapacity = 10;
	delete storage.rigCount;
	delete storage.rigTypes;
	storage.settings = {
		musicEnabled: true,
		effectsEnabled: true,
		language: 'en'
	};
	if (settings.effectsEnabled) {
		LK.effects.flashObject(resetButton, 0xe74c3c, 500);
	}
	// Show game over to restart
	LK.setTimeout(function () {
		LK.showGameOver();
	}, 600);
};
// Close button handler
closeButton.down = function (x, y, obj) {
	showingSettings = false;
	settingsPanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(closeButton, 0x95a5a6, 300);
	}
};
// Prestige button handler
prestigeButton.down = function (x, y, obj) {
	prestigePoints += 1;
	storage.prestigePoints = prestigePoints;
	// Reset game state
	bitcoin = 0;
	cash = 1000;
	powerCapacity = 10;
	// Clear all rigs
	for (var i = 0; i < miningRigs.length; i++) {
		miningRigs[i].destroy();
	}
	miningRigs = [];
	// Reset storage
	storage.bitcoin = 0;
	storage.cash = 1000;
	storage.powerCapacity = 10;
	storage.rigCount = 0;
	storage.rigTypes = [];
	// Hide prestige panel
	showingPrestige = false;
	prestigePanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(prestigeButton, 0x8e44ad, 500);
	}
	// Create starting rig
	var startingRig = new MiningRig('basic');
	startingRig.x = 400;
	startingRig.y = 400;
	game.addChild(startingRig);
	miningRigs.push(startingRig);
	storage.rigCount = 1;
	storage.rigTypes = ['basic'];
};
// Admin button handler
adminButton.down = function (x, y, obj) {
	showingAdmin = !showingAdmin;
	adminPanel.visible = showingAdmin;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(adminButton, 0xFF0000, 300);
	}
};
// Unlimited money toggle handler
unlimitedMoneyToggle.down = function (x, y, obj) {
	unlimitedMoney = !unlimitedMoney;
	unlimitedMoneyText.setText('Unlimited Money: ' + (unlimitedMoney ? 'ON' : 'OFF'));
	if (settings.effectsEnabled) {
		LK.effects.flashObject(unlimitedMoneyToggle, 0x27ae60, 300);
	}
};
// Admin close button handler
adminCloseButton.down = function (x, y, obj) {
	showingAdmin = false;
	adminPanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(adminCloseButton, 0x95a5a6, 300);
	}
};
// Admin mode activation (secret tap sequence on bitcoin display)
var adminTapCount = 0;
var lastAdminTap = 0;
bitcoinDisplay.interactive = true;
bitcoinDisplay.down = function (x, y, obj) {
	var currentTime = Date.now();
	if (currentTime - lastAdminTap < 1000) {
		adminTapCount++;
		if (adminTapCount >= 5) {
			adminMode = true;
			adminButton.visible = true;
			adminButtonText.visible = true;
			adminTapCount = 0;
			if (settings.effectsEnabled) {
				LK.effects.flashObject(bitcoinDisplay, 0xFF0000, 500);
			}
		}
	} else {
		adminTapCount = 1;
	}
	lastAdminTap = currentTime;
};
// Event handlers
rigUpgradeButton.down = function (x, y, obj) {
	var rigType = 'basic';
	var baseCost = 2500;
	var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3));
	var powerRequired = 0.5;
	var currentTotalPower = calculateTotalPowerUsage();
	if ((cash >= rigCost || unlimitedMoney) && currentTotalPower + powerRequired <= powerCapacity && miningRigs.length < 100) {
		if (!unlimitedMoney) {
			cash -= rigCost;
		} else {
			cash = Math.max(cash, 999999999); // Ensure cash stays high in unlimited mode
		}
		var newRig = new MiningRig(rigType);
		newRig.x = 400 + miningRigs.length % 10 * 140;
		newRig.y = 400 + Math.floor(miningRigs.length / 10) * 120;
		game.addChild(newRig);
		miningRigs.push(newRig);
		// Save rig types
		if (!storage.rigTypes) {
			storage.rigTypes = [];
		}
		storage.rigTypes.push(rigType);
		storage.rigCount = miningRigs.length;
		if (settings.effectsEnabled) {
			LK.getSound('purchase').play();
			// Flash effect
			LK.effects.flashObject(rigUpgradeButton, 0x27ae60, 300);
		}
	}
};
powerUpgradeButton.down = function (x, y, obj) {
	var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 1);
	if ((cash >= powerCost || unlimitedMoney) && powerCapacity < 50) {
		if (!unlimitedMoney) {
			cash -= powerCost;
		} else {
			cash = Math.max(cash, 999999999); // Ensure cash stays high in unlimited mode
		}
		powerCapacity += 1;
		storage.powerCapacity = powerCapacity;
		if (settings.effectsEnabled) {
			LK.getSound('purchase').play();
			// Flash effect
			LK.effects.flashObject(powerUpgradeButton, 0x27ae60, 300);
		}
	}
};
sellButton.down = function (x, y, obj) {
	if (bitcoin >= 0.01) {
		var sellAmount = bitcoin;
		var earnings = sellAmount * bitcoinPrice;
		cash += earnings;
		bitcoin = 0;
		if (settings.effectsEnabled) {
			LK.getSound('coin').play();
			// Flash effect
			LK.effects.flashObject(sellButton, 0xf39c12, 500);
		}
		// Show earnings popup
		var earningsText = new Text2('+$' + formatNumber(earnings), {
			size: 60,
			fill: 0xF39C12
		});
		earningsText.anchor.set(0.5, 0.5);
		earningsText.x = sellButton.x;
		earningsText.y = sellButton.y - 100;
		game.addChild(earningsText);
		tween(earningsText, {
			y: earningsText.y - 100,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				earningsText.destroy();
			}
		});
	}
};
// Start playing background music
if (settings.musicEnabled) {
	LK.playMusic('Music');
}
game.update = function () {
	powerUsage = calculateTotalPowerUsage(); // Calculate total power usage from all rigs
	// Update bitcoin price periodically
	if (Date.now() - lastPriceUpdate > 5000) {
		// Every 5 seconds
		lastPriceUpdate = Date.now();
		var priceChange = (Math.random() - 0.5) * 0.1; // ±5% change
		bitcoinPrice = Math.max(10000, bitcoinPrice * (1 + priceChange));
	}
	// Spawn bitcoin particles when mining
	if (miningRigs.length > 0) {
		spawnBitcoinParticle();
	}
	// Check for prestige availability
	if (miningRigs.length >= 100 && !showingPrestige) {
		showingPrestige = true;
		prestigePanel.visible = true;
		// Update prestige panel text
		currentPrestigeText.setText('Current Prestige Points: ' + prestigePoints);
		multiplierText.setText('Current Multiplier: ' + Math.pow(1.2, prestigePoints).toFixed(2) + 'x');
	}
	updateUI();
	// Save progress periodically
	if (LK.ticks % 300 === 0) {
		// Every 5 seconds
		storage.bitcoin = bitcoin;
		storage.cash = cash;
		storage.powerCapacity = powerCapacity;
		storage.rigCount = miningRigs.length;
		// Save rig types
		var rigTypesToSave = [];
		for (var i = 0; i < miningRigs.length; i++) {
			rigTypesToSave.push(miningRigs[i].rigType);
		}
		storage.rigTypes = rigTypesToSave;
	}
}; /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var BitcoinParticle = Container.expand(function () {
	var self = Container.call(this);
	var particle = self.attachAsset('bitcoinIcon', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.startY = 0;
	self.targetY = 0;
	self.animate = function (startY, targetY) {
		self.y = startY;
		self.startY = startY;
		self.targetY = targetY;
		tween(self, {
			y: targetY,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				self.destroy();
			}
		});
	};
	return self;
});
var MiningRig = Container.expand(function (rigType) {
	var self = Container.call(this);
	// Rig properties based on type
	var rigStats = {
		basic: {
			hashRate: 0.01,
			powerCost: 0.5,
			price: 2500
		},
		advanced: {
			hashRate: 0.4,
			powerCost: 1.5,
			price: 1500
		},
		professional: {
			hashRate: 2.25,
			powerCost: 5.0,
			price: 7500
		}
	};
	self.rigType = rigType || 'basic';
	self.stats = rigStats[self.rigType];
	self.lastMineTime = Date.now();
	var rigGraphics = self.attachAsset('miningRig', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add visual indicator for rig type
	if (self.rigType === 'advanced') {
		rigGraphics.tint = 0x8e44ad;
	} else if (self.rigType === 'professional') {
		rigGraphics.tint = 0xe67e22;
	}
	// Mining animation
	self.animate = function () {
		tween(rigGraphics, {
			scaleX: 1.1,
			scaleY: 1.1
		}, {
			duration: 500,
			easing: tween.easeInOut,
			onFinish: function onFinish() {
				tween(rigGraphics, {
					scaleX: 1.0,
					scaleY: 1.0
				}, {
					duration: 500,
					easing: tween.easeInOut
				});
			}
		});
	};
	self.update = function () {
		var currentTime = Date.now();
		if (currentTime - self.lastMineTime >= 10000) {
			// Mine every 10 seconds
			self.lastMineTime = currentTime;
			self.animate();
			// Generate bitcoin based on hash rate with prestige multiplier
			var prestigeMultiplier = Math.pow(1.2, prestigePoints);
			bitcoin += self.stats.hashRate * prestigeMultiplier;
			// Power usage is calculated globally, not per rig
			// Play mining sound occasionally
			if (Math.random() < 0.1 && settings.effectsEnabled) {
				LK.getSound('mining').play();
			}
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x1a1a1a
});
/**** 
* Game Code
****/ 
// Add background image
var backgroundImage = LK.getAsset('background', {
	anchorX: 0,
	anchorY: 0
});
backgroundImage.x = 0;
backgroundImage.y = 0;
game.addChild(backgroundImage);
// Game state variables
var bitcoin = storage.bitcoin || 0;
var cash = storage.cash || 1000;
var miningRigs = [];
var powerCapacity = storage.powerCapacity || 10;
var coolingCapacity = storage.coolingCapacity || 10;
var powerUsage = 0;
var bitcoinPrice = 45000 + Math.random() * 10000; // Starting price between 45k-55k
var lastPriceUpdate = Date.now();
var prestigePoints = storage.prestigePoints || 0;
var showingPrestige = false;
// UI Elements
var bitcoinDisplay = new Text2('₿ 0.00000', {
	size: 50,
	fill: 0xF39C12
});
bitcoinDisplay.anchor.set(0, 0);
bitcoinDisplay.x = 150;
bitcoinDisplay.y = 50;
LK.gui.topLeft.addChild(bitcoinDisplay);
var cashDisplay = new Text2('$ 1,000', {
	size: 50,
	fill: 0x27AE60
});
cashDisplay.anchor.set(0, 0);
cashDisplay.x = 150;
cashDisplay.y = 120;
LK.gui.topLeft.addChild(cashDisplay);
var priceDisplay = new Text2('BTC: $45,000', {
	size: 40,
	fill: 0xFFFFFF
});
priceDisplay.anchor.set(1, 0);
LK.gui.topRight.addChild(priceDisplay);
var powerDisplay = new Text2('Power: 0/10', {
	size: 35,
	fill: 0xE74C3C
});
powerDisplay.anchor.set(0.5, 0);
powerDisplay.y = 50;
LK.gui.top.addChild(powerDisplay);
// Power meter visual
var powerMeterBg = LK.getAsset('powerMeter', {
	anchorX: 0.5,
	anchorY: 0.5
});
powerMeterBg.tint = 0x34495e;
powerMeterBg.x = 1024;
powerMeterBg.y = 150;
game.addChild(powerMeterBg);
var powerMeterFill = LK.getAsset('powerMeter', {
	anchorX: 0,
	anchorY: 0.5,
	scaleX: 0
});
powerMeterFill.x = powerMeterBg.x - powerMeterBg.width / 2;
powerMeterFill.y = powerMeterBg.y;
game.addChild(powerMeterFill);
// Upgrade buttons
var rigUpgradeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
rigUpgradeButton.x = 300;
rigUpgradeButton.y = 2600;
game.addChild(rigUpgradeButton);
var rigUpgradeText = new Text2('Buy Mining Rig - $100', {
	size: 50,
	fill: 0xFFFFFF
});
rigUpgradeText.anchor.set(0.5, 0.5);
rigUpgradeText.x = rigUpgradeButton.x;
rigUpgradeText.y = rigUpgradeButton.y;
game.addChild(rigUpgradeText);
var powerUpgradeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
powerUpgradeButton.x = 850;
powerUpgradeButton.y = 2600;
game.addChild(powerUpgradeButton);
var powerUpgradeText = new Text2('Upgrade Power - $200', {
	size: 50,
	fill: 0xFFFFFF
});
powerUpgradeText.anchor.set(0.5, 0.5);
powerUpgradeText.x = powerUpgradeButton.x;
powerUpgradeText.y = powerUpgradeButton.y;
game.addChild(powerUpgradeText);
var sellButton = LK.getAsset('sellButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
sellButton.x = 1300;
sellButton.y = 2600;
game.addChild(sellButton);
var sellButtonText = new Text2(' SELL ', {
	size: 50,
	fill: 0xFFFFFF
});
sellButtonText.anchor.set(0.5, 0.5);
sellButtonText.x = sellButton.x;
sellButtonText.y = sellButton.y;
game.addChild(sellButtonText);
// Mining rig types and costs - only basic rigs available
var rigTypes = ['basic'];
var currentRigType = 0;
// Starting mining rigs
if (storage.rigCount === undefined) {
	var startingRig = new MiningRig('basic');
	startingRig.x = 400;
	startingRig.y = 400;
	game.addChild(startingRig);
	miningRigs.push(startingRig);
	storage.rigCount = 1;
	storage.rigTypes = ['basic'];
} else {
	// Restore saved rigs
	var savedRigTypes = storage.rigTypes || [];
	for (var i = 0; i < storage.rigCount; i++) {
		var rigType = savedRigTypes[i] || 'basic';
		var rig = new MiningRig(rigType);
		rig.x = 400 + i % 10 * 140;
		rig.y = 400 + Math.floor(i / 10) * 120;
		game.addChild(rig);
		miningRigs.push(rig);
	}
}
// Number formatting utility
function formatNumber(num) {
	if (num < 1000) {
		return num.toFixed(0);
	} else if (num < 1000000) {
		return (num / 1000).toFixed(1) + 'K';
	} else if (num < 1000000000) {
		return (num / 1000000).toFixed(1) + 'M';
	} else if (num < 1000000000000) {
		return (num / 1000000000).toFixed(1) + 'B';
	} else if (num < 1000000000000000) {
		return (num / 1000000000000).toFixed(1) + 'T';
	} else if (num < 1000000000000000000) {
		return (num / 1000000000000000).toFixed(1) + 'Qa';
	} else {
		return (num / 1000000000000000000).toFixed(1) + 'Qi';
	}
}
// Utility functions
function updateUI() {
	bitcoinDisplay.setText(texts[settings.language].bitcoin + ' ' + bitcoin.toFixed(5));
	cashDisplay.setText(texts[settings.language].cash + ' ' + formatNumber(cash));
	priceDisplay.setText(texts[settings.language].btcPrice + formatNumber(bitcoinPrice));
	powerDisplay.setText(texts[settings.language].power + powerUsage.toFixed(1) + '/' + powerCapacity);
	// Update power meter
	var powerRatio = Math.min(powerUsage / powerCapacity, 1);
	powerMeterFill.scaleX = powerRatio;
	if (powerRatio > 0.9) {
		powerMeterFill.tint = 0xe74c3c; // Red when near capacity
	} else if (powerRatio > 0.7) {
		powerMeterFill.tint = 0xf39c12; // Orange when high
	} else {
		powerMeterFill.tint = 0x27ae60; // Green when safe
	}
	// Update upgrade button costs - only basic rigs
	var rigType = 'basic';
	var baseCost = 2500;
	var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3));
	var rigName = 'Basic';
	rigUpgradeText.setText(texts[settings.language].buyRig + rigName + texts[settings.language].rig + formatNumber(rigCost));
	var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 1);
	powerUpgradeText.setText(texts[settings.language].upgradePower + formatNumber(powerCost));
}
function spawnBitcoinParticle() {
	if (Math.random() < 0.002) {
		// 0.2% chance per frame when mining
		var particle = new BitcoinParticle();
		particle.x = 400 + Math.random() * 800;
		particle.animate(300, 150);
		game.addChild(particle);
	}
}
// Function to calculate total power requirement
function calculateTotalPowerUsage() {
	var totalPower = 0;
	for (var i = 0; i < miningRigs.length; i++) {
		totalPower += miningRigs[i].stats.powerCost;
	}
	return totalPower;
}
// Settings state
var settings = storage.settings || {
	musicEnabled: true,
	effectsEnabled: true,
	language: 'en'
};
var showingSettings = false;
// Admin state
var adminMode = false;
var showingAdmin = false;
var unlimitedMoney = false;
// Language texts
var texts = {
	en: {
		bitcoin: '₿',
		cash: '$',
		btcPrice: 'BTC: $',
		power: 'Power: ',
		buyRig: 'Buy ',
		rig: ' Rig - $',
		upgradePower: 'Upgrade Power - $',
		sellBitcoin: 'Sell Bitcoin',
		settings: 'Settings',
		music: 'Music',
		effects: 'Effects',
		language: 'Language',
		reset: 'Reset Game',
		on: 'ON',
		off: 'OFF',
		english: 'English',
		turkish: 'Turkish',
		close: 'Close'
	},
	tr: {
		bitcoin: '₿',
		cash: '$',
		btcPrice: 'BTC: $',
		power: 'Güç: ',
		buyRig: 'Al ',
		rig: ' Cihaz - $',
		upgradePower: 'Güç Yükselt - $',
		sellBitcoin: 'Bitcoin Sat',
		settings: 'Ayarlar',
		music: 'Müzik',
		effects: 'Efektler',
		language: 'Dil',
		reset: 'Oyunu Sıfırla',
		on: 'AÇIK',
		off: 'KAPALI',
		english: 'İngilizce',
		turkish: 'Türkçe',
		close: 'Kapat'
	}
};
// Settings button
var settingsButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
settingsButton.interactive = true;
settingsButton.x = 1800;
settingsButton.y = 2600;
game.addChild(settingsButton);
var settingsButtonText = new Text2(texts[settings.language].settings, {
	size: 50,
	fill: 0xFFFFFF
});
settingsButtonText.anchor.set(0.5, 0.5);
settingsButtonText.x = settingsButton.x;
settingsButtonText.y = settingsButton.y;
game.addChild(settingsButtonText);
// Admin button (hidden by default)
var adminButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 1.5,
	scaleY: 1.5
});
adminButton.interactive = true;
adminButton.tint = 0xFF0000;
adminButton.x = 1224;
adminButton.y = 500;
adminButton.visible = adminMode;
game.addChild(adminButton);
var adminButtonText = new Text2('ADMIN', {
	size: 30,
	fill: 0xFFFFFF
});
adminButtonText.anchor.set(0.5, 0.5);
adminButtonText.x = adminButton.x;
adminButtonText.y = adminButton.y;
adminButtonText.visible = adminMode;
game.addChild(adminButtonText);
// Settings panel
var settingsPanel = new Container();
settingsPanel.visible = false;
var panelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 10
});
panelBg.tint = 0x2c3e50;
panelBg.x = 0;
panelBg.y = 0;
settingsPanel.x = 2048 / 2;
settingsPanel.y = 2732 / 2;
settingsPanel.addChild(panelBg);
// Music toggle
var musicToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
musicToggle.interactive = true;
musicToggle.x = 0;
musicToggle.y = -266;
settingsPanel.addChild(musicToggle);
var musicText = new Text2(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off), {
	size: 60,
	fill: 0xFFFFFF
});
musicText.anchor.set(0.5, 0.5);
musicText.x = musicToggle.x;
musicText.y = musicToggle.y;
settingsPanel.addChild(musicText);
// Effects toggle
var effectsToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
effectsToggle.interactive = true;
effectsToggle.x = 0;
effectsToggle.y = -116;
settingsPanel.addChild(effectsToggle);
var effectsText = new Text2(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off), {
	size: 60,
	fill: 0xFFFFFF
});
effectsText.anchor.set(0.5, 0.5);
effectsText.x = effectsToggle.x;
effectsText.y = effectsToggle.y;
settingsPanel.addChild(effectsText);
// Language toggle
var languageToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
languageToggle.interactive = true;
languageToggle.x = 0;
languageToggle.y = 34;
settingsPanel.addChild(languageToggle);
var languageText = new Text2(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish), {
	size: 60,
	fill: 0xFFFFFF
});
languageText.anchor.set(0.5, 0.5);
languageText.x = languageToggle.x;
languageText.y = languageToggle.y;
settingsPanel.addChild(languageText);
// Reset button
var resetButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
resetButton.interactive = true;
resetButton.tint = 0xe74c3c;
resetButton.x = 0;
resetButton.y = 184;
settingsPanel.addChild(resetButton);
var resetText = new Text2(texts[settings.language].reset, {
	size: 60,
	fill: 0xFFFFFF
});
resetText.anchor.set(0.5, 0.5);
resetText.x = resetButton.x;
resetText.y = resetButton.y;
settingsPanel.addChild(resetText);
// Reset button
var resetButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
resetButton.interactive = true;
resetButton.tint = 0xe74c3c;
resetButton.x = 0;
resetButton.y = 184;
settingsPanel.addChild(resetButton);
var resetText = new Text2(texts[settings.language].reset, {
	size: 60,
	fill: 0xFFFFFF
});
resetText.anchor.set(0.5, 0.5);
resetText.x = resetButton.x;
resetText.y = resetButton.y;
settingsPanel.addChild(resetText);
// Close button
var closeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.2,
	scaleY: 1.2
});
closeButton.interactive = true;
closeButton.x = 0;
closeButton.y = 484;
settingsPanel.addChild(closeButton);
var closeText = new Text2(texts[settings.language].close, {
	size: 60,
	fill: 0xFFFFFF
});
closeText.anchor.set(0.5, 0.5);
closeText.x = closeButton.x;
closeText.y = closeButton.y;
settingsPanel.addChild(closeText);
LK.gui.addChild(settingsPanel);
// Prestige panel
var prestigePanel = new Container();
prestigePanel.visible = false;
var prestigePanelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 8
});
prestigePanelBg.tint = 0x8e44ad;
prestigePanelBg.x = 0;
prestigePanelBg.y = 0;
prestigePanel.x = 1024;
prestigePanel.y = 1366;
prestigePanel.addChild(prestigePanelBg);
// Prestige title
var prestigeTitle = new Text2('PRESTIGE AVAILABLE!', {
	size: 80,
	fill: 0xFFFFFF
});
prestigeTitle.anchor.set(0.5, 0.5);
prestigeTitle.x = 0;
prestigeTitle.y = -250;
prestigePanel.addChild(prestigeTitle);
// Prestige info
var prestigeInfo = new Text2('You have reached 100 rigs!\nPrestige to reset progress\nand gain permanent bonuses', {
	size: 50,
	fill: 0xFFFFFF
});
prestigeInfo.anchor.set(0.5, 0.5);
prestigeInfo.x = 0;
prestigeInfo.y = -100;
prestigePanel.addChild(prestigeInfo);
// Current prestige points display
var currentPrestigeText = new Text2('Current Prestige Points: ' + prestigePoints, {
	size: 45,
	fill: 0xF39C12
});
currentPrestigeText.anchor.set(0.5, 0.5);
currentPrestigeText.x = 0;
currentPrestigeText.y = 0;
prestigePanel.addChild(currentPrestigeText);
// Prestige multiplier display
var multiplierText = new Text2('Current Multiplier: ' + Math.pow(1.2, prestigePoints).toFixed(2) + 'x', {
	size: 45,
	fill: 0x27AE60
});
multiplierText.anchor.set(0.5, 0.5);
multiplierText.x = 0;
multiplierText.y = 70;
prestigePanel.addChild(multiplierText);
// Prestige button
var prestigeButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.5
});
prestigeButton.interactive = true;
prestigeButton.tint = 0x8e44ad;
prestigeButton.x = 0;
prestigeButton.y = 180;
prestigePanel.addChild(prestigeButton);
var prestigeButtonText = new Text2('PRESTIGE (+1 Point)', {
	size: 55,
	fill: 0xFFFFFF
});
prestigeButtonText.anchor.set(0.5, 0.5);
prestigeButtonText.x = prestigeButton.x;
prestigeButtonText.y = prestigeButton.y;
prestigePanel.addChild(prestigeButtonText);
LK.gui.addChild(prestigePanel);
// Admin panel
var adminPanel = new Container();
adminPanel.visible = false;
var adminPanelBg = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 6,
	scaleY: 6
});
adminPanelBg.tint = 0x2c3e50;
adminPanelBg.x = 0;
adminPanelBg.y = 0;
adminPanel.x = 1024;
adminPanel.y = 1366;
adminPanel.addChild(adminPanelBg);
// Admin title
var adminTitle = new Text2('ADMIN PANEL', {
	size: 80,
	fill: 0xFF0000
});
adminTitle.anchor.set(0.5, 0.5);
adminTitle.x = 0;
adminTitle.y = -200;
adminPanel.addChild(adminTitle);
// Unlimited money toggle
var unlimitedMoneyToggle = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.5,
	scaleY: 1.2
});
unlimitedMoneyToggle.interactive = true;
unlimitedMoneyToggle.x = 0;
unlimitedMoneyToggle.y = -50;
adminPanel.addChild(unlimitedMoneyToggle);
var unlimitedMoneyText = new Text2('Unlimited Money: ' + (unlimitedMoney ? 'ON' : 'OFF'), {
	size: 50,
	fill: 0xFFFFFF
});
unlimitedMoneyText.anchor.set(0.5, 0.5);
unlimitedMoneyText.x = unlimitedMoneyToggle.x;
unlimitedMoneyText.y = unlimitedMoneyToggle.y;
adminPanel.addChild(unlimitedMoneyText);
// Admin close button
var adminCloseButton = LK.getAsset('upgradeButton', {
	anchorX: 0.5,
	anchorY: 0.5,
	scaleX: 2.2,
	scaleY: 1.2
});
adminCloseButton.interactive = true;
adminCloseButton.x = 0;
adminCloseButton.y = 100;
adminPanel.addChild(adminCloseButton);
var adminCloseText = new Text2('Close', {
	size: 60,
	fill: 0xFFFFFF
});
adminCloseText.anchor.set(0.5, 0.5);
adminCloseText.x = adminCloseButton.x;
adminCloseText.y = adminCloseButton.y;
adminPanel.addChild(adminCloseText);
LK.gui.addChild(adminPanel);
// Function to update language texts
function updateLanguageTexts() {
	settingsButtonText.setText(texts[settings.language].settings);
	musicText.setText(texts[settings.language].music + ': ' + (settings.musicEnabled ? texts[settings.language].on : texts[settings.language].off));
	effectsText.setText(texts[settings.language].effects + ': ' + (settings.effectsEnabled ? texts[settings.language].on : texts[settings.language].off));
	languageText.setText(texts[settings.language].language + ': ' + (settings.language === 'en' ? texts[settings.language].english : texts[settings.language].turkish));
	resetText.setText(texts[settings.language].reset);
	closeText.setText(texts[settings.language].close);
	sellButtonText.setText(texts[settings.language].sellBitcoin);
}
// Settings button handler
settingsButton.down = function (x, y, obj) {
	showingSettings = !showingSettings;
	settingsPanel.visible = showingSettings;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(settingsButton, 0x3498db, 300);
	}
};
// Music toggle handler
musicToggle.down = function (x, y, obj) {
	settings.musicEnabled = !settings.musicEnabled;
	storage.settings = settings;
	updateLanguageTexts();
	// Control music playback based on setting
	if (settings.musicEnabled) {
		LK.playMusic('Music');
	} else {
		LK.stopMusic();
	}
	if (settings.effectsEnabled) {
		LK.effects.flashObject(musicToggle, 0x27ae60, 300);
	}
};
// Effects toggle handler
effectsToggle.down = function (x, y, obj) {
	settings.effectsEnabled = !settings.effectsEnabled;
	storage.settings = settings;
	updateLanguageTexts();
	LK.effects.flashObject(effectsToggle, 0x27ae60, 300);
};
// Language toggle handler
languageToggle.down = function (x, y, obj) {
	settings.language = settings.language === 'en' ? 'tr' : 'en';
	storage.settings = settings;
	updateLanguageTexts();
	if (settings.effectsEnabled) {
		LK.effects.flashObject(languageToggle, 0x27ae60, 300);
	}
};
// Reset button handler
resetButton.down = function (x, y, obj) {
	// Clear all storage
	storage.bitcoin = 0;
	storage.cash = 1000;
	storage.powerCapacity = 10;
	delete storage.rigCount;
	delete storage.rigTypes;
	storage.settings = {
		musicEnabled: true,
		effectsEnabled: true,
		language: 'en'
	};
	if (settings.effectsEnabled) {
		LK.effects.flashObject(resetButton, 0xe74c3c, 500);
	}
	// Show game over to restart
	LK.setTimeout(function () {
		LK.showGameOver();
	}, 600);
};
// Close button handler
closeButton.down = function (x, y, obj) {
	showingSettings = false;
	settingsPanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(closeButton, 0x95a5a6, 300);
	}
};
// Prestige button handler
prestigeButton.down = function (x, y, obj) {
	prestigePoints += 1;
	storage.prestigePoints = prestigePoints;
	// Reset game state
	bitcoin = 0;
	cash = 1000;
	powerCapacity = 10;
	// Clear all rigs
	for (var i = 0; i < miningRigs.length; i++) {
		miningRigs[i].destroy();
	}
	miningRigs = [];
	// Reset storage
	storage.bitcoin = 0;
	storage.cash = 1000;
	storage.powerCapacity = 10;
	storage.rigCount = 0;
	storage.rigTypes = [];
	// Hide prestige panel
	showingPrestige = false;
	prestigePanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(prestigeButton, 0x8e44ad, 500);
	}
	// Create starting rig
	var startingRig = new MiningRig('basic');
	startingRig.x = 400;
	startingRig.y = 400;
	game.addChild(startingRig);
	miningRigs.push(startingRig);
	storage.rigCount = 1;
	storage.rigTypes = ['basic'];
};
// Admin button handler
adminButton.down = function (x, y, obj) {
	showingAdmin = !showingAdmin;
	adminPanel.visible = showingAdmin;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(adminButton, 0xFF0000, 300);
	}
};
// Unlimited money toggle handler
unlimitedMoneyToggle.down = function (x, y, obj) {
	unlimitedMoney = !unlimitedMoney;
	unlimitedMoneyText.setText('Unlimited Money: ' + (unlimitedMoney ? 'ON' : 'OFF'));
	if (settings.effectsEnabled) {
		LK.effects.flashObject(unlimitedMoneyToggle, 0x27ae60, 300);
	}
};
// Admin close button handler
adminCloseButton.down = function (x, y, obj) {
	showingAdmin = false;
	adminPanel.visible = false;
	if (settings.effectsEnabled) {
		LK.effects.flashObject(adminCloseButton, 0x95a5a6, 300);
	}
};
// Admin mode activation (secret tap sequence on bitcoin display)
var adminTapCount = 0;
var lastAdminTap = 0;
bitcoinDisplay.interactive = true;
bitcoinDisplay.down = function (x, y, obj) {
	var currentTime = Date.now();
	if (currentTime - lastAdminTap < 1000) {
		adminTapCount++;
		if (adminTapCount >= 5) {
			adminMode = true;
			adminButton.visible = true;
			adminButtonText.visible = true;
			adminTapCount = 0;
			if (settings.effectsEnabled) {
				LK.effects.flashObject(bitcoinDisplay, 0xFF0000, 500);
			}
		}
	} else {
		adminTapCount = 1;
	}
	lastAdminTap = currentTime;
};
// Event handlers
rigUpgradeButton.down = function (x, y, obj) {
	var rigType = 'basic';
	var baseCost = 2500;
	var rigCost = baseCost * Math.pow(1.3, Math.floor(miningRigs.length / 3));
	var powerRequired = 0.5;
	var currentTotalPower = calculateTotalPowerUsage();
	if ((cash >= rigCost || unlimitedMoney) && currentTotalPower + powerRequired <= powerCapacity && miningRigs.length < 100) {
		if (!unlimitedMoney) {
			cash -= rigCost;
		} else {
			cash = Math.max(cash, 999999999); // Ensure cash stays high in unlimited mode
		}
		var newRig = new MiningRig(rigType);
		newRig.x = 400 + miningRigs.length % 10 * 140;
		newRig.y = 400 + Math.floor(miningRigs.length / 10) * 120;
		game.addChild(newRig);
		miningRigs.push(newRig);
		// Save rig types
		if (!storage.rigTypes) {
			storage.rigTypes = [];
		}
		storage.rigTypes.push(rigType);
		storage.rigCount = miningRigs.length;
		if (settings.effectsEnabled) {
			LK.getSound('purchase').play();
			// Flash effect
			LK.effects.flashObject(rigUpgradeButton, 0x27ae60, 300);
		}
	}
};
powerUpgradeButton.down = function (x, y, obj) {
	var powerCost = 500 * Math.pow(1.5, (powerCapacity - 10) / 1);
	if ((cash >= powerCost || unlimitedMoney) && powerCapacity < 50) {
		if (!unlimitedMoney) {
			cash -= powerCost;
		} else {
			cash = Math.max(cash, 999999999); // Ensure cash stays high in unlimited mode
		}
		powerCapacity += 1;
		storage.powerCapacity = powerCapacity;
		if (settings.effectsEnabled) {
			LK.getSound('purchase').play();
			// Flash effect
			LK.effects.flashObject(powerUpgradeButton, 0x27ae60, 300);
		}
	}
};
sellButton.down = function (x, y, obj) {
	if (bitcoin >= 0.01) {
		var sellAmount = bitcoin;
		var earnings = sellAmount * bitcoinPrice;
		cash += earnings;
		bitcoin = 0;
		if (settings.effectsEnabled) {
			LK.getSound('coin').play();
			// Flash effect
			LK.effects.flashObject(sellButton, 0xf39c12, 500);
		}
		// Show earnings popup
		var earningsText = new Text2('+$' + formatNumber(earnings), {
			size: 60,
			fill: 0xF39C12
		});
		earningsText.anchor.set(0.5, 0.5);
		earningsText.x = sellButton.x;
		earningsText.y = sellButton.y - 100;
		game.addChild(earningsText);
		tween(earningsText, {
			y: earningsText.y - 100,
			alpha: 0
		}, {
			duration: 2000,
			easing: tween.easeOut,
			onFinish: function onFinish() {
				earningsText.destroy();
			}
		});
	}
};
// Start playing background music
if (settings.musicEnabled) {
	LK.playMusic('Music');
}
game.update = function () {
	powerUsage = calculateTotalPowerUsage(); // Calculate total power usage from all rigs
	// Update bitcoin price periodically
	if (Date.now() - lastPriceUpdate > 5000) {
		// Every 5 seconds
		lastPriceUpdate = Date.now();
		var priceChange = (Math.random() - 0.5) * 0.1; // ±5% change
		bitcoinPrice = Math.max(10000, bitcoinPrice * (1 + priceChange));
	}
	// Spawn bitcoin particles when mining
	if (miningRigs.length > 0) {
		spawnBitcoinParticle();
	}
	// Check for prestige availability
	if (miningRigs.length >= 100 && !showingPrestige) {
		showingPrestige = true;
		prestigePanel.visible = true;
		// Update prestige panel text
		currentPrestigeText.setText('Current Prestige Points: ' + prestigePoints);
		multiplierText.setText('Current Multiplier: ' + Math.pow(1.2, prestigePoints).toFixed(2) + 'x');
	}
	updateUI();
	// Save progress periodically
	if (LK.ticks % 300 === 0) {
		// Every 5 seconds
		storage.bitcoin = bitcoin;
		storage.cash = cash;
		storage.powerCapacity = powerCapacity;
		storage.rigCount = miningRigs.length;
		// Save rig types
		var rigTypesToSave = [];
		for (var i = 0; i < miningRigs.length; i++) {
			rigTypesToSave.push(miningRigs[i].rigType);
		}
		storage.rigTypes = rigTypesToSave;
	}
};