User prompt
Patron Paneli hakkında arkaplan vs. Herşeyi sıfırla.
User prompt
Panel kapanınca herşey normale dönsün ama..
User prompt
Açılan panele bağlı olan, Panel kodları aktif olsun ama..
User prompt
Arkaplanda ki butonların işlevsiz hale gelmesi için özel kod yaz ve en başa ekle ki diğer kodları devre dışı bıraksın.
User prompt
Patron paneli açılınca Bütün fabrika butonların işlevini panel kapanana kadar durdur.
User prompt
Bütün Paneller ön planda açılsın. Ana ekran ve fabrikalar unsurları görünmesin. Paneller açılınca Gizlenen kısım yalnızca panelin arkaplan resmi boyutunca olsun. Panel harici kısımlar görünmeye devam etsin. bu otomatik olsun kapanınca eski haline gelsin.
User prompt
Paneller açıldığında fabrika butonları otomatik kapanana kadar işlevsiz olsun - Gizle
User prompt
Bütün teklif ürün adet sayı sınırını 20-300 arası olarak yeniden ayarla.
User prompt
Bilgi yazısını 3 satır yukarı kaldır
User prompt
butonları 2 satır yukarı kaldır
User prompt
45 font ile panel içeriğini yeniden hizala ama bilgi yazısı ve butonlar arasında en fazla 5 satır boşluk olsun.
User prompt
Sipariş tamamlandığında yazısının altına toplam kazancı gösteren yazı ekle
User prompt
Tamamlanınca Toplam Kazanç ne olacağı konusunda yazı ekle.
User prompt
Butonları 4 satır yukarı ve bütün panel içi yazı ve buton boyutunu 44e ayarla
User prompt
Bilgi yazısını 4 satır yukarı kaydır
User prompt
Panel içindeki yazı ve butonları 40 fonta ayarla
User prompt
Bilgi yazısı 4 satır yukarı kaydır
User prompt
Panel içeriğini bağımsız olarak yeniden tasarla ve satır boşlukları vs. olsun. Üst üste yazı olmasını da engelle.
User prompt
Patron Paneli boyut ve arkaplan, kapat butonu vs. bütün panel içerik ayarları Madenler paneli ile aynı ayarlarda ve boyutta olsun. Madenler panelinde bulunan kodları bu panele uyarla.
User prompt
Reddet Butonu yanına, Teklifi Geç butonu ekle. Teklif geçmeye yarasın fakat ceza olarak 10800 frame süre beklemek. Panele yazı ile ''3 Dakika'' olarak eklersin. Bu konuda bilgi yazısı da ekle.
User prompt
Patron Panel boyutunu aşağı ve yukarı doğru %25 artır. İçindeki bütün işlev ve arkaplan resimleri ile birlikte.
User prompt
Panel açılınca arkaplanda ne var ne yok işliyor. bunu engelle ne yaparsan yap engelle.
User prompt
Patron paneli açılınca panelin arkaplan resminin arkasında kalan bütün buton ve resimler tıklanamaz olsun. Bu panel kapanıncaya kadar devam etsin. Otomatik olsun bu sistem.
User prompt
Hala arkasına basılıyor.
User prompt
Panel açıldığında, arkaplandaki tüm etkileşimli öğelerin (butonlar, sliderlar, vs.) hem görünürlüğü (visible) kapatılır, hem de event handler’ları (down, move, up) geçici olarak devre dışı bırak. Panel kapandığında ise, bu öğeler tekrar görünür ve event handler’ları eski haline getir. Panel kapandığında ise, bu öğeler tekrar görünür ve event handler’ları eski haline getir.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Factory class: base for all part factories var BaseFactory = Container.expand(function () { var self = Container.call(this); self.level = 1; self.production = 1; // per click self.upgradeCost = 100; self.partType = null; // Production time in frames (default 30, halves every 5 levels, min 5) self.getProductionTime = function () { // Each 5 levels halves the time, min 5 frames var base = 30; var speedup = Math.floor((self.level - 1) / 5); var prodTime = Math.floor(base / Math.pow(2, speedup)); if (prodTime < 5) { prodTime = 5; } return prodTime; }; // Use unique factory image for each partType if available var factoryImageId = 'factory'; if (self.partType) { if (LK.hasAsset && LK.hasAsset('factory_' + self.partType)) { factoryImageId = 'factory_' + self.partType; } else if (LK.getAsset && LK.getAsset('factory_' + self.partType, { anchorX: 0.5, anchorY: 0.5 })) { factoryImageId = 'factory_' + self.partType; } } self.attachAsset(factoryImageId, { anchorX: 0.5, anchorY: 0.5 }); // Part icon var partIcon = null; if (self.partType) { partIcon = self.attachAsset('part_' + self.partType, { anchorX: 0.5, anchorY: 0.5, y: -60, scaleX: 0.7, scaleY: 0.7 }); } // Level text var levelTxt = new Text2('Lv.' + self.level, { size: 40, fill: '#fff' }); levelTxt.anchor.set(0.5, 0); levelTxt.y = 90; self.addChild(levelTxt); self.upgrade = function () { if (money >= self.upgradeCost) { money -= self.upgradeCost; self.level += 1; self.production += 1; self.upgradeCost = Math.floor(self.upgradeCost * 3.5); levelTxt.setText('Lv.' + self.level); updateMoneyText(); // Reset autoTick so production interval is not skipped after upgrade self.autoTick = 0; // --- Reduce production time by 10% after each upgrade, if customProductionTime is present --- if (typeof self.customProductionTime === "number") { self.customProductionTime = Math.max(Math.floor(self.customProductionTime * 0.9), 60); // min 1s (60 frames) } // Update production time text if present if (self._prodTimeTxt) { var prodTime = self.getProductionTime ? self.getProductionTime() : 30; var prodTimeSec = (prodTime / 60).toFixed(2); self._prodTimeTxt.setText("Üretim: " + prodTimeSec + " sn"); } } }; self.setPartType = function (type) { self.partType = type; if (partIcon) { partIcon.destroy(); } partIcon = self.attachAsset('part_' + type, { anchorX: 0.5, anchorY: 0.5, y: -60, scaleX: 0.7, scaleY: 0.7 }); }; return self; }); // Create a factory class for each part type // Mine class: produces raw materials over time var Mine = Container.expand(function () { var self = Container.call(this); self.level = 1; self.type = 'copper'; // 'copper', 'silicon', 'iron' self.production = 1; // per tick self.timer = 0; self.upgradeCost = 50; self.attachAsset('mine', { anchorX: 0.5, anchorY: 0.5 }); // Ore icon var oreIcon = self.attachAsset('ore_' + self.type, { anchorX: 0.5, anchorY: 0.5, y: 60, scaleX: 0.7, scaleY: 0.7 }); // Level text var levelTxt = new Text2('Lv.' + self.level, { size: 40, fill: '#fff' }); levelTxt.anchor.set(0.5, 0); levelTxt.y = 90; self.addChild(levelTxt); self.setType = function (type) { self.type = type; oreIcon.destroy(); var newOre = self.attachAsset('ore_' + type, { anchorX: 0.5, anchorY: 0.5, y: 60, scaleX: 0.7, scaleY: 0.7 }); }; self.upgrade = function () { if (money >= self.upgradeCost) { money -= self.upgradeCost; self.level += 1; self.production += 1; self.upgradeCost = Math.floor(self.upgradeCost * 2.975); levelTxt.setText('Lv.' + self.level); updateMoneyText(); } }; self.update = function () { self.timer++; // No automatic production }; return self; }); // Store class: sells computer parts to customers var Store = Container.expand(function () { var self = Container.call(this); self.level = 1; self.sellSpeed = 1; // customers per 2s self.upgradeCost = 120; self.attachAsset('store', { anchorX: 0.5, anchorY: 0.5 }); // Level text var levelTxt = new Text2('Lv.' + self.level, { size: 48, //{1Y} // 40'tan 48'e büyütüldü fill: '#fff' }); levelTxt.anchor.set(0.5, 0); levelTxt.y = 90; self.addChild(levelTxt); self.upgrade = function () { if (money >= self.upgradeCost) { money -= self.upgradeCost; self.level += 1; self.sellSpeed += 1; self.upgradeCost = Math.floor(self.upgradeCost * 3.85); levelTxt.setText('Lv.' + self.level); updateMoneyText(); } }; // Add auto-sell tick for automatic sales self.autoSellTick = 0; self.autoSellInterval = function () { // Satış aralığı: 120 frame / sellSpeed (daha yüksek seviye daha hızlı) return Math.max(30, Math.floor(120 / self.sellSpeed)); }; self.tryAutoSell = function () { self.autoSellTick++; if (self.autoSellTick >= self.autoSellInterval()) { // Satılacak ürün bul (stokta olanlardan rastgele seç) var availableParts = []; for (var i = 0; i < partTypes.length; i++) { if (parts[partTypes[i]] > 0) { availableParts.push(i); } } if (availableParts.length > 0) { var randIdx = availableParts[Math.floor(Math.random() * availableParts.length)]; var salePrice = 30 + Math.floor(Math.random() * 20); parts[partTypes[randIdx]] -= 1; money += salePrice; if (typeof updateMoneyText === "function") { updateMoneyText(); } if (typeof updatePartsText === "function") { updatePartsText(); } // Satış animasyonu (mağaza hafif büyüsün) tween(self, { scaleX: 1.08, scaleY: 1.08 }, { duration: 80, onFinish: function onFinish() { tween(self, { scaleX: 0.82, scaleY: 0.82 }, { duration: 80 }); } }); // --- Ava: Show sold product image above store for 5 seconds --- // Panel açıkken satılan ürün resmi gösterilmesin if (!(typeof magazaPanel !== "undefined" && magazaPanel.visible) && !(typeof yatirimPanel !== "undefined" && yatirimPanel.visible) && !(typeof magazalarPanel !== "undefined" && magazalarPanel.visible) && !(typeof madenlerPanel !== "undefined" && madenlerPanel.visible) && !(typeof newPagePanel !== "undefined" && newPagePanel.visible) && !(typeof mevduatPopupPanel !== "undefined" && mevduatPopupPanel.visible) && !(typeof languagesPanel !== "undefined" && languagesPanel.visible) && !(typeof infoPanel !== "undefined" && infoPanel.visible)) { if (typeof self.soldImage !== "undefined" && self.soldImage) { self.soldImage.destroy(); self.soldImage = undefined; } var soldImgId = 'part_' + partTypes[randIdx]; var soldImg = LK.getAsset(soldImgId, { anchorX: 0.5, anchorY: 1, x: self.x, y: self.y - 120, scaleX: 0.6, // 1.2 * 0.5 = 0.6, %50 oranında küçültüldü scaleY: 0.6 }); soldImg.visible = true; if (typeof game !== "undefined" && game.addChild) { game.addChild(soldImg); } self.soldImage = soldImg; if (typeof game !== "undefined" && game.setChildIndex) { game.setChildIndex(soldImg, game.children.length - 1); } LK.setTimeout(function () { if (soldImg && soldImg.destroy) { soldImg.destroy(); } if (self) { self.soldImage = undefined; } }, 300); // 5 seconds = 300 frames at 60fps } } self.autoSellTick = 0; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181818 }); /**** * Game Code ****/ // Defensive: Only use offerPanel's width/height/x/y if offerPanel is defined and has those properties // --- Mevduat (Deposit) Panel: Internet Teklif panelinin üstüne hizalanacak şekilde ekle --- // Panel içeriğine göre genişlik/uzunluk ayarla ve ortala var mevduatPanelTitleText = 'Mevduat'; var mevduatPanelFaizText = '2 dakikada %10 faiz'; var mevduatPanelTitleObj = new Text2(mevduatPanelTitleText, { size: 32, fill: '#fff' }); var mevduatPanelFaizObj = new Text2(mevduatPanelFaizText, { size: 28, fill: '#bff' }); var mevduatPanelContentWidth = Math.max(mevduatPanelTitleObj.width, mevduatPanelFaizObj.width, 340) + 80; var mevduatPanelContentHeight = 40 + mevduatPanelTitleObj.height + 10 + mevduatPanelFaizObj.height + 10 + 40 + 60 + 80; var mevduatPanelWidth = mevduatPanelContentWidth; var mevduatPanelHeight = mevduatPanelContentHeight; var mevduatPanelX = typeof offerPanel !== "undefined" && offerPanel && typeof offerPanel.x === "number" ? offerPanel.x : 120; var mevduatPanelY = typeof offerPanel !== "undefined" && offerPanel && typeof offerPanel.y === "number" && typeof offerPanel.height === "number" ? offerPanel.y - offerPanel.height / 2 - mevduatPanelHeight / 2 - 40 : 1366 - 340 / 2 - mevduatPanelHeight / 2 - 40; var mevduatPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: mevduatPanelWidth, height: mevduatPanelHeight, x: mevduatPanelX, y: mevduatPanelY }); game.addChild(mevduatPanel); // Panel başlığı var mevduatPanelTitle = new Text2(mevduatPanelTitleText, { size: 32, fill: '#fff' }); mevduatPanelTitle.anchor.set(0.5, 0); mevduatPanelTitle.x = mevduatPanel.x + 32; mevduatPanelTitle.y = mevduatPanel.y - mevduatPanel.height / 2 + 20; game.addChild(mevduatPanelTitle); // Faiz ibaresi var mevduatPanelFaiz = new Text2(mevduatPanelFaizText, { size: 28, fill: '#bff' }); mevduatPanelFaiz.anchor.set(0.5, 0); mevduatPanelFaiz.x = mevduatPanel.x + 32; mevduatPanelFaiz.y = mevduatPanelTitle.y + mevduatPanelTitle.height + 10; game.addChild(mevduatPanelFaiz); // Mevduat tutarı var mevduatTutar = typeof mevduatTutar !== "undefined" ? mevduatTutar : 0; var mevduatTxt = new Text2('Mevduat: ₺' + mevduatTutar, { size: 28, fill: '#ffb' }); mevduatTxt.anchor.set(0.5, 0.5); mevduatTxt.x = mevduatPanel.x + 32; mevduatTxt.y = mevduatPanelFaiz.y + mevduatPanelFaiz.height + 30; game.addChild(mevduatTxt); function updateMevduatTxt() { mevduatTxt.setText('Mevduat: ₺' + Math.floor(mevduatTutar * 100) / 100); } // Mevduat yatır ve çek butonları var mevduatYatirBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 120, height: 60, x: mevduatPanel.x - 80 + 32, y: mevduatTxt.y + 60 }); game.addChild(mevduatYatirBtn); var mevduatYatirBtnTxt = new Text2('Yatır', { size: 28, fill: '#fff' }); mevduatYatirBtnTxt.anchor.set(0.5, 0.5); mevduatYatirBtnTxt.x = mevduatYatirBtn.x; mevduatYatirBtnTxt.y = mevduatYatirBtn.y; game.addChild(mevduatYatirBtnTxt); var mevduatCekBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 120, height: 60, x: mevduatPanel.x + 80 + 32, y: mevduatTxt.y + 60 }); game.addChild(mevduatCekBtn); var mevduatCekBtnTxt = new Text2('Çek', { size: 28, fill: '#fff' }); mevduatCekBtnTxt.anchor.set(0.5, 0.5); mevduatCekBtnTxt.x = mevduatCekBtn.x; mevduatCekBtnTxt.y = mevduatCekBtn.y; game.addChild(mevduatCekBtnTxt); // Mevduat yatırma: 1000 TL ve katları mevduatYatirBtn.down = function (x, y, obj) { if (money >= 1000) { money -= 1000; mevduatTutar += 1000; updateMoneyText && updateMoneyText(); updateMevduatTxt && updateMevduatTxt(); tween(mevduatYatirBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(mevduatYatirBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { tween(mevduatYatirBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(mevduatYatirBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; // Mevduat çekme: 1000 TL ve katları mevduatCekBtn.down = function (x, y, obj) { if (mevduatTutar >= 1000) { mevduatTutar -= 1000; money += 1000; updateMoneyText && updateMoneyText(); updateMevduatTxt && updateMevduatTxt(); tween(mevduatCekBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(mevduatCekBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { tween(mevduatCekBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(mevduatCekBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; // Mevduat faizi: 7200 saniyede %10 faiz (her 7200 saniyede bir %10 artış) LK.setInterval(function () { // 7200 saniye = 2 saat = 432000 frame (60fps) // Her 7200 saniyede bir %10 faiz ekle if (mevduatTutar > 0) { var faizOran = 0.10; var faizKazanc = mevduatTutar * faizOran; if (typeof mevduatFaizKalan === "undefined") { window.mevduatFaizKalan = 0; } window.mevduatFaizKalan += faizKazanc; if (window.mevduatFaizKalan >= 0.01) { var eklenecek = Math.floor(window.mevduatFaizKalan * 100) / 100; mevduatTutar += eklenecek; window.mevduatFaizKalan -= eklenecek; updateMevduatTxt && updateMevduatTxt(); } } }, 432000); // 7200 saniye (60fps * 7200s = 432000) // mor // turuncu // yeşil // mavi // kırmızımsı // Her çalışana farklı renkli box tanımla // Create a factory class for each part type // Button // Customer // Factory, Store, Mine icons // Raw materials (3 types) // Computer parts (10 types) // Unique mine images for each ore type // Example: Use existing factory image for mouse // Example: Use GPU part image as factory image // Example: Use RAM part image as factory image // Example: Use SSD part image as factory image // Example: Use PSU part image as factory image // Example: Use MB part image as factory image // Example: Use CASE part image as factory image // Example: Use FAN part image as factory image // Example: Use HDD part image as factory image // Example: Use COOLER part image as factory image function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) { return t; } var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) { return i; } throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var partTypes = ['mouse', 'klavye', 'ram', 'ssd', 'psu', 'mb', 'cpu', 'gpu', 'monitor', 'case']; var oreTypes = ['copper', 'silicon', 'iron', 'silver', 'nikel', 'gold']; var FactoryClasses = {}; var partProductionTimes = []; for (var i = 0; i < partTypes.length; i++) { partProductionTimes[i] = (i + 1) * 2 * 60; // 2,4,6,...,20 saniye (frame cinsinden) } for (var i = 0; i < partTypes.length; i++) { (function (type, idx) { FactoryClasses[type] = Container.expand(function () { var self = BaseFactory.call(this); self.setPartType(type); self.customProductionTime = partProductionTimes[idx]; self.getProductionTime = function () { // Use the customProductionTime, which is reduced by 10% on each upgrade var prodTime = self.customProductionTime; // Each 5 levels halves the time, min 1s (60 frames) var speedup = Math.floor((self.level - 1) / 5); prodTime = Math.floor(prodTime / Math.pow(2, speedup)); if (prodTime < 60) { prodTime = 60; } return prodTime; }; return self; }); })(partTypes[i], i); } // Inventory var rawMaterials = { copper: 10, silicon: 10, iron: 10, silver: 10, nikel: 10, gold: 10 }; var parts = {}; for (var i = 0; i < partTypes.length; i++) { parts[partTypes[i]] = 0; } // Money var money = 5000; // UI Texts var moneyTxt = new Text2('₺' + money, { size: 50, fill: '#fff' }); moneyTxt.anchor.set(0.5, 0); moneyTxt.y = 10; LK.gui.top.addChild(moneyTxt); // --- Mağaza Button --- // Mağaza butonunu Patron butonundan önce tanımla ki, Patron butonu konumunu doğru alsın var magazaBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 70 }); magazaBtn.x = moneyTxt.x - 220; magazaBtn.y = 40; LK.gui.top.addChild(magazaBtn); var magazaBtnTxt = new Text2('Mağaza', { size: 36, fill: '#fff' }); magazaBtnTxt.anchor.set(0.5, 0.5); magazaBtnTxt.x = magazaBtn.x; magazaBtnTxt.y = magazaBtn.y; LK.gui.top.addChild(magazaBtnTxt); // --- PATRON Button and Panel --- // Place PATRON button below Mağaza button (with 20px gap) // Defensive: Ensure magazaBtn is defined before using its x/y, otherwise use fallback values var patronBtnX = typeof magazaBtn !== "undefined" && typeof magazaBtn.x === "number" ? magazaBtn.x : 120; var patronBtnY = typeof magazaBtn !== "undefined" && typeof magazaBtn.y === "number" && typeof magazaBtn.height === "number" ? magazaBtn.y + magazaBtn.height / 2 + 20 + 70 / 2 : 120 + 70 + 20 + 70 / 2; var patronBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 70, x: patronBtnX, y: patronBtnY }); LK.gui.top.addChild(patronBtn); var patronBtnTxt = new Text2('PATRON', { size: 36, fill: '#fff' }); patronBtnTxt.anchor.set(0.5, 0.5); patronBtnTxt.x = patronBtn.x; patronBtnTxt.y = patronBtn.y; LK.gui.top.addChild(patronBtnTxt); // Patron panelini Madenler paneli ile aynı boyut, arkaplan ve kapat butonu düzenine getir // Madenler paneli ile aynı panel boyutları ve konumlandırma var patronPanelWidth = Math.floor(2048 * 0.9); var patronPanelHeight = Math.floor(2732 * 0.9); var patronPanelX = Math.floor((2048 - patronPanelWidth) / 2); var patronPanelY = Math.floor((2732 - patronPanelHeight) / 2); var patronPanel = LK.getAsset('button', { anchorX: 0, anchorY: 0, width: patronPanelWidth, height: patronPanelHeight, x: patronPanelX, y: patronPanelY }); patronPanel.visible = false; game.addChild(patronPanel); // Panel başlığı üstte ortalı, madenlerPanelTitle ile aynı font ve konumda var patronPanelTitle = new Text2('PATRON', { size: 44, fill: '#fff' }); patronPanelTitle.anchor.set(0.5, 0); patronPanelTitle.x = 2048 / 2; patronPanelTitle.y = patronPanelY + 40; patronPanelTitle.visible = false; game.addChild(patronPanelTitle); // Panel merkez X'i güncelle var patronPanelCenterX = 2048 / 2; // --- Patron Panel: Toplu Sipariş Sistemi (Kurumsal Müşteri) --- // 20 farklı elektronik şirket ismi var patronSirketler = ["TeknoMarket", "DijitalA.Ş.", "MegaElektronik", "BilişimX", "Elektronix", "TeknolojiPark", "BilgiNet", "SmartTech", "Elektronika", "DijitalDepo", "TeknoPlus", "ElektronikEv", "BilişimDünyası", "TeknoStar", "DijitalOfis", "ElektronikAda", "TeknoZone", "BilişimExpress", "ElektronikMarket", "DijitalTek"]; // Sipariş state var patronSiparis = { sirket: null, urunler: [], // [{part, adet}] toplamAdet: 0, bonus: 0, aktif: false, tamamlandi: false }; // Panelde gösterilecek sipariş metni var patronSiparisTxt = new Text2('', { size: 45, fill: '#fff', lineHeight: 60, wordWrap: true, wordWrapWidth: patronPanelWidth - 120 // Panel kenarlarından daha fazla boşluk bırak }); patronSiparisTxt.anchor.set(0.5, 0); patronSiparisTxt.x = patronPanelCenterX; patronSiparisTxt.y = patronPanelTitle.y + patronPanelTitle.height + 36; patronSiparisTxt.visible = false; game.addChild(patronSiparisTxt); // Bilgilendirici yazı (panelin altına, satır aralığı ve hizası iyileştirildi) var patronInfoTxt = new Text2("Kurumsal müşterilerden toplu siparişler alırsınız.\n" + "Siparişi tamamladığınızda %2-%10 arası ek kazanç elde edersiniz.\n" + "Sipariş tamamlanmadan başka teklif gelmez.\n" + "Redderseniz %5 ceza ödersiniz.\n" + "Sipariş tamamlanmadan kazanç verilmez.", { size: 45, fill: '#bff', lineHeight: 60, wordWrap: true, wordWrapWidth: patronPanelWidth - 120 // Panel kenarlarından daha fazla boşluk bırak }); patronInfoTxt.anchor.set(0.5, 0); patronInfoTxt.x = patronPanelCenterX; // Bilgi yazısı ile butonlar arasında en fazla 5 satır boşluk olacak şekilde hizala // 5 satır * 60px = 300px boşluk bırakıyoruz patronInfoTxt.y = patronPanelY + patronPanelHeight - 160 - 300 - 90 - 60 - 3 * 60; // 3 satır yukarı (3*60px) patronInfoTxt.visible = false; game.addChild(patronInfoTxt); // Siparişi tamamla butonu var patronSiparisTamamlaBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 90, x: patronPanelCenterX - 180, // 2 satır yukarı: 2 * 60px = 120px y: patronPanelY + patronPanelHeight - 160 - 90 - 120, color: 0x83de44, borderColor: 0x222222, borderWidth: 6 }); patronSiparisTamamlaBtn.visible = false; game.addChild(patronSiparisTamamlaBtn); var patronSiparisTamamlaBtnTxt = new Text2('Siparişi Tamamla', { size: 45, fill: '#fff' }); patronSiparisTamamlaBtnTxt.anchor.set(0.5, 0.5); patronSiparisTamamlaBtnTxt.x = patronSiparisTamamlaBtn.x; // 2 satır yukarı: 2 * 60px = 120px patronSiparisTamamlaBtnTxt.y = patronSiparisTamamlaBtn.y; patronSiparisTamamlaBtnTxt.visible = false; game.addChild(patronSiparisTamamlaBtnTxt); // --- Tamamlanınca Toplam Kazanç Yazısı --- var patronSiparisKazancTxt = new Text2('', { size: 45, fill: '#ffb', lineHeight: 60, wordWrap: true, wordWrapWidth: patronPanelWidth - 120 }); patronSiparisKazancTxt.anchor.set(0.5, 0.5); patronSiparisKazancTxt.x = patronPanelCenterX; // 2 satır yukarı: 2 * 60px = 120px patronSiparisKazancTxt.y = patronSiparisTamamlaBtn.y - 80; patronSiparisKazancTxt.visible = false; game.addChild(patronSiparisKazancTxt); // Siparişi reddet butonu var patronSiparisReddetBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 90, x: patronPanelCenterX + 180, // 2 satır yukarı: 2 * 60px = 120px y: patronPanelY + patronPanelHeight - 160 - 90 - 120, color: 0xd83318, borderColor: 0x222222, borderWidth: 6 }); patronSiparisReddetBtn.visible = false; game.addChild(patronSiparisReddetBtn); var patronSiparisReddetBtnTxt = new Text2('Reddet (%5 Ceza)', { size: 45, fill: '#fff' }); patronSiparisReddetBtnTxt.anchor.set(0.5, 0.5); patronSiparisReddetBtnTxt.x = patronSiparisReddetBtn.x; // 2 satır yukarı: 2 * 60px = 120px patronSiparisReddetBtnTxt.y = patronSiparisReddetBtn.y; patronSiparisReddetBtnTxt.visible = false; game.addChild(patronSiparisReddetBtnTxt); // Paneldeki eski metni kaldır // patronPanelText artık kullanılmıyor, referans kaldırıldı // Sipariş oluşturucu function generatePatronSiparis() { if (patronSiparis.aktif) return; // Sipariş varken yenisi gelmez // Şirket seç var sirket = patronSirketler[Math.floor(Math.random() * patronSirketler.length)]; // 2-10 farklı ürün, her biri 20-300 adet var urunSayisi = 2 + Math.floor(Math.random() * 9); // 2-10 var secilenler = []; var secilenIndexler = []; while (secilenler.length < urunSayisi) { var idx = Math.floor(Math.random() * partTypes.length); if (secilenIndexler.indexOf(idx) === -1) { secilenIndexler.push(idx); var adet = 20 + Math.floor(Math.random() * 281); // 20-300 secilenler.push({ part: partTypes[idx], adet: adet }); } } // Bonus: %2-%10 arası var bonus = 2 + Math.floor(Math.random() * 9); // 2-10 patronSiparis.sirket = sirket; patronSiparis.urunler = secilenler; patronSiparis.toplamAdet = 0; for (var i = 0; i < secilenler.length; i++) { patronSiparis.toplamAdet += secilenler[i].adet; } patronSiparis.bonus = bonus; patronSiparis.aktif = true; patronSiparis.tamamlandi = false; updatePatronSiparisPanel(); } // Panelde siparişi güncelle function updatePatronSiparisPanel() { if (!patronPanel.visible) return; if (!patronSiparis.aktif) { patronSiparisTxt.setText("Şu anda aktif bir kurumsal sipariş yok.\nYeni sipariş için bekleyin."); patronSiparisTamamlaBtn.visible = false; patronSiparisTamamlaBtnTxt.visible = false; patronSiparisReddetBtn.visible = false; patronSiparisReddetBtnTxt.visible = false; patronInfoTxt.visible = true; return; } // Sipariş metni var txt = "[Kurumsal Müşteri: " + patronSiparis.sirket + "]\n"; txt += "Toplu ürün siparişi:\n"; for (var i = 0; i < patronSiparis.urunler.length; i++) { var p = patronSiparis.urunler[i]; var label = p.part === "mouse" ? "MOUSE" : p.part === "klavye" ? "KLAVYE" : p.part === "cpu" ? "CPU" : p.part === "gpu" ? "GPU" : p.part === "monitor" ? "MONITOR" : p.part === "case" ? "KASA" : p.part.toUpperCase(); txt += "- " + label + ": " + p.adet + " adet (Stok: " + (parts[p.part] || 0) + ")\n"; } txt += "\nSipariş tamamlandığında: %" + patronSiparis.bonus + " ek kazanç!"; patronSiparisTxt.setText(txt); patronSiparisTamamlaBtn.visible = true; patronSiparisTamamlaBtnTxt.visible = true; patronSiparisReddetBtn.visible = true; patronSiparisReddetBtnTxt.visible = true; patronInfoTxt.visible = true; // Butonları aktif/pasif yap var tamamlanabilir = true; for (var i = 0; i < patronSiparis.urunler.length; i++) { var p = patronSiparis.urunler[i]; if ((parts[p.part] || 0) < p.adet) { tamamlanabilir = false; break; } } patronSiparisTamamlaBtn.alpha = tamamlanabilir ? 1 : 0.5; patronSiparisTamamlaBtnTxt.setText(tamamlanabilir ? "Siparişi Tamamla" : "Stok Yetersiz"); patronSiparisTamamlaBtn.downEnabled = tamamlanabilir; // --- Tamamlanınca Toplam Kazanç Yazısı --- // Sipariş tamamlanabilir ise toplam kazancı ve bonusu göster if (typeof patronSiparisKazancTxt !== "undefined") { if (patronSiparis.aktif && tamamlanabilir) { var toplamKazanc = 0; for (var i = 0; i < patronSiparis.urunler.length; i++) { toplamKazanc += patronSiparis.urunler[i].adet * 45; } var bonusKazanc = Math.floor(toplamKazanc * patronSiparis.bonus / 100); patronSiparisKazancTxt.setText("Tamamlanınca Toplam Kazanç: ₺" + (toplamKazanc + bonusKazanc) + "\n(Bonus: ₺" + bonusKazanc + ")"); patronSiparisKazancTxt.visible = true; } else { patronSiparisKazancTxt.visible = false; } } } // Siparişi tamamla butonu patronSiparisTamamlaBtn.down = function (x, y, obj) { if (!patronSiparis.aktif) return; // Tüm ürünler stokta mı? var tamamlanabilir = true; for (var i = 0; i < patronSiparis.urunler.length; i++) { var p = patronSiparis.urunler[i]; if ((parts[p.part] || 0) < p.adet) { tamamlanabilir = false; break; } } if (!tamamlanabilir) { tween(patronSiparisTamamlaBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(patronSiparisTamamlaBtn, { tint: 0x83de44 }, { duration: 120 }); } }); return; } // Ürünleri düş for (var i = 0; i < patronSiparis.urunler.length; i++) { var p = patronSiparis.urunler[i]; parts[p.part] -= p.adet; } updatePartsText && updatePartsText(); // Kazanç: toplam ürün adedi * 45 TL (ortalama satış fiyatı) * bonus/100 var toplamKazanc = 0; for (var i = 0; i < patronSiparis.urunler.length; i++) { toplamKazanc += patronSiparis.urunler[i].adet * 45; } var bonusKazanc = Math.floor(toplamKazanc * patronSiparis.bonus / 100); money += toplamKazanc + bonusKazanc; updateMoneyText && updateMoneyText(); patronSiparis.aktif = false; patronSiparis.tamamlandi = true; patronSiparisTxt.setText("Sipariş başarıyla tamamlandı!\nKazanç: ₺" + (toplamKazanc + bonusKazanc) + " (Bonus: ₺" + bonusKazanc + ")"); // Toplam kazanç yazısını göster if (typeof patronSiparisKazancTxt !== "undefined") { patronSiparisKazancTxt.setText("Toplam Kazanç: ₺" + (toplamKazanc + bonusKazanc)); patronSiparisKazancTxt.visible = true; } // Butonları gizle patronSiparisTamamlaBtn.visible = false; patronSiparisTamamlaBtnTxt.visible = false; patronSiparisReddetBtn.visible = false; patronSiparisReddetBtnTxt.visible = false; // Yeni sipariş gelene kadar toplam kazanç yazısı 3 saniye görünsün, sonra gizle if (typeof patronSiparisKazancTxt !== "undefined") { LK.setTimeout(function () { patronSiparisKazancTxt.visible = false; }, 180); // 3 saniye (60fps * 3) } // Yeni sipariş 1-2 dakika sonra gelsin LK.setTimeout(function () { generatePatronSiparis(); updatePatronSiparisPanel(); }, (60 + Math.floor(Math.random() * 61)) * 60); }; // Siparişi reddet butonu patronSiparisReddetBtn.down = function (x, y, obj) { if (!patronSiparis.aktif) return; // Ceza: tüm ürünlerin toplam bedelinin %5'i kadar para düş var toplamBedel = 0; for (var i = 0; i < patronSiparis.urunler.length; i++) { toplamBedel += patronSiparis.urunler[i].adet * 45; } var ceza = Math.floor(toplamBedel * 0.05); money -= ceza; if (money < 0) money = 0; updateMoneyText && updateMoneyText(); patronSiparis.aktif = false; patronSiparis.tamamlandi = false; patronSiparisTxt.setText("Sipariş reddedildi.\nCeza: ₺" + ceza + " ödendi."); patronSiparisTamamlaBtn.visible = false; patronSiparisTamamlaBtnTxt.visible = false; patronSiparisReddetBtn.visible = false; patronSiparisReddetBtnTxt.visible = false; // Yeni sipariş 1-2 dakika sonra gelsin LK.setTimeout(function () { generatePatronSiparis(); updatePatronSiparisPanel(); }, (60 + Math.floor(Math.random() * 61)) * 60); }; // Panel açıldığında siparişi göster patronBtn.down = function (x, y, obj) { patronPanel.visible = true; patronPanelTitle.visible = true; patronSiparisTxt.visible = true; patronInfoTxt.visible = true; patronKapatBtn.visible = true; patronKapatBtnTxt.visible = true; patronSiparisTamamlaBtn.visible = patronSiparis.aktif; patronSiparisTamamlaBtnTxt.visible = patronSiparis.aktif; patronSiparisReddetBtn.visible = patronSiparis.aktif; patronSiparisReddetBtnTxt.visible = patronSiparis.aktif; updatePatronSiparisPanel(); // Hide homepage UI (including PATRON button) if (typeof patronBtn !== "undefined") patronBtn.visible = false; if (typeof patronBtnTxt !== "undefined") patronBtnTxt.visible = false; // Disable all factory buttons while patron panel is open if (typeof factoryBtns !== "undefined" && Array.isArray(factoryBtns)) { for (var i = 0; i < factoryBtns.length; i++) { if (factoryBtns[i]) { if (factoryBtns[i]._origDown === undefined && factoryBtns[i].down) { factoryBtns[i]._origDown = factoryBtns[i].down; } factoryBtns[i].down = function () { return true; }; } } } if (typeof factoryUnlockBtns !== "undefined" && Array.isArray(factoryUnlockBtns)) { for (var i = 0; i < factoryUnlockBtns.length; i++) { if (factoryUnlockBtns[i]) { if (factoryUnlockBtns[i]._origDown === undefined && factoryUnlockBtns[i].down) { factoryUnlockBtns[i]._origDown = factoryUnlockBtns[i].down; } factoryUnlockBtns[i].down = function () { return true; }; } } } if (typeof prodBtns !== "undefined" && Array.isArray(prodBtns)) { for (var i = 0; i < prodBtns.length; i++) { if (prodBtns[i]) { if (prodBtns[i]._origDown === undefined && prodBtns[i].down) { prodBtns[i]._origDown = prodBtns[i].down; } prodBtns[i].down = function () { return true; }; } } } if (typeof factoryAutoBtns !== "undefined" && Array.isArray(factoryAutoBtns)) { for (var i = 0; i < factoryAutoBtns.length; i++) { if (factoryAutoBtns[i]) { if (factoryAutoBtns[i]._origDown === undefined && factoryAutoBtns[i].down) { factoryAutoBtns[i]._origDown = factoryAutoBtns[i].down; } factoryAutoBtns[i].down = function () { return true; }; } } } // Defensive: bring panel to front if (game.setChildIndex) { game.setChildIndex(patronPanel, game.children.length - 1); game.setChildIndex(patronPanelTitle, game.children.length - 1); game.setChildIndex(patronSiparisTxt, game.children.length - 1); game.setChildIndex(patronInfoTxt, game.children.length - 1); game.setChildIndex(patronKapatBtn, game.children.length - 1); game.setChildIndex(patronKapatBtnTxt, game.children.length - 1); game.setChildIndex(patronSiparisTamamlaBtn, game.children.length - 1); game.setChildIndex(patronSiparisTamamlaBtnTxt, game.children.length - 1); game.setChildIndex(patronSiparisReddetBtn, game.children.length - 1); game.setChildIndex(patronSiparisReddetBtnTxt, game.children.length - 1); } }; // Panel kapatınca butonları gizle if (typeof patronKapatBtn !== "undefined" && patronKapatBtn) { patronKapatBtn.down = function (x, y, obj) { patronPanel.visible = false; patronPanelTitle.visible = false; patronSiparisTxt.visible = false; patronInfoTxt.visible = false; patronKapatBtn.visible = false; patronKapatBtnTxt.visible = false; patronSiparisTamamlaBtn.visible = false; patronSiparisTamamlaBtnTxt.visible = false; patronSiparisReddetBtn.visible = false; patronSiparisReddetBtnTxt.visible = false; if (typeof patronBtn !== "undefined") patronBtn.visible = true; if (typeof patronBtnTxt !== "undefined") patronBtnTxt.visible = true; // Re-enable all factory buttons when patron panel closes if (typeof factoryBtns !== "undefined" && Array.isArray(factoryBtns)) { for (var i = 0; i < factoryBtns.length; i++) { if (factoryBtns[i] && factoryBtns[i]._origDown) { factoryBtns[i].down = factoryBtns[i]._origDown; delete factoryBtns[i]._origDown; } } } if (typeof factoryUnlockBtns !== "undefined" && Array.isArray(factoryUnlockBtns)) { for (var i = 0; i < factoryUnlockBtns.length; i++) { if (factoryUnlockBtns[i] && factoryUnlockBtns[i]._origDown) { factoryUnlockBtns[i].down = factoryUnlockBtns[i]._origDown; delete factoryUnlockBtns[i]._origDown; } } } if (typeof prodBtns !== "undefined" && Array.isArray(prodBtns)) { for (var i = 0; i < prodBtns.length; i++) { if (prodBtns[i] && prodBtns[i]._origDown) { prodBtns[i].down = prodBtns[i]._origDown; delete prodBtns[i]._origDown; } } } if (typeof factoryAutoBtns !== "undefined" && Array.isArray(factoryAutoBtns)) { for (var i = 0; i < factoryAutoBtns.length; i++) { if (factoryAutoBtns[i] && factoryAutoBtns[i]._origDown) { factoryAutoBtns[i].down = factoryAutoBtns[i]._origDown; delete factoryAutoBtns[i]._origDown; } } } }; } // Oyun başında ilk siparişi oluştur LK.setTimeout(function () { if (!patronSiparis.aktif) { generatePatronSiparis(); } }, 120); // Paneldeki eski metni kaldır // (patronPanelText artık kullanılmıyor) // Patron panel close button (bottom center) - Madenler paneli ile aynı şekilde, büyük ve kırmızı çerçeveli var patronKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 360, height: 180, x: patronPanel.x + patronPanel.width / 2, y: patronPanel.y + patronPanel.height - 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); patronKapatBtn.visible = false; game.addChild(patronKapatBtn); // Kapat butonu için X simgesi (Unicode heavy multiplication X) var patronKapatBtnIcon = new Text2("\u2716", { size: 81, fill: '#ff2222' }); patronKapatBtnIcon.anchor.set(1, 0.5); patronKapatBtnIcon.x = patronKapatBtn.x - 60; patronKapatBtnIcon.y = patronKapatBtn.y; patronKapatBtnIcon.visible = false; game.addChild(patronKapatBtnIcon); var patronKapatBtnTxt = new Text2('Kapat', { size: 96, fill: '#ff2222' }); patronKapatBtnTxt.anchor.set(0.5, 0.5); patronKapatBtnTxt.x = patronKapatBtn.x; patronKapatBtnTxt.y = patronKapatBtn.y; patronKapatBtnTxt.visible = false; game.addChild(patronKapatBtnTxt); // Patron button opens panel patronBtn.down = function (x, y, obj) { // Patron Paneli arkaplan ve içeriğini sıfırla // Paneli ve tüm içeriğini görünmez yap, sonra sadece gerekli olanları aç patronPanel.visible = false; patronPanelTitle.visible = false; patronSiparisTxt.visible = false; patronInfoTxt.visible = false; patronKapatBtn.visible = false; patronKapatBtnTxt.visible = false; if (typeof patronKapatBtnIcon !== "undefined") patronKapatBtnIcon.visible = false; patronSiparisTamamlaBtn.visible = false; patronSiparisTamamlaBtnTxt.visible = false; patronSiparisReddetBtn.visible = false; patronSiparisReddetBtnTxt.visible = false; if (typeof patronSiparisKazancTxt !== "undefined") patronSiparisKazancTxt.visible = false; // Paneli ve başlığı tekrar aç patronPanel.visible = true; patronPanelTitle.visible = true; patronSiparisTxt.visible = true; patronInfoTxt.visible = true; patronKapatBtn.visible = true; patronKapatBtnTxt.visible = true; if (typeof patronKapatBtnIcon !== "undefined") patronKapatBtnIcon.visible = true; patronSiparisTamamlaBtn.visible = patronSiparis.aktif; patronSiparisTamamlaBtnTxt.visible = patronSiparis.aktif; patronSiparisReddetBtn.visible = patronSiparis.aktif; patronSiparisReddetBtnTxt.visible = patronSiparis.aktif; updatePatronSiparisPanel(); // Hide homepage UI (including PATRON button) if (typeof patronBtn !== "undefined") patronBtn.visible = false; if (typeof patronBtnTxt !== "undefined") patronBtnTxt.visible = false; // Defensive: bring panel to front if (game.setChildIndex) { game.setChildIndex(patronPanel, game.children.length - 1); game.setChildIndex(patronPanelTitle, game.children.length - 1); game.setChildIndex(patronSiparisTxt, game.children.length - 1); game.setChildIndex(patronInfoTxt, game.children.length - 1); game.setChildIndex(patronKapatBtn, game.children.length - 1); game.setChildIndex(patronKapatBtnTxt, game.children.length - 1); if (typeof patronKapatBtnIcon !== "undefined") game.setChildIndex(patronKapatBtnIcon, game.children.length - 1); game.setChildIndex(patronSiparisTamamlaBtn, game.children.length - 1); game.setChildIndex(patronSiparisTamamlaBtnTxt, game.children.length - 1); game.setChildIndex(patronSiparisReddetBtn, game.children.length - 1); game.setChildIndex(patronSiparisReddetBtnTxt, game.children.length - 1); } }; // Patron panel close button patronKapatBtn.down = function (x, y, obj) { patronPanel.visible = false; patronPanelTitle.visible = false; patronSiparisTxt.visible = false; patronInfoTxt.visible = false; patronKapatBtn.visible = false; patronKapatBtnTxt.visible = false; if (typeof patronKapatBtnIcon !== "undefined") patronKapatBtnIcon.visible = false; patronSiparisTamamlaBtn.visible = false; patronSiparisTamamlaBtnTxt.visible = false; patronSiparisReddetBtn.visible = false; patronSiparisReddetBtnTxt.visible = false; // Restore homepage UI (including PATRON button) if (typeof patronBtn !== "undefined") patronBtn.visible = true; if (typeof patronBtnTxt !== "undefined") patronBtnTxt.visible = true; }; // --- Hide PATRON button when any panel is open --- // Helper: list of all panels that should hide PATRON button when open function updatePatronBtnVisibility() { // Patron butonunun görünürlüğünü kontrol et: Sadece patronPanel açıkken gizle, diğer panelleri hariç tut var anyPanelOpen = patronPanel.visible; if (typeof patronBtn !== "undefined") patronBtn.visible = !anyPanelOpen; if (typeof patronBtnTxt !== "undefined") patronBtnTxt.visible = !anyPanelOpen; } // Patch all panel open/close logic to call updatePatronBtnVisibility // (Do this with a timer for robustness) LK.setInterval(updatePatronBtnVisibility, 10); // overlays and overlay logic removed function showPanelOverlay(panelObj) {} function hidePanelOverlay() {} // --- Ava: Helper to hide all homepage/anasayfa UI and disable all their input when any panel is open --- // Also disables all factory buttons (upgrade, unlock, prod, auto) and disables factory panel clicks when any panel is open function setHomepageUIEnabled(enabled) { // (fullscreen overlay logic removed) // List all homepage/anasayfa UI elements including all game elements var homepageUI = [magazaBtn, magazaBtnTxt, yatirimBtn, yatirimBtnTxt, bankBtn, bankBtnTxt, soundBtn, soundBtnTxt, newPageBtn, newPageBtnTxt, madenlerBtn, madenlerBtnTxt, madenlerBtnMineImg, calisanlarBtnImg, /* infoBtn, infoBtnTxt, howToBtn, howToBtnTxt, */borcOdeBtn, borcOdeBtnTxt, moneyTxt, borcTxt, borcTimeTxt, partsTxt, partsPanel, offerPanel, offerTitle, offerPartTxt, offerAmountTxt, offerPriceTxt, offerBtn, offerBtnTxt, offerTimeTxt, sellPanel, sellTitle, sellPartTxt, sellAmountTxt, sellPriceTxt, sellBtn, sellBtnTxt, sellOfferTimeTxt]; // Hide all factories, mines, stores and their UI elements if (typeof factories !== "undefined") { for (var i = 0; i < factories.length; i++) { if (factories[i]) homepageUI.push(factories[i]); } } if (typeof mines !== "undefined") { for (var i = 0; i < mines.length; i++) { if (mines[i]) homepageUI.push(mines[i]); } } if (typeof store !== "undefined") homepageUI.push(store); if (typeof store2 !== "undefined") homepageUI.push(store2); if (typeof store3 !== "undefined") homepageUI.push(store3); if (typeof store4 !== "undefined") homepageUI.push(store4); // Add raw material texts if (typeof copperRawTxt !== "undefined") homepageUI.push(copperRawTxt); if (typeof siliconRawTxt !== "undefined") homepageUI.push(siliconRawTxt); if (typeof ironRawTxt !== "undefined") homepageUI.push(ironRawTxt); for (var i = 0; i < homepageUI.length; i++) { if (typeof homepageUI[i] !== "undefined" && homepageUI[i] && typeof homepageUI[i].visible === "boolean") { homepageUI[i].visible = !!enabled; } // Defensive: also disable input by removing .down/.move/.up handlers if disabled if (typeof homepageUI[i] !== "undefined" && homepageUI[i]) { if (!enabled) { if (homepageUI[i]._origDown === undefined && homepageUI[i].down) { homepageUI[i]._origDown = homepageUI[i].down; } if (homepageUI[i]._origMove === undefined && homepageUI[i].move) { homepageUI[i]._origMove = homepageUI[i].move; } if (homepageUI[i]._origUp === undefined && homepageUI[i].up) { homepageUI[i]._origUp = homepageUI[i].up; } homepageUI[i].down = function () { return true; }; homepageUI[i].move = function () { return true; }; homepageUI[i].up = function () { return true; }; } else { if (homepageUI[i]._origDown) { homepageUI[i].down = homepageUI[i]._origDown; } if (homepageUI[i]._origMove) { homepageUI[i].move = homepageUI[i]._origMove; } if (homepageUI[i]._origUp) { homepageUI[i].up = homepageUI[i]._origUp; } } } } // --- Ava: Disable all factory buttons and factory panel clicks when any panel is open --- if (typeof factoryBtns !== "undefined" && Array.isArray(factoryBtns)) { for (var i = 0; i < factoryBtns.length; i++) { if (factoryBtns[i]) { if (!enabled) { if (factoryBtns[i]._origDown === undefined && factoryBtns[i].down) { factoryBtns[i]._origDown = factoryBtns[i].down; } factoryBtns[i].down = function () { return true; }; } else { if (factoryBtns[i]._origDown) { factoryBtns[i].down = factoryBtns[i]._origDown; delete factoryBtns[i]._origDown; } } } } } if (typeof factoryUnlockBtns !== "undefined" && Array.isArray(factoryUnlockBtns)) { for (var i = 0; i < factoryUnlockBtns.length; i++) { if (factoryUnlockBtns[i]) { if (!enabled) { if (factoryUnlockBtns[i]._origDown === undefined && factoryUnlockBtns[i].down) { factoryUnlockBtns[i]._origDown = factoryUnlockBtns[i].down; } factoryUnlockBtns[i].down = function () { return true; }; } else { if (factoryUnlockBtns[i]._origDown) { factoryUnlockBtns[i].down = factoryUnlockBtns[i]._origDown; delete factoryUnlockBtns[i]._origDown; } } } } } if (typeof prodBtns !== "undefined" && Array.isArray(prodBtns)) { for (var i = 0; i < prodBtns.length; i++) { if (prodBtns[i]) { if (!enabled) { if (prodBtns[i]._origDown === undefined && prodBtns[i].down) { prodBtns[i]._origDown = prodBtns[i].down; } prodBtns[i].down = function () { return true; }; } else { if (prodBtns[i]._origDown) { prodBtns[i].down = prodBtns[i]._origDown; delete prodBtns[i]._origDown; } } } } } if (typeof factoryAutoBtns !== "undefined" && Array.isArray(factoryAutoBtns)) { for (var i = 0; i < factoryAutoBtns.length; i++) { if (factoryAutoBtns[i]) { if (!enabled) { if (factoryAutoBtns[i]._origDown === undefined && factoryAutoBtns[i].down) { factoryAutoBtns[i]._origDown = factoryAutoBtns[i].down; } factoryAutoBtns[i].down = function () { return true; }; } else { if (factoryAutoBtns[i]._origDown) { factoryAutoBtns[i].down = factoryAutoBtns[i]._origDown; delete factoryAutoBtns[i]._origDown; } } } } } // Defensive: also disable click on the factory panel itself (the big image) if (typeof factories !== "undefined" && Array.isArray(factories)) { for (var i = 0; i < factories.length; i++) { if (factories[i]) { if (!enabled) { if (factories[i]._origDown === undefined && factories[i].down) { factories[i]._origDown = factories[i].down; } factories[i].down = function () { return true; }; } else { if (factories[i]._origDown) { factories[i].down = factories[i]._origDown; delete factories[i]._origDown; } } } } } // --- Ava: Show Mevduat button and text again when all panels except Mevduat are closed --- if (enabled) { if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = true; if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = true; // Info and How To Play buttons are never shown } } // --- Mağaza Button --- var magazaBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 70 }); magazaBtn.x = moneyTxt.x - 220; magazaBtn.y = 40; LK.gui.top.addChild(magazaBtn); var magazaBtnTxt = new Text2('Mağaza', { size: 36, fill: '#fff' }); magazaBtnTxt.anchor.set(0.5, 0.5); magazaBtnTxt.x = magazaBtn.x; magazaBtnTxt.y = magazaBtn.y; LK.gui.top.addChild(magazaBtnTxt); // Mağaza butonuna tıklanınca açılır pencereyi göster // --- Ava: Resize and center all popup/panel windows to 90% of screen and center them --- var panelWidth = Math.floor(2048 * 0.9); var panelHeight = Math.floor(2732 * 0.9); var panelX = Math.floor(2048 / 2); var panelY = Math.floor(2732 / 2); var magazaPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: panelWidth, height: panelHeight, x: panelX, y: panelY }); magazaPanel.visible = false; game.addChild(magazaPanel); var magazaPanelTitle = new Text2('Mağaza', { size: 36, fill: '#fff' }); magazaPanelTitle.anchor.set(0.5, 0); magazaPanelTitle.x = magazaPanel.x; magazaPanelTitle.y = magazaPanel.y - magazaPanel.height / 2 + 30; magazaPanelTitle.visible = false; game.addChild(magazaPanelTitle); var magazaPanelText = new Text2('Burada mağaza ile ilgili içerik veya açıklama eklenebilir.', { size: 36, fill: '#fff' }); magazaPanelText.anchor.set(0.5, 0.5); magazaPanelText.x = magazaPanel.x; magazaPanelText.y = magazaPanel.y - 120; magazaPanelText.visible = false; game.addChild(magazaPanelText); // Muhasebe bilgileri başlığı var magazaMuhasebeTitle = new Text2('Muhasebe Bilgileri', { size: 36, fill: '#ffb' }); magazaMuhasebeTitle.anchor.set(0.5, 0); magazaMuhasebeTitle.x = magazaPanel.x; magazaMuhasebeTitle.y = magazaPanel.y - 30; magazaMuhasebeTitle.visible = false; game.addChild(magazaMuhasebeTitle); // Muhasebe detayları var magazaMuhasebeText = new Text2('', { size: 36, fill: '#fff' }); magazaMuhasebeText.anchor.set(0.5, 0); magazaMuhasebeText.x = magazaPanel.x; magazaMuhasebeText.y = magazaPanel.y + 20; magazaMuhasebeText.visible = false; game.addChild(magazaMuhasebeText); // Muhasebe bilgilerini güncelleyen fonksiyon function updateMagazaMuhasebeText() { // Toplam satış adedi ve toplam gelir hesapla var toplamSatis = 0; var toplamGelir = 0; for (var i = 0; i < partTypes.length; i++) { // Her part için satılan miktarı ve gelirini hesapla // Satışlar, parts dizisinden değil, toplam üretilen - elde kalan ile bulunabilir // Basit bir örnek: toplam üretilen ve satılanı takip etmiyorsak, sadece mevcut stoğu göster // Gelişmiş: Satışları takip etmek için global değişkenler eklenebilir // Burada örnek olarak sadece mevcut stok ve para gösterelim // Gelişmiş takip için satılan miktarları ayrıca bir dizi ile tutmak gerekir // Şimdilik sadece mevcut stok ve para gösterelim toplamSatis += parts[partTypes[i]]; } // Toplam gelir olarak mevcut parayı gösterelim (örnek) toplamGelir = money; magazaMuhasebeText.setText("Mevcut Stok (adet): " + toplamSatis + "\nKasadaki Para: ₺" + toplamGelir + (typeof borc !== "undefined" && borc > 0 ? "\nBorç: ₺" + borc : "")); } // Paneli aç/kapat fonksiyonları magazaBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) { clickSound.play(); } } magazaPanel.visible = true; magazaPanelTitle.visible = true; magazaPanelText.visible = true; magazaKapatBtn.visible = true; magazaKapatBtnTxt.visible = true; magazaMuhasebeTitle.visible = true; magazaMuhasebeText.visible = true; updateMagazaMuhasebeText(); // --- Ava: Hide only the background elements under the panel area, keep other elements visible --- // Save which elements are hidden for this panel if (!magazaPanel._hiddenBackgrounds) magazaPanel._hiddenBackgrounds = []; for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; // Hide only if: visible, not the panel or its content, not a Text2, not a button, and is under the panel area if (child && typeof child.visible === "boolean" && child.visible && child !== magazaPanel && child !== magazaPanelTitle && child !== magazaPanelText && child !== magazaKapatBtn && child !== magazaKapatBtnTxt && child !== magazaKapatBtnIcon && child !== magazaMuhasebeTitle && child !== magazaMuhasebeText && !(child instanceof Text2) && !(child.assetId && child.assetId.indexOf("button") === 0) && // Check if child is under the panel area typeof child.x === "number" && typeof child.y === "number" && child.x + (child.width || 0) > magazaPanel.x - magazaPanel.width / 2 && child.x < magazaPanel.x + magazaPanel.width / 2 && child.y + (child.height || 0) > magazaPanel.y - magazaPanel.height / 2 && child.y < magazaPanel.y + magazaPanel.height / 2) { child._oldVisible = child.visible; child.visible = false; magazaPanel._hiddenBackgrounds.push(child); } } // Paneli ve tüm içeriğini en öne getir (butonlar dahil) if (game.setChildIndex) { game.setChildIndex(magazaPanel, game.children.length - 1); game.setChildIndex(magazaPanelTitle, game.children.length - 1); game.setChildIndex(magazaPanelText, game.children.length - 1); game.setChildIndex(magazaMuhasebeTitle, game.children.length - 1); game.setChildIndex(magazaMuhasebeText, game.children.length - 1); // Kapat butonu ve X simgesi ve yazısı en önde game.setChildIndex(magazaKapatBtn, game.children.length - 1); game.setChildIndex(magazaKapatBtnTxt, game.children.length - 1); if (typeof magazaKapatBtnIcon !== "undefined") { game.setChildIndex(magazaKapatBtnIcon, game.children.length - 1); } } }; // Paneli kapatmak için bir kapat butonu ekle // --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli --- // Panelin sağ üst köşesine hizala, %100 büyüklükte (240x120) var magazaKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 360, //{4g} // %50 artırıldı height: 180, //{4h} // %50 artırıldı // Alt orta: panelin alt kenarının ortası, 60px yukarıda x: magazaPanel.x, y: magazaPanel.y + magazaPanel.height / 2 - 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); magazaKapatBtn.visible = false; game.addChild(magazaKapatBtn); // Kapat butonu için X simgesi (Unicode heavy multiplication X) var magazaKapatBtnIcon = new Text2("\u2716", { size: 81, //{4o} // %50 artırıldı fill: '#ff2222' }); magazaKapatBtnIcon.anchor.set(1, 0.5); magazaKapatBtnIcon.x = magazaKapatBtn.x - 60; magazaKapatBtnIcon.y = magazaKapatBtn.y; magazaKapatBtnIcon.visible = false; game.addChild(magazaKapatBtnIcon); var magazaKapatBtnTxt = new Text2('Kapat', { size: 96, //{4r} // %50 artırıldı fill: '#ff2222' }); magazaKapatBtnTxt.anchor.set(0.5, 0.5); magazaKapatBtnTxt.x = magazaKapatBtn.x; magazaKapatBtnTxt.y = magazaKapatBtn.y; magazaKapatBtnTxt.visible = false; game.addChild(magazaKapatBtnTxt); magazaKapatBtn.down = function (x, y, obj) { if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) { clickSound.play(); } } magazaPanel.visible = false; magazaPanelTitle.visible = false; magazaPanelText.visible = false; magazaKapatBtn.visible = false; magazaKapatBtnTxt.visible = false; magazaMuhasebeTitle.visible = false; magazaMuhasebeText.visible = false; // --- Ava: Restore background elements hidden under the panel area --- if (magazaPanel._hiddenBackgrounds && magazaPanel._hiddenBackgrounds.length) { for (var i = 0; i < magazaPanel._hiddenBackgrounds.length; i++) { var child = magazaPanel._hiddenBackgrounds[i]; if (child && typeof child.visible === "boolean") { if (typeof child._oldVisible !== "undefined") { child.visible = child._oldVisible; delete child._oldVisible; } else { child.visible = true; } } } magazaPanel._hiddenBackgrounds = []; } // Restore all homepage elements setHomepageUIEnabled(true); }; // --- Yatırım Button ve Açılır Pencere --- // Yatırım butonunu mağaza butonunun soluna ekle var yatirimBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 70 }); yatirimBtn.x = magazaBtn.x - 220; yatirimBtn.y = magazaBtn.y; LK.gui.top.addChild(yatirimBtn); var yatirimBtnTxt = new Text2('Yatırım', { size: 36, fill: '#fff' }); yatirimBtnTxt.anchor.set(0.5, 0.5); yatirimBtnTxt.x = yatirimBtn.x; yatirimBtnTxt.y = yatirimBtn.y; LK.gui.top.addChild(yatirimBtnTxt); // Açılır pencereyi oluştur (başta görünmez) - EKRANIN EN ÜSTÜNDE // Yatırım panelini tam ekranın ortasına ve %90 genişlikte/ekran yüksekliğinin %70'i kadar yap var yatirimPanelWidth = Math.floor(2048 * 0.9); var yatirimPanelHeight = Math.floor(2732 * 0.7); var yatirimPanelX = Math.floor(2048 / 2); var yatirimPanelY = Math.floor(2732 / 2); var yatirimPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: yatirimPanelWidth, height: yatirimPanelHeight, x: yatirimPanelX, y: yatirimPanelY }); yatirimPanel.visible = false; // Yatırım panelini ve başlığını en önde göstermek için game üstünde en sona ekle game.addChild(yatirimPanel); game.setChildIndex(yatirimPanel, game.children.length - 1); var yatirimTitle = new Text2('Yatırım - Popüler Coinler', { size: 40, fill: '#fff' }); yatirimTitle.anchor.set(0.5, 0); // Panelin üst kenarına ortalı hizala yatirimTitle.x = yatirimPanel.x; yatirimTitle.y = yatirimPanel.y - yatirimPanel.height / 2 + 20; yatirimTitle.visible = false; game.addChild(yatirimTitle); game.setChildIndex(yatirimTitle, game.children.length - 1); // 12 popüler coin listesi var coinList = [{ name: "Bitcoin", symbol: "BTC" }, { name: "Ethereum", symbol: "ETH" }, { name: "Tether", symbol: "USDT" }, { name: "BNB", symbol: "BNB" }, { name: "Solana", symbol: "SOL" }, { name: "XRP", symbol: "XRP" }, { name: "Dogecoin", symbol: "DOGE" }, { name: "Cardano", symbol: "ADA" }, { name: "Toncoin", symbol: "TON" }, { name: "Shiba Inu", symbol: "SHIB" }, { name: "Avalanche", symbol: "AVAX" }, { name: "Polkadot", symbol: "DOT" }]; // Coin fiyatları ve kullanıcı bakiyesi var coinPrices = []; var coinHoldings = []; for (var i = 0; i < coinList.length; i++) { // Başlangıç fiyatları: BTC 1.000.000, ETH 50.000, diğerleri 10.000-1.000 arası var base = 1000000; if (i === 1) { base = 50000; } else if (i > 1) { base = 10000 - i * 900; } coinPrices[i] = base; coinHoldings[i] = 0; } // Coin ortalama maliyetlerini ve toplam harcanan tutarı tutan diziler var coinTotalCost = []; var coinAvgCost = []; for (var i = 0; i < coinList.length; i++) { coinTotalCost[i] = 0; coinAvgCost[i] = 0; } // Coin fiyatlarını gösterecek ve al/sat butonları var coinTxts = []; var coinPriceTxts = []; var coinHoldingTxts = []; var coinBuyBtns = []; var coinSellBtns = []; var coinBuyBtnTxts = []; var coinSellBtnTxts = []; var coinBuyInputTxts = []; var coinSellInputTxts = []; var coinBuyAmounts = []; var coinSellAmounts = []; for (var i = 0; i < coinList.length; i++) { // Coin adı (sadece parantez içindekiler, yani symbol) var coinTxt = new Text2(i + 1 + ". " + coinList[i].symbol, { size: 40, fill: '#bff' }); coinTxt.anchor.set(0, 0); // Panelin soluna daha yakın hizala (daha sola çek) coinTxt.x = yatirimPanel.x - yatirimPanel.width / 2 + 30; coinTxt.y = yatirimPanel.y + 80 + i * 75; coinTxt.visible = false; game.addChild(coinTxt); coinTxts.push(coinTxt); // Fiyat var coinPriceTxt = new Text2("₺" + coinPrices[i], { size: 40, fill: '#fff' }); coinPriceTxt.anchor.set(0, 0); // Panelin soluna daha yakın hizala coinPriceTxt.x = yatirimPanel.x - yatirimPanel.width / 2 + 210; coinPriceTxt.y = coinTxt.y; coinPriceTxt.visible = false; game.addChild(coinPriceTxt); coinPriceTxts.push(coinPriceTxt); // Kullanıcı bakiyesi var coinHoldingTxt = new Text2("Adet: 0", { size: 40, fill: '#ffb' }); coinHoldingTxt.anchor.set(0, 0); // Panelin soluna daha yakın hizala coinHoldingTxt.x = yatirimPanel.x - yatirimPanel.width / 2 + 370; coinHoldingTxt.y = coinTxt.y; coinHoldingTxt.visible = false; game.addChild(coinHoldingTxt); coinHoldingTxts.push(coinHoldingTxt); // Al butonu var buyBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 100, height: 60, // Panelin SAĞ kenarına hizala (yeni genişlik: 950) x: yatirimPanel.x + yatirimPanel.width / 2 - 150, y: coinTxt.y + 18 }); buyBtn.visible = false; game.addChild(buyBtn); coinBuyBtns.push(buyBtn); var buyBtnTxt = new Text2('Al', { size: 40, fill: '#fff' }); buyBtnTxt.anchor.set(0.5, 0.5); buyBtnTxt.x = buyBtn.x; buyBtnTxt.y = buyBtn.y; buyBtnTxt.visible = false; game.addChild(buyBtnTxt); coinBuyBtnTxts.push(buyBtnTxt); // Sat butonu var sellBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 100, height: 60, // Panelin SAĞ kenarına hizala, buyBtn'in sağında 130px boşluk bırak (yeni genişlik: 950) x: yatirimPanel.x + yatirimPanel.width / 2 - 50, y: coinTxt.y + 18 }); sellBtn.visible = false; game.addChild(sellBtn); coinSellBtns.push(sellBtn); var sellBtnTxt = new Text2('Sat', { size: 40, fill: '#fff' }); sellBtnTxt.anchor.set(0.5, 0.5); sellBtnTxt.x = sellBtn.x; sellBtnTxt.y = sellBtn.y; sellBtnTxt.visible = false; game.addChild(sellBtnTxt); coinSellBtnTxts.push(sellBtnTxt); // Alım miktarı (sabit 1, artırmak için input yok, mobilde kolaylık için) // Aradaki süre/label kaldırıldı coinBuyAmounts[i] = 1; coinSellAmounts[i] = 1; } // --- Mevduat (Deposit) Section removed from Yatırım panel --- // Paneli kapatmak için bir kapat butonu ekle // --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli --- var yatirimKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 360, //{6e} // %50 artırıldı height: 180, //{6f} // %50 artırıldı // Alt orta: panelin alt kenarının ortası, 60px yukarıda x: yatirimPanel.x, y: yatirimPanel.y + yatirimPanel.height / 2 - 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); yatirimKapatBtn.visible = false; game.addChild(yatirimKapatBtn); // Kapat butonu için X simgesi var yatirimKapatBtnIcon = new Text2("\u2716", { size: 81, //{6n} // %50 artırıldı fill: '#ff2222' }); yatirimKapatBtnIcon.anchor.set(1, 0.5); yatirimKapatBtnIcon.x = yatirimKapatBtn.x - 60; yatirimKapatBtnIcon.y = yatirimKapatBtn.y; yatirimKapatBtnIcon.visible = false; game.addChild(yatirimKapatBtnIcon); var yatirimKapatBtnTxt = new Text2('Kapat', { size: 96, //{6q} // %50 artırıldı fill: '#ff2222' }); yatirimKapatBtnTxt.anchor.set(0.5, 0.5); yatirimKapatBtnTxt.x = yatirimKapatBtn.x; yatirimKapatBtnTxt.y = yatirimKapatBtn.y; yatirimKapatBtnTxt.visible = false; game.addChild(yatirimKapatBtnTxt); // Panel açma yatirimBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) { clickSound.play(); } } yatirimPanel.visible = true; yatirimTitle.visible = true; yatirimKapatBtn.visible = true; yatirimKapatBtnTxt.visible = true; // --- Ava: Hide only the background elements under the panel area, keep other elements visible --- if (!yatirimPanel._hiddenBackgrounds) yatirimPanel._hiddenBackgrounds = []; for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; if (child && typeof child.visible === "boolean" && child.visible && child !== yatirimPanel && child !== yatirimTitle && child !== yatirimKapatBtn && child !== yatirimKapatBtnTxt && !(child instanceof Text2) && !(child.assetId && child.assetId.indexOf("button") === 0) && typeof child.x === "number" && typeof child.y === "number" && child.x + (child.width || 0) > yatirimPanel.x - yatirimPanel.width / 2 && child.x < yatirimPanel.x + yatirimPanel.width / 2 && child.y + (child.height || 0) > yatirimPanel.y - yatirimPanel.height / 2 && child.y < yatirimPanel.y + yatirimPanel.height / 2) { child._oldVisible = child.visible; child.visible = false; yatirimPanel._hiddenBackgrounds.push(child); } } // Panelin merkezine göre coin paneli elemanlarını hizala for (var i = 0; i < coinTxts.length; i++) { // Panelin soluna hizala coinTxts[i].x = yatirimPanel.x - yatirimPanel.width / 2 + 30; coinTxts[i].y = yatirimPanel.y - yatirimPanel.height / 2 + 80 + i * 75; coinPriceTxts[i].x = yatirimPanel.x - yatirimPanel.width / 2 + 210; coinPriceTxts[i].y = coinTxts[i].y; coinHoldingTxts[i].x = yatirimPanel.x - yatirimPanel.width / 2 + 370; coinHoldingTxts[i].y = coinTxts[i].y; // Al ve Sat butonlarını panelin sağ kenarına hizala (panelin sağ kenarından 180px ve 50px içeride) coinBuyBtns[i].x = yatirimPanel.x + yatirimPanel.width / 2 - 180; coinBuyBtns[i].y = coinTxts[i].y + 18; coinSellBtns[i].x = yatirimPanel.x + yatirimPanel.width / 2 - 50; coinSellBtns[i].y = coinTxts[i].y + 18; coinBuyBtnTxts[i].x = coinBuyBtns[i].x; coinBuyBtnTxts[i].y = coinBuyBtns[i].y; coinSellBtnTxts[i].x = coinSellBtns[i].x; coinSellBtnTxts[i].y = coinSellBtns[i].y; coinTxts[i].visible = true; coinPriceTxts[i].visible = true; coinHoldingTxts[i].visible = true; coinBuyBtns[i].visible = true; coinSellBtns[i].visible = true; coinBuyBtnTxts[i].visible = true; coinSellBtnTxts[i].visible = true; } // Kapat butonunu panelin alt kenarının ortasına hizala yatirimKapatBtn.x = yatirimPanel.x; yatirimKapatBtn.y = yatirimPanel.y + yatirimPanel.height / 2 - 60; yatirimKapatBtnTxt.x = yatirimKapatBtn.x; yatirimKapatBtnTxt.y = yatirimKapatBtn.y; yatirimTitle.x = yatirimPanel.x; yatirimTitle.y = yatirimPanel.y - yatirimPanel.height / 2 + 20; updateCoinPanel(); // Panel ve içeriğini en öne getir if (game.setChildIndex) { // Panel ve tüm içeriğini en öne getir (butonlar dahil) game.setChildIndex(yatirimPanel, game.children.length - 1); game.setChildIndex(yatirimTitle, game.children.length - 1); // Kapat butonu ve X simgesi ve yazısı en önde game.setChildIndex(yatirimKapatBtn, game.children.length - 1); game.setChildIndex(yatirimKapatBtnTxt, game.children.length - 1); if (typeof yatirimKapatBtnIcon !== "undefined") { game.setChildIndex(yatirimKapatBtnIcon, game.children.length - 1); } for (var i = 0; i < coinTxts.length; i++) { game.setChildIndex(coinTxts[i], game.children.length - 1); game.setChildIndex(coinPriceTxts[i], game.children.length - 1); game.setChildIndex(coinHoldingTxts[i], game.children.length - 1); game.setChildIndex(coinBuyBtns[i], game.children.length - 1); game.setChildIndex(coinSellBtns[i], game.children.length - 1); game.setChildIndex(coinBuyBtnTxts[i], game.children.length - 1); game.setChildIndex(coinSellBtnTxts[i], game.children.length - 1); } } }; // Panel kapama yatirimKapatBtn.down = function (x, y, obj) { yatirimPanel.visible = false; yatirimTitle.visible = false; yatirimKapatBtn.visible = false; yatirimKapatBtnTxt.visible = false; // --- Ava: Restore background elements hidden under the panel area --- if (yatirimPanel._hiddenBackgrounds && yatirimPanel._hiddenBackgrounds.length) { for (var i = 0; i < yatirimPanel._hiddenBackgrounds.length; i++) { var child = yatirimPanel._hiddenBackgrounds[i]; if (child && typeof child.visible === "boolean") { if (typeof child._oldVisible !== "undefined") { child.visible = child._oldVisible; delete child._oldVisible; } else { child.visible = true; } } } yatirimPanel._hiddenBackgrounds = []; } // Show all homepage buttons/UI if (typeof magazaBtn !== "undefined") { magazaBtn.visible = true; } if (typeof magazaBtnTxt !== "undefined") { magazaBtnTxt.visible = true; } if (typeof yatirimBtn !== "undefined") { yatirimBtn.visible = true; } if (typeof yatirimBtnTxt !== "undefined") { yatirimBtnTxt.visible = true; } if (typeof bankBtn !== "undefined") { bankBtn.visible = true; } if (typeof bankBtnTxt !== "undefined") { bankBtnTxt.visible = true; } if (typeof soundBtn !== "undefined") { soundBtn.visible = true; } if (typeof soundBtnTxt !== "undefined") { soundBtnTxt.visible = true; } // Restore Çalışanlar and Madenler buttons and images when Yatırım panel closes if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = true; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = true; } if (typeof madenlerBtnMineImg !== "undefined") { madenlerBtnMineImg.visible = true; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = true; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = true; } if (typeof calisanlarBtnImg !== "undefined") { calisanlarBtnImg.visible = true; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = true; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = true; } if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = true; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = true; } if (typeof languagesBtn !== "undefined") { languagesBtn.visible = true; } if (typeof languagesBtnTxt !== "undefined") { languagesBtnTxt.visible = true; } // Info and How To Play buttons are never shown // Show Borç Öde button again when Yatırım panel is closed if (typeof borcOdeBtn !== "undefined") { borcOdeBtn.visible = true; } if (typeof borcOdeBtnTxt !== "undefined") { borcOdeBtnTxt.visible = true; } for (var i = 0; i < coinTxts.length; i++) { coinTxts[i].visible = false; coinPriceTxts[i].visible = false; coinHoldingTxts[i].visible = false; coinBuyBtns[i].visible = false; coinSellBtns[i].visible = false; coinBuyBtnTxts[i].visible = false; coinSellBtnTxts[i].visible = false; } }; // Coin panelini güncelle function updateCoinPanel() { for (var i = 0; i < coinList.length; i++) { coinPriceTxts[i].setText("₺" + coinPrices[i]); // Ortalama maliyet gösterimi if (coinHoldings[i] > 0) { coinHoldingTxts[i].setText("Adet: " + coinHoldings[i] + "\nMaliyet: ₺" + Math.round(coinAvgCost[i])); } else { coinHoldingTxts[i].setText("Adet: 0"); } } } // Bakiye detayları için global değişkenler var toplamCoinAlim = 0; var toplamCoinSatisGeliri = 0; var toplamBorcOdeme = 0; var toplamYatirimHarcamasi = 0; var toplamFabrikaYukseltme = 0; var toplamMadenYukseltme = 0; var toplamStoreYukseltme = 0; var toplamInternetTeklifHarcamasi = 0; var toplamTopluSatisGeliri = 0; var toplamMusteriSatisGeliri = 0; // Coin alım-satım butonları for (var i = 0; i < coinList.length; i++) { // Al coinBuyBtns[i].down = function (idx) { return function (x, y, obj) { var adet = coinBuyAmounts[idx]; var tutar = coinPrices[idx] * adet; if (money >= tutar) { money -= tutar; toplamCoinAlim += tutar; // Ortalama maliyet ve toplam maliyet güncelle coinTotalCost[idx] += tutar; coinHoldings[idx] += adet; coinAvgCost[idx] = coinHoldings[idx] > 0 ? coinTotalCost[idx] / coinHoldings[idx] : 0; updateMoneyText(); updateCoinPanel(); // Buton animasyonu if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) { clickSound.play(); } } tween(coinBuyBtns[idx], { scaleX: 1.15, scaleY: 1.15 }, { duration: 80, onFinish: function onFinish() { tween(coinBuyBtns[idx], { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { // Yetersiz bakiye animasyonu if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) { clickSound.play(); } } tween(coinBuyBtns[idx], { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(coinBuyBtns[idx], { tint: 0x222222 }, { duration: 120 }); } }); } }; }(i); // Sat coinSellBtns[i].down = function (idx) { return function (x, y, obj) { var adet = coinSellAmounts[idx]; // Zararına satış aktif: coinHoldings >= adet ise, maliyet bakılmaksızın satış yapılır if (coinHoldings[idx] >= adet) { var tutar = coinPrices[idx] * adet; toplamCoinSatisGeliri += tutar; // Satışta ortalama maliyeti azalt (FIFO: en basit haliyle, toplam maliyetten orantılı azalt) if (coinHoldings[idx] > 0) { var costPer = coinAvgCost[idx]; coinTotalCost[idx] -= costPer * adet; if (coinTotalCost[idx] < 0) { coinTotalCost[idx] = 0; } } coinHoldings[idx] -= adet; if (coinHoldings[idx] > 0) { coinAvgCost[idx] = coinTotalCost[idx] / coinHoldings[idx]; } else { coinAvgCost[idx] = 0; coinTotalCost[idx] = 0; } money += tutar; updateMoneyText(); updateCoinPanel(); // Buton animasyonu if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) { clickSound.play(); } } tween(coinSellBtns[idx], { scaleX: 1.15, scaleY: 1.15 }, { duration: 80, onFinish: function onFinish() { tween(coinSellBtns[idx], { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); // Satış işlemi anında gerçekleşir, bekleme süresi yok. } else { // Yetersiz coin animasyonu if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) { clickSound.play(); } } tween(coinSellBtns[idx], { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(coinSellBtns[idx], { tint: 0x222222 }, { duration: 120 }); } }); } }; }(i); } // Coin fiyatları başlangıç fiyatından maksimum %10 yükselip düşebilir, rastgele değişim uygula (her 2 saniyede bir) var coinBasePrices = []; for (var i = 0; i < coinList.length; i++) { // Başlangıç fiyatlarını coinPrices oluşturulurkenki ile aynı şekilde ata var base = 1000000; if (i === 1) { base = 50000; } else if (i > 1) { base = 10000 - i * 900; } coinBasePrices[i] = base; } // Her 40 saniyede bir coin fiyatlarını güncelle (2 saniyeden 40 saniyeye çıkarıldı, %95 yavaşlatıldı) LK.setInterval(function () { for (var i = 0; i < coinPrices.length; i++) { // Rastgele -%2.5 ile +%2.5 arası değişim uygula var degisim = 1 + (Math.random() * 0.05 - 0.025); var yeniFiyat = coinPrices[i] * degisim; // Sınırları uygula: min %10 düşüş, max %10 artış var minFiyat = Math.floor(coinBasePrices[i] * 0.9); var maxFiyat = Math.ceil(coinBasePrices[i] * 1.1); if (yeniFiyat < minFiyat) { yeniFiyat = minFiyat; } if (yeniFiyat > maxFiyat) { yeniFiyat = maxFiyat; } coinPrices[i] = Math.floor(yeniFiyat); } updateCoinPanel(); }, 2400); // 40 saniye (60fps * 40) function updateMoneyText() { moneyTxt.setText('₺' + money); updateBorcText && updateBorcText(); if (magazaMuhasebeText && magazaMuhasebeText.visible) { updateMagazaMuhasebeText(); } // Bakiye detaylarını güncelleme kodu kaldırıldı. } // --- Banka Button & Borç Logic --- var bankBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 70 }); bankBtn.x = moneyTxt.x + 220; bankBtn.y = 40; LK.gui.top.addChild(bankBtn); // --- Sound Toggle Icon Button --- // Use a simple colored box as icon: green for sound on, red for sound off var soundOnColor = 0x83de44; var soundOffColor = 0xd83318; // Sound button is created after languagesBtn to ensure languagesBtn is defined // Ava: Move soundBtn and soundBtnTxt creation after languagesBtn to fix undefined errors and ensure correct button order // (Moved below languagesBtn and languagesBtnTxt creation) var bankBtnTxt = new Text2('%10 Borç Al', { size: 36, fill: '#fff' }); bankBtnTxt.anchor.set(0.5, 0.5); bankBtnTxt.x = bankBtn.x; bankBtnTxt.y = bankBtn.y; LK.gui.top.addChild(bankBtnTxt); var borc = 0; var borcTxt = new Text2('', { size: 32, fill: '#ffb' }); borcTxt.anchor.set(0.5, 0); borcTxt.x = moneyTxt.x + 420; borcTxt.y = 10; LK.gui.top.addChild(borcTxt); // Borç Öde button var borcOdeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); borcOdeBtn.x = borcTxt.x + 180; borcOdeBtn.y = borcTxt.y + 28; LK.gui.top.addChild(borcOdeBtn); var borcOdeBtnTxt = new Text2('Borç Öde', { size: 28, fill: '#fff' }); borcOdeBtnTxt.anchor.set(0.5, 0.5); borcOdeBtnTxt.x = borcOdeBtn.x; borcOdeBtnTxt.y = borcOdeBtn.y; LK.gui.top.addChild(borcOdeBtnTxt); // --- Mağazalar Button below Borç Öde button --- // Mevduat butonu ve paneli tamamen kaldırıldı // --- Mağazalar Panel (initially hidden) --- var magazalarPanelWidth = Math.floor(panelWidth * 0.9); var magazalarPanelHeight = Math.floor(panelHeight * 0.9); var magazalarPanelX = Math.floor((2048 - magazalarPanelWidth) / 2); var magazalarPanelY = Math.floor((2732 - magazalarPanelHeight) / 2); var magazalarPanel = LK.getAsset('button', { anchorX: 0, anchorY: 0, width: magazalarPanelWidth, height: magazalarPanelHeight, x: magazalarPanelX, y: magazalarPanelY }); magazalarPanel.visible = false; game.addChild(magazalarPanel); var magazalarPanelTitle = new Text2('Mağazalar', { size: 36, fill: '#fff' }); magazalarPanelTitle.anchor.set(0.5, 0); magazalarPanelTitle.x = 2048 / 2; magazalarPanelTitle.y = magazalarPanelY + 40; magazalarPanelTitle.visible = false; game.addChild(magazalarPanelTitle); var magazalarPanelText = new Text2('Tüm mağazalar ve müşteriler burada görüntülenir.', { size: 36, fill: '#bff', lineHeight: 44 }); magazalarPanelText.anchor.set(0.5, 0); magazalarPanelText.x = 2048 / 2; magazalarPanelText.y = magazalarPanelTitle.y + magazalarPanelTitle.height + 10; magazalarPanelText.visible = false; game.addChild(magazalarPanelText); // Kapat butonu var magazalarKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 360, //{aG} // %50 artırıldı height: 180, //{aH} // %50 artırıldı // Alt orta: panelin alt kenarının ortası, 60px yukarıda x: magazalarPanel.x + magazalarPanel.width / 2, y: magazalarPanel.y + magazalarPanel.height - 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); magazalarKapatBtn.visible = false; game.addChild(magazalarKapatBtn); var magazalarKapatBtnIcon = new Text2("\u2716", { size: 81, //{aO} // %50 artırıldı fill: '#ff2222' }); magazalarKapatBtnIcon.anchor.set(1, 0.5); magazalarKapatBtnIcon.x = magazalarKapatBtn.x - 60; magazalarKapatBtnIcon.y = magazalarKapatBtn.y; magazalarKapatBtnIcon.visible = false; game.addChild(magazalarKapatBtnIcon); var magazalarKapatBtnTxt = new Text2('Kapat', { size: 96, //{aS} // %50 artırıldı fill: '#ff2222' }); magazalarKapatBtnTxt.anchor.set(0.5, 0.5); magazalarKapatBtnTxt.x = magazalarKapatBtn.x; magazalarKapatBtnTxt.y = magazalarKapatBtn.y; magazalarKapatBtnTxt.visible = false; game.addChild(magazalarKapatBtnTxt); // --- Move both stores and their customers to the Mağazalar panel --- function showMagazalarPanel() { magazalarPanel.visible = true; magazalarPanelTitle.visible = true; magazalarPanelText.visible = true; magazalarKapatBtn.visible = true; magazalarKapatBtnIcon.visible = true; magazalarKapatBtnTxt.visible = true; // Hide all homepage buttons/UI if (typeof magazaBtn !== "undefined") { magazaBtn.visible = false; } if (typeof magazaBtnTxt !== "undefined") { magazaBtnTxt.visible = false; } if (typeof yatirimBtn !== "undefined") { yatirimBtn.visible = false; } if (typeof yatirimBtnTxt !== "undefined") { yatirimBtnTxt.visible = false; } if (typeof bankBtn !== "undefined") { bankBtn.visible = false; } if (typeof bankBtnTxt !== "undefined") { bankBtnTxt.visible = false; } if (typeof soundBtn !== "undefined") { soundBtn.visible = false; } if (typeof soundBtnTxt !== "undefined") { soundBtnTxt.visible = false; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = false; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = false; } if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = false; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = false; } if (typeof magazalarBtn !== "undefined") { magazalarBtn.visible = false; } if (typeof magazalarBtnTxt !== "undefined") { magazalarBtnTxt.visible = false; } if (typeof languagesBtn !== "undefined") { languagesBtn.visible = false; } if (typeof languagesBtnTxt !== "undefined") { languagesBtnTxt.visible = false; } if (typeof infoBtn !== "undefined") { infoBtn.visible = false; } if (typeof infoBtnTxt !== "undefined") { infoBtnTxt.visible = false; } if (typeof howToBtn !== "undefined") { howToBtn.visible = false; } if (typeof howToBtnTxt !== "undefined") { howToBtnTxt.visible = false; } if (typeof borcOdeBtn !== "undefined") { borcOdeBtn.visible = false; } if (typeof borcOdeBtnTxt !== "undefined") { borcOdeBtnTxt.visible = false; } if (typeof mevduatBtn !== "undefined") { mevduatBtn.visible = false; } if (typeof mevduatBtnTxt !== "undefined") { mevduatBtnTxt.visible = false; } // Prevent hiding store purchase buttons on homepage when Mağazalar panel opens if (typeof store2PurchaseBtn !== "undefined") { store2PurchaseBtn.visible = !store2Purchased; } if (typeof store2PurchaseBtnTxt !== "undefined" && store2PurchaseBtnTxt && typeof store2PurchaseBtnTxt.visible === "boolean") { store2PurchaseBtnTxt.visible = !store2Purchased; } if (typeof store3PurchaseBtn !== "undefined") { store3PurchaseBtn.visible = !store3Purchased; } if (typeof store3PurchaseBtnTxt !== "undefined") { store3PurchaseBtnTxt.visible = !store3Purchased; } if (typeof store3PurchaseBtnIcon !== "undefined") { store3PurchaseBtnIcon.visible = !store3Purchased; } if (typeof store4PurchaseBtn !== "undefined") { store4PurchaseBtn.visible = !store4Purchased; } if (typeof store4PurchaseBtnTxt !== "undefined") { store4PurchaseBtnTxt.visible = !store4Purchased; } if (typeof store4PurchaseBtnIcon !== "undefined") { store4PurchaseBtnIcon.visible = !store4Purchased; } // Show all store purchase buttons (store2, store3, store4) and bring them to front when Mağazalar panel opens if (typeof store2PurchaseBtn !== "undefined" && typeof store2PurchaseBtnTxt !== "undefined") { if (typeof store2PurchaseBtn !== "undefined" && store2PurchaseBtn) { store2PurchaseBtn.visible = !store2Purchased; } if (typeof store2PurchaseBtnTxt !== "undefined" && store2PurchaseBtnTxt) { store2PurchaseBtnTxt.visible = !store2Purchased; } if (game.setChildIndex) { game.setChildIndex(store2PurchaseBtn, game.children.length - 1); game.setChildIndex(store2PurchaseBtnTxt, game.children.length - 1); } } if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") { store3PurchaseBtn.visible = !store3Purchased; store3PurchaseBtnTxt.visible = !store3Purchased; if (typeof store3PurchaseBtnIcon !== "undefined") { store3PurchaseBtnIcon.visible = !store3Purchased; } // Ensure button and text are brought to front if (game.setChildIndex) { game.setChildIndex(store3PurchaseBtn, game.children.length - 1); game.setChildIndex(store3PurchaseBtnTxt, game.children.length - 1); if (typeof store3PurchaseBtnIcon !== "undefined") { game.setChildIndex(store3PurchaseBtnIcon, game.children.length - 1); } } } if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") { store4PurchaseBtn.visible = !store4Purchased; store4PurchaseBtnTxt.visible = !store4Purchased; if (typeof store4PurchaseBtnIcon !== "undefined") { store4PurchaseBtnIcon.visible = !store4Purchased; } // Ensure button and text are brought to front if (game.setChildIndex) { game.setChildIndex(store4PurchaseBtn, game.children.length - 1); game.setChildIndex(store4PurchaseBtnTxt, game.children.length - 1); if (typeof store4PurchaseBtnIcon !== "undefined") { game.setChildIndex(store4PurchaseBtnIcon, game.children.length - 1); } } } // --- Mağazalar panelinde 2'li sıra halinde alt alta ve ortalı hizalama --- // Grid ayarları var storeCols = 2; var storeRows = 2; var storeCellWidth = magazalarPanel.width / storeCols; var storeCellHeight = magazalarPanel.height / 3.5; // 3.5 ile daha sıkışık, 4 ile daha geniş var storeStartX = magazalarPanel.x + storeCellWidth / 2; var storeStartY = magazalarPanelText.y + magazalarPanelText.height + 60 + storeCellHeight; // Başlık ve açıklama altı, 1 satır aşağı kaydırıldı // Mağazaları ve butonları gridde sırala var storeList = [store, store2, store3, store4]; var storeBtnList = [storeBtn, store2Btn, store3Btn, store4Btn]; var storeBtnTxtList = [storeBtnTxt, store2BtnTxt, store3BtnTxt, store4BtnTxt]; var storePurchaseBtnList = [null, store2PurchaseBtn, store3PurchaseBtn, store4PurchaseBtn]; var storePurchaseBtnTxtList = [null, store2PurchaseBtnTxt, store3PurchaseBtnTxt, store4PurchaseBtnTxt]; var storePurchasedList = [true, store2Purchased, store3Purchased, store4Purchased]; for (var i = 0; i < 4; i++) { var row = Math.floor(i / storeCols); var col = i % storeCols; var cx = storeStartX + col * storeCellWidth; var cy = storeStartY + row * storeCellHeight; // Mağaza görseli if (typeof storeList[i] !== "undefined") { storeList[i].x = cx; storeList[i].y = cy; storeList[i].visible = true; game.setChildIndex(storeList[i], game.children.length - 1); } // Seviye yazısı (her mağaza için) var levelTxt = null; if (typeof storeList[i] !== "undefined" && typeof storeList[i].children !== "undefined") { for (var ch = 0; ch < storeList[i].children.length; ch++) { if (storeList[i].children[ch] && typeof storeList[i].children[ch].setText === "function" && storeList[i].children[ch].getText && (storeList[i].children[ch].getText() + "").indexOf("Lv.") === 0) { levelTxt = storeList[i].children[ch]; break; } } } var levelY = cy + 90; if (levelTxt) { levelTxt.x = cx; levelTxt.y = levelY; } // Yükseltme butonu (her mağaza için) -- seviye yazısının altına hizala if (typeof storeBtnList[i] !== "undefined") { storeBtnList[i].x = cx; storeBtnList[i].y = levelY + 60; // Sadece satın alındıysa göster storeBtnList[i].visible = i === 0 ? true : !!storePurchasedList[i]; if (game.setChildIndex) { game.setChildIndex(storeBtnList[i], game.children.length - 1); } } if (typeof storeBtnTxtList[i] !== "undefined") { storeBtnTxtList[i].x = cx; storeBtnTxtList[i].y = levelY + 80; storeBtnTxtList[i].visible = i === 0 ? true : !!storePurchasedList[i]; if (game.setChildIndex) { game.setChildIndex(storeBtnTxtList[i], game.children.length - 1); } } // Satın al butonu (store2, store3, store4) -- seviye yazısının altına hizala if (i > 0 && typeof storePurchaseBtnList[i] !== "undefined" && typeof storePurchaseBtnTxtList[i] !== "undefined") { storePurchaseBtnList[i].x = cx; storePurchaseBtnList[i].y = levelY + 120; storePurchaseBtnTxtList[i].x = cx; storePurchaseBtnTxtList[i].y = levelY + 140; // Defensive: always set visible based on purchase state if (i === 2) { // Store3 storePurchaseBtnList[i].visible = !store3Purchased; storePurchaseBtnTxtList[i].visible = !store3Purchased; if (typeof store3PurchaseBtnIcon !== "undefined") { store3PurchaseBtnIcon.visible = !store3Purchased; } } else if (i === 3) { // Store4 storePurchaseBtnList[i].visible = !store4Purchased; storePurchaseBtnTxtList[i].visible = !store4Purchased; if (typeof store4PurchaseBtnIcon !== "undefined") { store4PurchaseBtnIcon.visible = !store4Purchased; } } else { storePurchaseBtnList[i].visible = !storePurchasedList[i]; storePurchaseBtnTxtList[i].visible = !storePurchasedList[i]; } if (game.setChildIndex) { game.setChildIndex(storePurchaseBtnList[i], game.children.length - 1); game.setChildIndex(storePurchaseBtnTxtList[i], game.children.length - 1); } } } // --- Ava: Bring Store3 and Store4 purchase buttons and icons to the very front above overlay and panel when Mağazalar panel opens --- if (game.setChildIndex) { // First, bring panel to front game.setChildIndex(magazalarPanel, game.children.length - 1); // Then, bring Store3 and Store4 purchase buttons, their texts, and icons to the very front if (typeof store3PurchaseBtn !== "undefined") { game.setChildIndex(store3PurchaseBtn, game.children.length - 1); } if (typeof store3PurchaseBtnIcon !== "undefined") { game.setChildIndex(store3PurchaseBtnIcon, game.children.length - 1); } if (typeof store3PurchaseBtnTxt !== "undefined") { game.setChildIndex(store3PurchaseBtnTxt, game.children.length - 1); } if (typeof store4PurchaseBtn !== "undefined") { game.setChildIndex(store4PurchaseBtn, game.children.length - 1); } if (typeof store4PurchaseBtnIcon !== "undefined") { game.setChildIndex(store4PurchaseBtnIcon, game.children.length - 1); } if (typeof store4PurchaseBtnTxt !== "undefined") { game.setChildIndex(store4PurchaseBtnTxt, game.children.length - 1); } } // Bring panel and its content to front if (game.setChildIndex) { game.setChildIndex(magazalarPanel, game.children.length - 1); game.setChildIndex(magazalarPanelTitle, game.children.length - 1); game.setChildIndex(magazalarPanelText, game.children.length - 1); // Kapat butonu ve X simgesi ve yazısı en önde game.setChildIndex(magazalarKapatBtn, game.children.length - 1); game.setChildIndex(magazalarKapatBtnIcon, game.children.length - 1); game.setChildIndex(magazalarKapatBtnTxt, game.children.length - 1); if (typeof store !== "undefined") { game.setChildIndex(store, game.children.length - 1); } if (typeof store2 !== "undefined") { game.setChildIndex(store2, game.children.length - 1); } if (typeof store3 !== "undefined") { game.setChildIndex(store3, game.children.length - 1); } if (typeof store4 !== "undefined") { game.setChildIndex(store4, game.children.length - 1); } if (typeof storeBtn !== "undefined") { game.setChildIndex(storeBtn, game.children.length - 1); } if (typeof storeBtnTxt !== "undefined") { game.setChildIndex(storeBtnTxt, game.children.length - 1); } if (typeof store2Btn !== "undefined") { game.setChildIndex(store2Btn, game.children.length - 1); } if (typeof store2BtnTxt !== "undefined") { game.setChildIndex(store2BtnTxt, game.children.length - 1); } if (typeof store2PurchaseBtn !== "undefined") { game.setChildIndex(store2PurchaseBtn, game.children.length - 1); } if (typeof store2PurchaseBtnTxt !== "undefined") { game.setChildIndex(store2PurchaseBtnTxt, game.children.length - 1); } if (typeof store3Btn !== "undefined") { game.setChildIndex(store3Btn, game.children.length - 1); } if (typeof store3BtnTxt !== "undefined") { game.setChildIndex(store3BtnTxt, game.children.length - 1); } if (typeof store4Btn !== "undefined") { game.setChildIndex(store4Btn, game.children.length - 1); } if (typeof store4BtnTxt !== "undefined") { game.setChildIndex(store4BtnTxt, game.children.length - 1); } // Customer logic removed: no customers to bring to front. } } // Show panel on button press // Mağazalar butonu event handler'ları kaldırıldı // Kapat butonu logic magazalarKapatBtn.down = function (x, y, obj) { magazalarPanel.visible = false; magazalarPanelTitle.visible = false; magazalarPanelText.visible = false; magazalarKapatBtn.visible = false; magazalarKapatBtnIcon.visible = false; magazalarKapatBtnTxt.visible = false; // Restore all homepage buttons/UI if (typeof magazaBtn !== "undefined") { magazaBtn.visible = true; } if (typeof magazaBtnTxt !== "undefined") { magazaBtnTxt.visible = true; } if (typeof yatirimBtn !== "undefined") { yatirimBtn.visible = true; } if (typeof yatirimBtnTxt !== "undefined") { yatirimBtnTxt.visible = true; } if (typeof bankBtn !== "undefined") { bankBtn.visible = true; } if (typeof bankBtnTxt !== "undefined") { bankBtnTxt.visible = true; } if (typeof soundBtn !== "undefined") { soundBtn.visible = true; } if (typeof soundBtnTxt !== "undefined") { soundBtnTxt.visible = true; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = true; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = true; } if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = true; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = true; } if (typeof magazalarBtn !== "undefined") { magazalarBtn.visible = true; } if (typeof magazalarBtnTxt !== "undefined") { magazalarBtnTxt.visible = true; } if (typeof languagesBtn !== "undefined") { languagesBtn.visible = true; } if (typeof languagesBtnTxt !== "undefined") { languagesBtnTxt.visible = true; } // Info and How To Play buttons are never shown if (typeof borcOdeBtn !== "undefined") { borcOdeBtn.visible = true; } if (typeof borcOdeBtnTxt !== "undefined") { borcOdeBtnTxt.visible = true; } if (typeof mevduatBtn !== "undefined") { mevduatBtn.visible = true; } if (typeof mevduatBtnTxt !== "undefined") { mevduatBtnTxt.visible = true; } // Move stores and customers back to their original positions if (typeof store !== "undefined") { store.x = 1850; store.y = 600; store.visible = true; // Anasayfa'da mağazaları göster store2.visible = true; // Anasayfa'da mağazaları göster store3.visible = true; // Anasayfa'da mağazaları göster store4.visible = true; // Anasayfa'da mağazaları göster store2.visible = true; store3.visible = true; if (typeof store4 !== "undefined") { store4.visible = true; } } if (typeof store2 !== "undefined") { store2.x = 1850; store2.y = 950; store2.visible = true; } if (typeof store !== "undefined") { store.x = 1850; store.y = 600; store.visible = true; } if (typeof store3 !== "undefined") { store3.x = 1850; store3.y = 1300; store3.visible = true; } if (typeof store4 !== "undefined") { store4.x = 1850; store4.y = 1650; store4.visible = true; } // Customer logic removed: no customers to reposition on Mağazalar panel close. }; // --- Mevduat paneli ve tüm ilgili UI/logic tamamen kaldırıldı --- // --- New Page Button below Banka button --- var newPageBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); // --- Madenler butonunu bağımsız olarak konumlandır (Çalışanlar ile bağlantı yok) --- if (typeof madenlerBtn !== "undefined" && madenlerBtn) { // Borç öde butonunun altına, kendi sabit bir konuma yerleştir var madenlerBtnGapY = 20; madenlerBtn.x = borcOdeBtn.x; madenlerBtn.y = borcOdeBtn.y + borcOdeBtn.height / 2 + madenlerBtnGapY + madenlerBtn.height / 2; if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.x = madenlerBtn.x; madenlerBtnTxt.y = madenlerBtn.y; } if (typeof madenlerBtnMineImg !== "undefined") { madenlerBtnMineImg.x = madenlerBtn.x; madenlerBtnMineImg.y = madenlerBtn.y + madenlerBtn.height / 2 + 10; } } // Sıralama: önce Madenler butonu ve resmi, sonra Çalışanlar butonu ve resmi if (typeof LK !== "undefined" && LK.gui && LK.gui.top) { LK.gui.top.addChild(madenlerBtn); LK.gui.top.addChild(madenlerBtnTxt); LK.gui.top.addChild(madenlerBtnMineImg); // Çalışanlar (newPageBtn) bağımsız olarak konumlandırılıyor // Borç öde butonunun altına, kendi sabit bir konuma yerleştir var calisanlarBtnGapY = 20; var calisanlarBtnWidth = 140, calisanlarBtnHeight = 54; newPageBtn.x = borcOdeBtn.x; // Move 4 rows lower: each row is (calisanlarBtnHeight + calisanlarBtnGapY) px newPageBtn.y = borcOdeBtn.y + borcOdeBtn.height / 2 + (calisanlarBtnGapY + calisanlarBtnHeight) * 4 + calisanlarBtnHeight / 2; // Define newPageBtnTxt before adding it to LK.gui.top var newPageBtnTxt = new Text2('Çalışanlar', { size: 28, fill: '#fff' }); newPageBtnTxt.anchor.set(0.5, 0.5); newPageBtnTxt.x = newPageBtn.x; newPageBtnTxt.y = newPageBtn.y; LK.gui.top.addChild(newPageBtn); LK.gui.top.addChild(newPageBtnTxt); // Define calisanlarBtnImg before adding it to LK.gui.top var calisanlarBtnImg = LK.getAsset('worker1', { anchorX: 0.5, anchorY: 0, width: 125, height: 125, x: newPageBtn.x, y: newPageBtn.y + calisanlarBtnHeight / 2 + 10 }); LK.gui.top.addChild(calisanlarBtnImg); // Çalışanlar resmine tıklayınca yeni sayfa panelini aç calisanlarBtnImg.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } // (fullscreen overlay logic removed) // --- Ava: Hide all homepage images when Çalışanlar panel opens --- if (typeof homepageImages === "undefined") { window.homepageImages = []; for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; // Defensive: Only hide images that are not panels, not overlays, not buttons, not Text2, and are visible if (child && typeof child.visible === "boolean" && child.visible && child !== newPagePanel && child !== newPagePanelTitle && child !== newPagePanelText && child !== newPageKapatBtn && child !== newPageKapatBtnTxt && child !== newPageKapatBtnIcon && child !== newPageKapatBtnTop && child !== newPageKapatBtnTopIcon && child !== newPageKapatBtnTopTxt && !(child instanceof Text2) && !(child.assetId && (child.assetId.indexOf("button") === 0 || child.assetId.indexOf("panel") === 0))) { window.homepageImages.push(child); } } } if (window.homepageImages && window.homepageImages.length) { for (var i = 0; i < window.homepageImages.length; i++) { if (window.homepageImages[i] && typeof window.homepageImages[i].visible === "boolean") { window.homepageImages[i]._oldVisible = window.homepageImages[i].visible; window.homepageImages[i].visible = false; } } } // Hide both calisanlarBtnImg and madenlerBtnMineImg, and newPageBtn & newPageBtnTxt until panel closes if (typeof calisanlarBtnImg !== "undefined") calisanlarBtnImg.visible = false; if (typeof madenlerBtnMineImg !== "undefined") madenlerBtnMineImg.visible = false; if (typeof newPageBtn !== "undefined") newPageBtn.visible = false; if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false; if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false; if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false; newPagePanel.visible = true; newPagePanelTitle.visible = true; newPagePanelText.visible = true; newPageKapatBtn.visible = true; newPageKapatBtnTxt.visible = true; // Çalışanları ve altındaki UI'ları göster ve panelde 3'lü sıra halinde alt alta ortala for (var i = 0; i < workerImages.length; i++) { var pos = getWorkerPanelPos(i); workerImages[i].img.x = pos.x; workerImages[i].img.y = pos.y; workerImages[i].img.visible = true; workerImages[i].label.x = pos.x; workerImages[i].label.y = pos.y + 80; workerImages[i].label.visible = true; // Alt açıklama yazılarını alt alta ve hizalı şekilde göster var baseY = workerImages[i].label.y + workerImages[i].label.height + 8; // label'ın altından 8px boşluk var lineGap = 8; // satırlar arası boşluk if (i === 0) { var y = baseY; if (worker1LevelTxt) { worker1LevelTxt.x = pos.x; worker1LevelTxt.y = y; worker1LevelTxt.visible = true; y += worker1LevelTxt.height + lineGap; } if (worker1EarningTxt) { worker1EarningTxt.x = pos.x; worker1EarningTxt.y = y; worker1EarningTxt.visible = true; y += worker1EarningTxt.height + lineGap; } if (worker1UpgradeBtn) { worker1UpgradeBtn.x = pos.x; worker1UpgradeBtn.y = y + worker1UpgradeBtn.height / 2; worker1UpgradeBtn.visible = true; } if (worker1UpgradeBtnTxt) { worker1UpgradeBtnTxt.x = pos.x; worker1UpgradeBtnTxt.y = worker1UpgradeBtn.y; worker1UpgradeBtnTxt.visible = true; } } if (i === 1) { var y = baseY; if (worker2LevelTxt) { worker2LevelTxt.x = pos.x; worker2LevelTxt.y = y; worker2LevelTxt.visible = true; y += worker2LevelTxt.height + lineGap; } if (worker2SpeedTxt) { worker2SpeedTxt.x = pos.x; worker2SpeedTxt.y = y; worker2SpeedTxt.visible = true; y += worker2SpeedTxt.height + lineGap; } if (worker2UpgradeBtn) { worker2UpgradeBtn.x = pos.x; worker2UpgradeBtn.y = y + worker2UpgradeBtn.height / 2; worker2UpgradeBtn.visible = true; } if (worker2UpgradeBtnTxt) { worker2UpgradeBtnTxt.x = pos.x; worker2UpgradeBtnTxt.y = worker2UpgradeBtn.y; worker2UpgradeBtnTxt.visible = true; } } if (i === 2) { var y = baseY; if (worker3LevelTxt) { worker3LevelTxt.x = pos.x; worker3LevelTxt.y = y; worker3LevelTxt.visible = true; y += worker3LevelTxt.height + lineGap; } if (worker3DiscountTxt) { worker3DiscountTxt.x = pos.x; worker3DiscountTxt.y = y; worker3DiscountTxt.visible = true; y += worker3DiscountTxt.height + lineGap; } if (worker3UpgradeBtn) { worker3UpgradeBtn.x = pos.x; worker3UpgradeBtn.y = y + worker3UpgradeBtn.height / 2; worker3UpgradeBtn.visible = true; } if (worker3UpgradeBtnTxt) { worker3UpgradeBtnTxt.x = pos.x; worker3UpgradeBtnTxt.y = worker3UpgradeBtn.y; worker3UpgradeBtnTxt.visible = true; } } if (i === 3) { var y = baseY; if (worker4LevelTxt) { worker4LevelTxt.x = pos.x; worker4LevelTxt.y = y; worker4LevelTxt.visible = true; y += worker4LevelTxt.height + lineGap; } if (worker4EarningTxt) { worker4EarningTxt.x = pos.x; worker4EarningTxt.y = y; worker4EarningTxt.visible = true; y += worker4EarningTxt.height + lineGap; } if (worker4UpgradeBtn) { worker4UpgradeBtn.x = pos.x; worker4UpgradeBtn.y = y + worker4UpgradeBtn.height / 2; worker4UpgradeBtn.visible = true; } if (worker4UpgradeBtnTxt) { worker4UpgradeBtnTxt.x = pos.x; worker4UpgradeBtnTxt.y = worker4UpgradeBtn.y; worker4UpgradeBtnTxt.visible = true; } } if (i === 4) { var y = baseY; if (worker5LevelTxt) { worker5LevelTxt.x = pos.x; worker5LevelTxt.y = y; worker5LevelTxt.visible = true; y += worker5LevelTxt.height + lineGap; } if (worker5BonusTxt) { worker5BonusTxt.x = pos.x; worker5BonusTxt.y = y; worker5BonusTxt.visible = true; y += worker5BonusTxt.height + lineGap; } if (worker5UpgradeBtn) { worker5UpgradeBtn.x = pos.x; worker5UpgradeBtn.y = y + worker5UpgradeBtn.height / 2; worker5UpgradeBtn.visible = true; } if (worker5UpgradeBtnTxt) { worker5UpgradeBtnTxt.x = pos.x; worker5UpgradeBtnTxt.y = worker5UpgradeBtn.y; worker5UpgradeBtnTxt.visible = true; } } } // Paneli en öne getir if (game.setChildIndex) { game.setChildIndex(newPagePanel, game.children.length - 1); game.setChildIndex(newPagePanelTitle, game.children.length - 1); game.setChildIndex(newPagePanelText, game.children.length - 1); // Kapat butonu ve X simgesi ve yazısı en önde game.setChildIndex(newPageKapatBtn, game.children.length - 1); game.setChildIndex(newPageKapatBtnTxt, game.children.length - 1); if (typeof newPageKapatBtnIcon !== "undefined") { game.setChildIndex(newPageKapatBtnIcon, game.children.length - 1); } if (typeof newPageKapatBtnTop !== "undefined") game.setChildIndex(newPageKapatBtnTop, game.children.length - 1); if (typeof newPageKapatBtnTopIcon !== "undefined") game.setChildIndex(newPageKapatBtnTopIcon, game.children.length - 1); if (typeof newPageKapatBtnTopTxt !== "undefined") game.setChildIndex(newPageKapatBtnTopTxt, game.children.length - 1); for (var i = 0; i < workerImages.length; i++) { game.setChildIndex(workerImages[i].img, game.children.length - 1); game.setChildIndex(workerImages[i].label, game.children.length - 1); } if (worker1LevelTxt) { game.setChildIndex(worker1LevelTxt, game.children.length - 1); } if (worker1EarningTxt) { game.setChildIndex(worker1EarningTxt, game.children.length - 1); } if (worker1UpgradeBtn) { game.setChildIndex(worker1UpgradeBtn, game.children.length - 1); } if (worker1UpgradeBtnTxt) { game.setChildIndex(worker1UpgradeBtnTxt, game.children.length - 1); } if (worker2LevelTxt) { game.setChildIndex(worker2LevelTxt, game.children.length - 1); } if (worker2SpeedTxt) { game.setChildIndex(worker2SpeedTxt, game.children.length - 1); } if (worker2UpgradeBtn) { game.setChildIndex(worker2UpgradeBtn, game.children.length - 1); } if (worker2UpgradeBtnTxt) { game.setChildIndex(worker2UpgradeBtnTxt, game.children.length - 1); } if (worker3LevelTxt) { game.setChildIndex(worker3LevelTxt, game.children.length - 1); } if (worker3DiscountTxt) { game.setChildIndex(worker3DiscountTxt, game.children.length - 1); } if (worker3UpgradeBtn) { game.setChildIndex(worker3UpgradeBtn, game.children.length - 1); } if (worker3UpgradeBtnTxt) { game.setChildIndex(worker3UpgradeBtnTxt, game.children.length - 1); } if (worker4LevelTxt) { game.setChildIndex(worker4LevelTxt, game.children.length - 1); } if (worker4EarningTxt) { game.setChildIndex(worker4EarningTxt, game.children.length - 1); } if (worker4UpgradeBtn) { game.setChildIndex(worker4UpgradeBtn, game.children.length - 1); } if (worker4UpgradeBtnTxt) { game.setChildIndex(worker4UpgradeBtnTxt, game.children.length - 1); } if (worker5LevelTxt) { game.setChildIndex(worker5LevelTxt, game.children.length - 1); } if (worker5BonusTxt) { game.setChildIndex(worker5BonusTxt, game.children.length - 1); } if (worker5UpgradeBtn) { game.setChildIndex(worker5UpgradeBtn, game.children.length - 1); } if (worker5UpgradeBtnTxt) { game.setChildIndex(worker5UpgradeBtnTxt, game.children.length - 1); } } }; } // --- Madenler Button (independent, not related to Çalışanlar) --- var madenlerBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); madenlerBtn.x = borcOdeBtn.x; madenlerBtn.y = borcOdeBtn.y + borcOdeBtn.height / 2 + 20 + madenlerBtn.height / 2; LK.gui.top.addChild(madenlerBtn); var madenlerBtnTxt = new Text2('Madenler', { size: 28, fill: '#fff' }); madenlerBtnTxt.anchor.set(0.5, 0.5); madenlerBtnTxt.x = madenlerBtn.x; madenlerBtnTxt.y = madenlerBtn.y; LK.gui.top.addChild(madenlerBtnTxt); // --- Add mine image below the Madenler button --- var madenlerBtnMineImg = LK.getAsset('mine', { anchorX: 0.5, anchorY: 0, width: 125, height: 125, x: madenlerBtn.x, y: madenlerBtn.y + madenlerBtn.height / 2 + 10 }); LK.gui.top.addChild(madenlerBtnMineImg); // Clicking the image opens the Madenler panel (same as madenlerBtn.down) madenlerBtnMineImg.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } // (fullscreen overlay logic removed) madenlerPanel.visible = true; madenlerPanelTitle.visible = true; madenlerPanelText.visible = true; madenlerKapatBtn.visible = true; madenlerKapatBtnIcon.visible = true; madenlerKapatBtnTxt.visible = true; // Ava: Hide calisanlarBtnImg and madenlerBtnMineImg when Madenler panel is open if (typeof calisanlarBtnImg !== "undefined") calisanlarBtnImg.visible = false; if (typeof madenlerBtnMineImg !== "undefined") madenlerBtnMineImg.visible = false; // Ava: Show and update maden depo stock area madenDepoPanel.visible = true; madenDepoStockTxt.visible = true; updateMadenDepoStockTxt(); // Hide all homepage buttons/UI if (typeof magazaBtn !== "undefined") { magazaBtn.visible = false; } if (typeof magazaBtnTxt !== "undefined") { magazaBtnTxt.visible = false; } if (typeof yatirimBtn !== "undefined") { yatirimBtn.visible = false; } if (typeof yatirimBtnTxt !== "undefined") { yatirimBtnTxt.visible = false; } if (typeof bankBtn !== "undefined") { bankBtn.visible = false; } if (typeof bankBtnTxt !== "undefined") { bankBtnTxt.visible = false; } if (typeof soundBtn !== "undefined") { soundBtn.visible = false; } if (typeof soundBtnTxt !== "undefined") { soundBtnTxt.visible = false; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = false; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = false; } if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = false; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = false; } if (typeof madenlerBtnMineImg !== "undefined") { madenlerBtnMineImg.visible = false; } if (typeof calisanlarBtnImg !== "undefined") { calisanlarBtnImg.visible = false; } if (typeof languagesBtn !== "undefined") { languagesBtn.visible = false; } if (typeof languagesBtnTxt !== "undefined") { languagesBtnTxt.visible = false; } if (typeof infoBtn !== "undefined") { infoBtn.visible = false; } if (typeof infoBtnTxt !== "undefined") { infoBtnTxt.visible = false; } if (typeof howToBtn !== "undefined") { howToBtn.visible = false; } if (typeof howToBtnTxt !== "undefined") { howToBtnTxt.visible = false; } // Show all mine UIs for (var i = 0; i < 6; i++) { if (!mines || !mines[i]) { continue; } madenlerMineImages[i].visible = true; madenlerMineLabels[i].visible = true; madenlerMineLevelTxts[i].visible = true; madenlerMineProdTxts[i].visible = false; madenlerMineUpgradeBtns[i].visible = true; madenlerMineUpgradeBtnTxts[i].visible = true; if (window.madenlerMineStockTxts && window.madenlerMineStockTxts[i]) { window.madenlerMineStockTxts[i].visible = true; var oreType = oreTypes[i]; window.madenlerMineStockTxts[i].setText('' + rawMaterials[oreType]); } if (madenlerMineAutoBtns[i]) { madenlerMineAutoBtns[i].visible = true; } if (madenlerMineAutoTxts[i]) { if (mineAutoProduce[i]) { madenlerMineAutoTxts[i].setText('Oto Üret: Açık'); } else { var autoMineCost = (i + 1) * 500; madenlerMineAutoTxts[i].setText('Oto Üret: Kapalı\n₺' + autoMineCost); } madenlerMineAutoTxts[i].visible = true; madenlerMineAutoTxts[i].lineHeight = 52; madenlerMineAutoTxts[i].y = madenlerMineAutoBtns[i].y + 10; } madenlerMineLevelTxts[i].setText('Seviye: ' + mines[i].level); madenlerMineProdTxts[i].setText('Üretim: ' + mines[i].production); madenlerMineUpgradeBtnTxts[i].setText('Yükselt\n₺' + mines[i].upgradeCost); } // Paneli en öne getir if (game.setChildIndex) { game.setChildIndex(madenlerPanel, game.children.length - 1); game.setChildIndex(madenlerPanelTitle, game.children.length - 1); game.setChildIndex(madenlerPanelText, game.children.length - 1); // Kapat butonu ve X simgesi ve yazısı en önde game.setChildIndex(madenlerKapatBtn, game.children.length - 1); game.setChildIndex(madenlerKapatBtnTxt, game.children.length - 1); if (typeof madenlerKapatBtnIcon !== "undefined") { game.setChildIndex(madenlerKapatBtnIcon, game.children.length - 1); } game.setChildIndex(madenDepoPanel, game.children.length - 1); game.setChildIndex(madenDepoStockTxt, game.children.length - 1); for (var i = 0; i < 6; i++) { if (!mines || !mines[i]) { continue; } game.setChildIndex(madenlerMineImages[i], game.children.length - 1); game.setChildIndex(madenlerMineLabels[i], game.children.length - 1); game.setChildIndex(madenlerMineLevelTxts[i], game.children.length - 1); game.setChildIndex(madenlerMineProdTxts[i], game.children.length - 1); game.setChildIndex(madenlerMineUpgradeBtns[i], game.children.length - 1); game.setChildIndex(madenlerMineUpgradeBtnTxts[i], game.children.length - 1); if (madenlerMineAutoBtns[i]) { game.setChildIndex(madenlerMineAutoBtns[i], game.children.length - 1); } if (madenlerMineAutoTxts[i]) { game.setChildIndex(madenlerMineAutoTxts[i], game.children.length - 1); } } if (typeof magazaBtn !== "undefined" && magazaBtn.parent === game) { game.setChildIndex(magazaBtn, 0); } if (typeof magazaBtnTxt !== "undefined" && magazaBtnTxt.parent === game) { game.setChildIndex(magazaBtnTxt, 0); } if (typeof yatirimBtn !== "undefined" && yatirimBtn.parent === game) { game.setChildIndex(yatirimBtn, 0); } if (typeof yatirimBtnTxt !== "undefined" && yatirimBtnTxt.parent === game) { game.setChildIndex(yatirimBtnTxt, 0); } if (typeof bankBtn !== "undefined" && bankBtn.parent === game) { game.setChildIndex(bankBtn, 0); } if (typeof bankBtnTxt !== "undefined" && bankBtnTxt.parent === game) { game.setChildIndex(bankBtnTxt, 0); } if (typeof soundBtn !== "undefined" && soundBtn.parent === game) { game.setChildIndex(soundBtn, 0); } if (typeof soundBtnTxt !== "undefined" && soundBtnTxt.parent === game) { game.setChildIndex(soundBtnTxt, 0); } if (typeof newPageBtn !== "undefined" && newPageBtn.parent === game) { game.setChildIndex(newPageBtn, 0); } if (typeof newPageBtnTxt !== "undefined" && newPageBtnTxt.parent === game) { game.setChildIndex(newPageBtnTxt, 0); } if (typeof madenlerBtn !== "undefined" && madenlerBtn.parent === game) { game.setChildIndex(madenlerBtn, 0); } if (typeof madenlerBtnTxt !== "undefined" && madenlerBtnTxt.parent === game) { game.setChildIndex(madenlerBtnTxt, 0); } if (typeof madenlerBtnMineImg !== "undefined" && madenlerBtnMineImg.parent === game) { game.setChildIndex(madenlerBtnMineImg, 0); } if (typeof languagesBtn !== "undefined" && languagesBtn.parent === game) { game.setChildIndex(languagesBtn, 0); } if (typeof languagesBtnTxt !== "undefined" && languagesBtnTxt.parent === game) { game.setChildIndex(languagesBtnTxt, 0); } if (typeof infoBtn !== "undefined" && infoBtn.parent === game) { game.setChildIndex(infoBtn, 0); } if (typeof infoBtnTxt !== "undefined" && infoBtnTxt.parent === game) { game.setChildIndex(infoBtnTxt, 0); } if (typeof howToBtn !== "undefined" && howToBtn.parent === game) { game.setChildIndex(howToBtn, 0); } if (typeof howToBtnTxt !== "undefined" && howToBtnTxt.parent === game) { game.setChildIndex(howToBtnTxt, 0); } } }; // --- New Page Panel (initially hidden) --- // --- New Page Panel (initially hidden) --- var newPagePanelWidth = panelWidth; var newPagePanelHeight = panelHeight; var newPagePanelX = Math.floor((2048 - newPagePanelWidth) / 2); var newPagePanelY = Math.floor((2732 - newPagePanelHeight) / 2); var newPagePanel = LK.getAsset('button', { anchorX: 0, anchorY: 0, width: newPagePanelWidth, height: newPagePanelHeight, x: newPagePanelX, y: newPagePanelY }); newPagePanel.visible = false; game.addChild(newPagePanel); // Title at top center var newPagePanelTitle = new Text2('Çalışanlar', { size: 36, fill: '#fff' }); newPagePanelTitle.anchor.set(0.5, 0); newPagePanelTitle.x = 2048 / 2; newPagePanelTitle.y = newPagePanelY + 40; newPagePanelTitle.visible = false; game.addChild(newPagePanelTitle); // Remove old panel text, add a subtle subtitle at top center under title var newPagePanelText = new Text2('Çalışanlar', { size: 36, fill: '#bff', lineHeight: 44 }); newPagePanelText.anchor.set(0.5, 0); newPagePanelText.x = 2048 / 2; newPagePanelText.y = newPagePanelTitle.y + newPagePanelTitle.height + 10; newPagePanelText.visible = false; game.addChild(newPagePanelText); // Kapat butonu // --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli --- var newPageKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 360, //{iY} // %50 artırıldı height: 180, //{iZ} // %50 artırıldı // Alt orta: panelin alt kenarının ortası, 60px yukarıda x: newPagePanel.x + newPagePanel.width / 2, y: newPagePanel.y + newPagePanel.height - 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); newPageKapatBtn.visible = false; game.addChild(newPageKapatBtn); // Kapat butonu için X simgesi var newPageKapatBtnIcon = new Text2("\u2716", { size: 81, //{j7} // %50 artırıldı fill: '#ff2222' }); newPageKapatBtnIcon.anchor.set(1, 0.5); newPageKapatBtnIcon.x = newPageKapatBtn.x - 60; newPageKapatBtnIcon.y = newPageKapatBtn.y; newPageKapatBtnIcon.visible = false; game.addChild(newPageKapatBtnIcon); var newPageKapatBtnTxt = new Text2('Kapat', { size: 96, //{ja} // %50 artırıldı fill: '#ff2222' }); newPageKapatBtnTxt.anchor.set(0.5, 0.5); newPageKapatBtnTxt.x = newPageKapatBtn.x; newPageKapatBtnTxt.y = newPageKapatBtn.y; newPageKapatBtnTxt.visible = false; game.addChild(newPageKapatBtnTxt); // --- Yeni: Üstte, panel başlığının hemen altında ortada yeni bir kapat butonu ekle --- var newPageKapatBtnTop = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 220, height: 90, x: newPagePanelTitle.x, y: newPagePanelTitle.y + newPagePanelTitle.height + 20, color: 0xffffff, borderColor: 0xff2222, borderWidth: 6 }); newPageKapatBtnTop.visible = false; game.addChild(newPageKapatBtnTop); var newPageKapatBtnTopIcon = new Text2("\u2716", { size: 48, fill: '#ff2222' }); newPageKapatBtnTopIcon.anchor.set(1, 0.5); newPageKapatBtnTopIcon.x = newPageKapatBtnTop.x - 40; newPageKapatBtnTopIcon.y = newPageKapatBtnTop.y; newPageKapatBtnTopIcon.visible = false; game.addChild(newPageKapatBtnTopIcon); var newPageKapatBtnTopTxt = new Text2('Kapat', { size: 54, fill: '#ff2222' }); newPageKapatBtnTopTxt.anchor.set(0.5, 0.5); newPageKapatBtnTopTxt.x = newPageKapatBtnTop.x; newPageKapatBtnTopTxt.y = newPageKapatBtnTop.y; newPageKapatBtnTopTxt.visible = false; game.addChild(newPageKapatBtnTopTxt); // --- Yeni kapat butonunun işlevi: Alt kapat butonuyla aynı şekilde paneli kapatsın --- newPageKapatBtnTop.down = function (x, y, obj) { if (typeof newPageKapatBtn.down === "function") { newPageKapatBtn.down(x, y, obj); } }; newPageKapatBtnTopIcon.down = newPageKapatBtnTop.down; newPageKapatBtnTopTxt.down = newPageKapatBtnTop.down; // --- Madenler Panel (initially hidden, same size as newPagePanel) --- var madenlerPanel = LK.getAsset('button', { anchorX: 0, anchorY: 0, width: panelWidth, height: panelHeight, x: Math.floor((2048 - panelWidth) / 2), y: Math.floor((2732 - panelHeight) / 2) }); madenlerPanel.visible = false; game.addChild(madenlerPanel); // Title at top center var madenlerPanelTitle = new Text2('Madenler', { size: 36, fill: '#fff' }); madenlerPanelTitle.anchor.set(0.5, 0); madenlerPanelTitle.x = 2048 / 2; madenlerPanelTitle.y = newPagePanelY + 40; madenlerPanelTitle.visible = false; game.addChild(madenlerPanelTitle); // Subtitle var madenlerPanelText = new Text2('Madenler', { size: 36, fill: '#bff' }); madenlerPanelText.anchor.set(0.5, 0); madenlerPanelText.x = 2048 / 2; madenlerPanelText.y = madenlerPanelTitle.y + madenlerPanelTitle.height + 10; madenlerPanelText.visible = false; game.addChild(madenlerPanelText); // Kapat butonu // --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli --- var madenlerKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 360, //{jx} // %50 artırıldı height: 180, //{jy} // %50 artırıldı // Alt orta: panelin alt kenarının ortası, 60px yukarıda x: madenlerPanel.x + madenlerPanel.width / 2, y: madenlerPanel.y + madenlerPanel.height - 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); madenlerKapatBtn.visible = false; game.addChild(madenlerKapatBtn); // Add an icon (Unicode heavy multiplication X) to the left of the text var madenlerKapatBtnIcon = new Text2("\u2716", { size: 81, //{jG} // %50 artırıldı fill: '#ff2222' }); madenlerKapatBtnIcon.anchor.set(1, 0.5); madenlerKapatBtnIcon.x = madenlerKapatBtn.x - 60; madenlerKapatBtnIcon.y = madenlerKapatBtn.y; madenlerKapatBtnIcon.visible = false; game.addChild(madenlerKapatBtnIcon); var madenlerKapatBtnTxt = new Text2('Kapat', { size: 96, //{jK} // %50 artırıldı fill: '#ff2222' }); madenlerKapatBtnTxt.anchor.set(0.5, 0.5); madenlerKapatBtnTxt.x = madenlerKapatBtn.x; madenlerKapatBtnTxt.y = madenlerKapatBtn.y; madenlerKapatBtnTxt.visible = false; game.addChild(madenlerKapatBtnTxt); // --- Madenler Panel: Show mines and their info --- var madenlerMineImages = []; var madenlerMineLabels = []; var madenlerMineLevelTxts = []; var madenlerMineProdTxts = []; var madenlerMineUpgradeBtns = []; var madenlerMineUpgradeBtnTxts = []; // Ava: Add auto-produce buttons and texts for Madenler panel var madenlerMineAutoBtns = []; var madenlerMineAutoTxts = []; // --- Ava: Add maden depo stock area to Madenler panel --- var madenDepoPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0, width: 420, height: 90, x: madenlerPanel.x + madenlerPanel.width / 2, y: madenlerPanelText.y + madenlerPanelText.height + 10 }); madenDepoPanel.visible = false; game.addChild(madenDepoPanel); var madenDepoStockTxt = new Text2('', { size: 36, fill: '#ffb' }); madenDepoStockTxt.anchor.set(0.5, 0.5); madenDepoStockTxt.x = madenDepoPanel.x; madenDepoStockTxt.y = madenDepoPanel.y + madenDepoPanel.height / 2; madenDepoStockTxt.visible = false; game.addChild(madenDepoStockTxt); // Helper to update maden depo stock text function updateMadenDepoStockTxt() { madenDepoStockTxt.setText('Bakır: ' + rawMaterials.copper + ' | Silikon: ' + rawMaterials.silicon + ' | Demir: ' + rawMaterials.iron + ' | Gümüş: ' + rawMaterials.silver + ' | Nikel: ' + rawMaterials.nikel + ' | Altın: ' + rawMaterials.gold); } // Wait until 'mines' is defined and has at least 6 elements before creating Madenler panel UI LK.setTimeout(function () { if (!mines || !Array.isArray(mines) || mines.length < 6 || !mines[0] || !mines[1] || !mines[2] || !mines[3] || !mines[4] || !mines[5]) { // Try again next frame if mines are not ready or not an array or not enough elements or any mine is missing LK.setTimeout(arguments.callee, 1); return; } for (var i = 0; i < 6; i++) { // Defensive: skip this iteration if mines is not defined or mines[i] is not defined if (!mines || !Array.isArray(mines) || !mines[i]) { continue; } // --- Ava: 3'lü sıra ve ortalı, hizalı layout için yeni grid hesaplama --- // 3 sütun, 2 satır, ortalı ve eşit aralıklı var colCount = 3; var rowCount = 2; var col = i % colCount; var row = Math.floor(i / colCount); // Panelin kullanılabilir genişliği ve yüksekliği var usableWidth = newPagePanelWidth; var usableHeight = newPagePanelHeight - (madenDepoPanel.y + madenDepoPanel.height + 32 - newPagePanelY) - 60; // depo panelinden aşağısı var gridStartY = madenDepoPanel.y + madenDepoPanel.height + 32; var cellWidth = usableWidth / colCount; var cellHeight = usableHeight / rowCount; // Her hücrenin ortası var mx = madenlerPanel.x + cellWidth * (col + 0.5); var baseY = gridStartY + cellHeight * row + 20; // 20px üst boşluk var y = baseY; var lineGap = 10; var elemGap = 16; var oreType = oreTypes[i]; // Label (top, above mine image) var label = new Text2(oreType.charAt(0).toUpperCase() + oreType.slice(1), { size: 48, fill: '#fff' }); label.anchor.set(0.5, 0); label.x = mx; label.y = y; label.visible = false; game.addChild(label); madenlerMineLabels.push(label); y += label.height + 4; // --- Ava: Show mine stock count directly above the mine image --- var stockTxt = new Text2('' + rawMaterials[oreType], { size: 38, fill: '#ffb' }); stockTxt.anchor.set(0.5, 1); // center horizontally, bottom aligned stockTxt.x = mx; stockTxt.y = y + 8; // 8px below label stockTxt.visible = false; game.addChild(stockTxt); if (!window.madenlerMineStockTxts) { window.madenlerMineStockTxts = []; } window.madenlerMineStockTxts[i] = stockTxt; y += 8 + 8; // 8px gap below stockTxt // Mine image (unique for each ore type) var mineImg = LK.getAsset('mine_' + oreType, { anchorX: 0.5, anchorY: 0.5, width: 180, height: 180, x: mx, y: y + 90 // center mine image at y }); mineImg.visible = false; game.addChild(mineImg); madenlerMineImages.push(mineImg); // Ava: Maden resmine tıklayınca maden üretimi yap (function (idx, mineImgRef) { mineImgRef.down = function (x, y, obj) { if (!madenlerPanel.visible) { return; } if (!mines || !mines[idx]) { return; } if (yatirimPanel && yatirimPanel.visible) { return; } var m = mines[idx]; rawMaterials[m.type] += m.production; if (typeof updateRawText === "function") { updateRawText(); } tween(mineImgRef, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(mineImgRef, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); }; })(i, mineImg); y = mineImg.y + 90 + elemGap; // bottom of mine image + gap // Ore icon (below mine image) var oreImg = LK.getAsset('ore_' + oreType, { anchorX: 0.5, anchorY: 0.5, width: 80, height: 80, x: mx, y: y }); oreImg.visible = false; game.addChild(oreImg); y += 40 + elemGap; // half ore icon + gap // Level text var levelTxt = new Text2('Seviye: ' + mines[i].level, { size: 38, fill: '#ffb' }); levelTxt.anchor.set(0.5, 0); levelTxt.x = mx; levelTxt.y = y; levelTxt.visible = false; game.addChild(levelTxt); madenlerMineLevelTxts.push(levelTxt); y += levelTxt.height + lineGap; // Production text (hidden, but kept for layout consistency) var prodTxt = new Text2('', { size: 38, fill: '#bff', lineHeight: 18 // Satır boşluğunu azalt, görünmez olduğu için küçük tut }); prodTxt.anchor.set(0.5, 0); prodTxt.x = mx; prodTxt.y = y; prodTxt.visible = false; // Her zaman görünmez game.addChild(prodTxt); madenlerMineProdTxts.push(prodTxt); y += 18 + elemGap; // Satır boşluğunu azalt // Upgrade button var upgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 70, x: mx, y: y + 35 // center button }); upgradeBtn.visible = false; game.addChild(upgradeBtn); var upgradeBtnTxt = new Text2('Yükselt\n₺' + mines[i].upgradeCost, { size: 36, fill: '#fff' }); upgradeBtnTxt.anchor.set(0.5, 0.5); upgradeBtnTxt.x = mx; upgradeBtnTxt.y = upgradeBtn.y; upgradeBtnTxt.visible = false; game.addChild(upgradeBtnTxt); madenlerMineUpgradeBtns.push(upgradeBtn); madenlerMineUpgradeBtnTxts.push(upgradeBtnTxt); // Move Oto Üret button 1 row (1x lineGap + 1x elemGap + 1x 38px) further down below the upgrade button y = upgradeBtn.y + upgradeBtn.height / 2 + elemGap + 10; y += (levelTxt.height + lineGap) * 1 + elemGap * 1; // 1 satır aşağıya çıkar // Auto-produce button var autoBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 70, x: mx, y: y }); autoBtn.visible = false; game.addChild(autoBtn); var autoMineCost = (i + 1) * 500; var autoTxt = new Text2('Oto Üret: Kapalı\n₺' + autoMineCost, { size: 36, fill: '#fff', lineHeight: 52 // Satır aralığını artır (default 36, 52 ile daha fazla boşluk) }); autoTxt.anchor.set(0.5, 0.5); autoTxt.x = mx; autoTxt.y = autoBtn.y + 10; // 10px aşağı kaydır autoTxt.visible = false; game.addChild(autoTxt); madenlerMineAutoBtns.push(autoBtn); madenlerMineAutoTxts.push(autoTxt); // Closure for correct index (function (idx, autoBtn, autoTxt, autoMineCost) { autoBtn.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } if (!mineAutoProduce[idx]) { if (money >= autoMineCost) { money -= autoMineCost; updateMoneyText && updateMoneyText(); mineAutoProduce[idx] = true; autoTxt.setText('Oto Üret: Açık'); } else { tween(autoBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(autoBtn, { tint: 0x222222 }, { duration: 120 }); } }); } } // Do not allow disabling after purchase }; })(i, autoBtn, autoTxt, autoMineCost); // Upgrade logic (function (idx) { upgradeBtn.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } var m = mines[idx]; if (money >= m.upgradeCost) { money -= m.upgradeCost; m.upgrade(); madenlerMineLevelTxts[idx].setText('Seviye: ' + m.level); madenlerMineProdTxts[idx].setText('Üretim: ' + m.production); madenlerMineUpgradeBtnTxts[idx].setText('Yükselt\n₺' + m.upgradeCost); updateMoneyText && updateMoneyText(); } else { tween(upgradeBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(upgradeBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; })(i); } }, 1); // Yeni sayfa butonuna tıklanınca paneli aç if (typeof newPageBtn !== "undefined" && newPageBtn) { newPageBtn.down = function (x, y, obj) { // Prevent opening if already open if (newPagePanel && newPagePanel.visible) { return; } // Hide both calisanlarBtnImg and madenlerBtnMineImg, and newPageBtn & newPageBtnTxt until panel closes if (typeof calisanlarBtnImg !== "undefined") calisanlarBtnImg.visible = false; if (typeof madenlerBtnMineImg !== "undefined") madenlerBtnMineImg.visible = false; if (typeof newPageBtn !== "undefined") newPageBtn.visible = false; if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false; if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false; if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false; newPagePanel.visible = true; newPagePanelTitle.visible = true; newPagePanelText.visible = true; newPageKapatBtn.visible = true; newPageKapatBtnTxt.visible = true; // --- Yeni üst kapat butonunu ve label/icon'unu göster --- if (typeof newPageKapatBtnTop !== "undefined") newPageKapatBtnTop.visible = true; if (typeof newPageKapatBtnTopIcon !== "undefined") newPageKapatBtnTopIcon.visible = true; if (typeof newPageKapatBtnTopTxt !== "undefined") newPageKapatBtnTopTxt.visible = true; // Hide all game children except Çalışanlar panel and its UI (panel, title, text, both close buttons and icons/texts, worker images/labels/buttons/texts) for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; // List of allowed elements to remain visible var allowed = [newPagePanel, newPagePanelTitle, newPagePanelText, newPageKapatBtn, newPageKapatBtnTxt, newPageKapatBtnIcon, newPageKapatBtnTop, newPageKapatBtnTopIcon, newPageKapatBtnTopTxt]; // Add all worker UI elements to allowed list if (typeof workerImages !== "undefined" && Array.isArray(workerImages)) { for (var w = 0; w < workerImages.length; w++) { if (workerImages[w].img) allowed.push(workerImages[w].img); if (workerImages[w].label) allowed.push(workerImages[w].label); } } if (typeof worker1LevelTxt !== "undefined") allowed.push(worker1LevelTxt); if (typeof worker1EarningTxt !== "undefined") allowed.push(worker1EarningTxt); if (typeof worker1UpgradeBtn !== "undefined") allowed.push(worker1UpgradeBtn); if (typeof worker1UpgradeBtnTxt !== "undefined") allowed.push(worker1UpgradeBtnTxt); if (typeof worker2LevelTxt !== "undefined") allowed.push(worker2LevelTxt); if (typeof worker2SpeedTxt !== "undefined") allowed.push(worker2SpeedTxt); if (typeof worker2UpgradeBtn !== "undefined") allowed.push(worker2UpgradeBtn); if (typeof worker2UpgradeBtnTxt !== "undefined") allowed.push(worker2UpgradeBtnTxt); if (typeof worker3LevelTxt !== "undefined") allowed.push(worker3LevelTxt); if (typeof worker3DiscountTxt !== "undefined") allowed.push(worker3DiscountTxt); if (typeof worker3UpgradeBtn !== "undefined") allowed.push(worker3UpgradeBtn); if (typeof worker3UpgradeBtnTxt !== "undefined") allowed.push(worker3UpgradeBtnTxt); if (typeof worker4LevelTxt !== "undefined") allowed.push(worker4LevelTxt); if (typeof worker4EarningTxt !== "undefined") allowed.push(worker4EarningTxt); if (typeof worker4UpgradeBtn !== "undefined") allowed.push(worker4UpgradeBtn); if (typeof worker4UpgradeBtnTxt !== "undefined") allowed.push(worker4UpgradeBtnTxt); if (typeof worker5LevelTxt !== "undefined") allowed.push(worker5LevelTxt); if (typeof worker5BonusTxt !== "undefined") allowed.push(worker5BonusTxt); if (typeof worker5UpgradeBtn !== "undefined") allowed.push(worker5UpgradeBtn); if (typeof worker5UpgradeBtnTxt !== "undefined") allowed.push(worker5UpgradeBtnTxt); // Only keep allowed elements visible, hide everything else if (allowed.indexOf(child) === -1) { child._oldVisible = child.visible; child.visible = false; } } }; } // Madenler butonuna tıklanınca paneli aç madenlerBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } // --- Ava: Hide all homepage images when Madenler panel opens --- if (typeof homepageImages === "undefined") { window.homepageImages = []; for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; // Defensive: Only hide images that are not panels, not overlays, not buttons, not Text2, and are visible if (child && typeof child.visible === "boolean" && child.visible && child !== madenlerPanel && child !== madenlerPanelTitle && child !== madenlerPanelText && child !== madenlerKapatBtn && child !== madenlerKapatBtnTxt && child !== madenlerKapatBtnIcon && !(child instanceof Text2) && !(child.assetId && (child.assetId.indexOf("button") === 0 || child.assetId.indexOf("panel") === 0))) { window.homepageImages.push(child); } } } if (window.homepageImages && window.homepageImages.length) { for (var i = 0; i < window.homepageImages.length; i++) { if (window.homepageImages[i] && typeof window.homepageImages[i].visible === "boolean") { window.homepageImages[i]._oldVisible = window.homepageImages[i].visible; window.homepageImages[i].visible = false; } } } madenlerPanel.visible = true; madenlerPanelTitle.visible = true; madenlerPanelText.visible = true; madenlerKapatBtn.visible = true; madenlerKapatBtnIcon.visible = true; madenlerKapatBtnTxt.visible = true; // Ava: Hide calisanlarBtnImg and madenlerBtnMineImg when Madenler panel is open if (typeof calisanlarBtnImg !== "undefined") calisanlarBtnImg.visible = false; if (typeof madenlerBtnMineImg !== "undefined") madenlerBtnMineImg.visible = false; // Ava: Show and update maden depo stock area madenDepoPanel.visible = true; madenDepoStockTxt.visible = true; updateMadenDepoStockTxt(); // Hide all homepage buttons/UI if (typeof magazaBtn !== "undefined") { magazaBtn.visible = false; } if (typeof magazaBtnTxt !== "undefined") { magazaBtnTxt.visible = false; } if (typeof yatirimBtn !== "undefined") { yatirimBtn.visible = false; } if (typeof yatirimBtnTxt !== "undefined") { yatirimBtnTxt.visible = false; } if (typeof bankBtn !== "undefined") { bankBtn.visible = false; } if (typeof bankBtnTxt !== "undefined") { bankBtnTxt.visible = false; } if (typeof soundBtn !== "undefined") { soundBtn.visible = false; } if (typeof soundBtnTxt !== "undefined") { soundBtnTxt.visible = false; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = false; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = false; } if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = false; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = false; } if (typeof languagesBtn !== "undefined") { languagesBtn.visible = false; } if (typeof languagesBtnTxt !== "undefined") { languagesBtnTxt.visible = false; } if (typeof infoBtn !== "undefined") { infoBtn.visible = false; } if (typeof infoBtnTxt !== "undefined") { infoBtnTxt.visible = false; } if (typeof howToBtn !== "undefined") { howToBtn.visible = false; } if (typeof howToBtnTxt !== "undefined") { howToBtnTxt.visible = false; } // Prevent hiding Store3/Store4 purchase buttons if Mağazalar panel is open if (magazalarPanel && magazalarPanel.visible) { if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") { store3PurchaseBtn.visible = !store3Purchased; store3PurchaseBtnTxt.visible = !store3Purchased; } if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") { store4PurchaseBtn.visible = !store4Purchased; store4PurchaseBtnTxt.visible = !store4Purchased; } } // Show all mine UIs for (var i = 0; i < 6; i++) { // Defensive: skip if mines or mines[i] is not defined if (!mines || !mines[i]) { continue; } madenlerMineImages[i].visible = true; madenlerMineLabels[i].visible = true; madenlerMineLevelTxts[i].visible = true; // Hide production amount text madenlerMineProdTxts[i].visible = false; madenlerMineUpgradeBtns[i].visible = true; madenlerMineUpgradeBtnTxts[i].visible = true; // Ava: Show stock count text above each mine image if (window.madenlerMineStockTxts && window.madenlerMineStockTxts[i]) { window.madenlerMineStockTxts[i].visible = true; // Update stock count var oreType = oreTypes[i]; window.madenlerMineStockTxts[i].setText('' + rawMaterials[oreType]); } // Ava: Show auto-produce button and text for each mine if (madenlerMineAutoBtns[i]) { madenlerMineAutoBtns[i].visible = true; } if (madenlerMineAutoTxts[i]) { // Update text to reflect current state if (mineAutoProduce[i]) { madenlerMineAutoTxts[i].setText('Oto Üret: Açık'); } else { var autoMineCost = (i + 1) * 500; madenlerMineAutoTxts[i].setText('Oto Üret: Kapalı\n₺' + autoMineCost); } madenlerMineAutoTxts[i].visible = true; // Satır aralığını ve konumunu tekrar ayarla madenlerMineAutoTxts[i].lineHeight = 52; madenlerMineAutoTxts[i].y = madenlerMineAutoBtns[i].y + 10; } // Update texts in case level/production changed madenlerMineLevelTxts[i].setText('Seviye: ' + mines[i].level); madenlerMineProdTxts[i].setText('Üretim: ' + mines[i].production); madenlerMineUpgradeBtnTxts[i].setText('Yükselt\n₺' + mines[i].upgradeCost); } // Paneli en öne getir if (game.setChildIndex) { game.setChildIndex(madenlerPanel, game.children.length - 1); game.setChildIndex(madenlerPanelTitle, game.children.length - 1); game.setChildIndex(madenlerPanelText, game.children.length - 1); game.setChildIndex(madenlerKapatBtn, game.children.length - 1); game.setChildIndex(madenlerKapatBtnTxt, game.children.length - 1); if (typeof madenlerKapatBtnIcon !== "undefined") { game.setChildIndex(madenlerKapatBtnIcon, game.children.length - 1); } // Ava: Bring maden depo panel and text to front game.setChildIndex(madenDepoPanel, game.children.length - 1); game.setChildIndex(madenDepoStockTxt, game.children.length - 1); for (var i = 0; i < 6; i++) { if (!mines || !mines[i]) { continue; } game.setChildIndex(madenlerMineImages[i], game.children.length - 1); game.setChildIndex(madenlerMineLabels[i], game.children.length - 1); game.setChildIndex(madenlerMineLevelTxts[i], game.children.length - 1); game.setChildIndex(madenlerMineProdTxts[i], game.children.length - 1); game.setChildIndex(madenlerMineUpgradeBtns[i], game.children.length - 1); game.setChildIndex(madenlerMineUpgradeBtnTxts[i], game.children.length - 1); // Ava: Bring auto-produce button and text to front if (madenlerMineAutoBtns[i]) { game.setChildIndex(madenlerMineAutoBtns[i], game.children.length - 1); } if (madenlerMineAutoTxts[i]) { game.setChildIndex(madenlerMineAutoTxts[i], game.children.length - 1); } } // Ava: Move homepage buttons behind the panel if (typeof magazaBtn !== "undefined" && magazaBtn.parent === game) { game.setChildIndex(magazaBtn, 0); } if (typeof magazaBtnTxt !== "undefined" && magazaBtnTxt.parent === game) { game.setChildIndex(magazaBtnTxt, 0); } if (typeof yatirimBtn !== "undefined" && yatirimBtn.parent === game) { game.setChildIndex(yatirimBtn, 0); } if (typeof yatirimBtnTxt !== "undefined" && yatirimBtnTxt.parent === game) { game.setChildIndex(yatirimBtnTxt, 0); } if (typeof bankBtn !== "undefined" && bankBtn.parent === game) { game.setChildIndex(bankBtn, 0); } if (typeof bankBtnTxt !== "undefined" && bankBtnTxt.parent === game) { game.setChildIndex(bankBtnTxt, 0); } if (typeof soundBtn !== "undefined" && soundBtn.parent === game) { game.setChildIndex(soundBtn, 0); } if (typeof soundBtnTxt !== "undefined" && soundBtnTxt.parent === game) { game.setChildIndex(soundBtnTxt, 0); } if (typeof newPageBtn !== "undefined" && newPageBtn.parent === game) { game.setChildIndex(newPageBtn, 0); } if (typeof newPageBtnTxt !== "undefined" && newPageBtnTxt.parent === game) { game.setChildIndex(newPageBtnTxt, 0); } if (typeof madenlerBtn !== "undefined" && madenlerBtn.parent === game) { game.setChildIndex(madenlerBtn, 0); } if (typeof madenlerBtnTxt !== "undefined" && madenlerBtnTxt.parent === game) { game.setChildIndex(madenlerBtnTxt, 0); } if (typeof languagesBtn !== "undefined" && languagesBtn.parent === game) { game.setChildIndex(languagesBtn, 0); } if (typeof languagesBtnTxt !== "undefined" && languagesBtnTxt.parent === game) { game.setChildIndex(languagesBtnTxt, 0); } if (typeof infoBtn !== "undefined" && infoBtn.parent === game) { game.setChildIndex(infoBtn, 0); } if (typeof infoBtnTxt !== "undefined" && infoBtnTxt.parent === game) { game.setChildIndex(infoBtnTxt, 0); } if (typeof howToBtn !== "undefined" && howToBtn.parent === game) { game.setChildIndex(howToBtn, 0); } if (typeof howToBtnTxt !== "undefined" && howToBtnTxt.parent === game) { game.setChildIndex(howToBtnTxt, 0); } } }; // Paneli kapatmak için kapat butonu newPageKapatBtn.down = function (x, y, obj) { newPagePanel.visible = false; newPagePanelTitle.visible = false; newPagePanelText.visible = false; newPageKapatBtn.visible = false; newPageKapatBtnTxt.visible = false; // --- Yeni üst kapat butonunu ve label/icon'unu gizle --- if (typeof newPageKapatBtnTop !== "undefined") newPageKapatBtnTop.visible = false; if (typeof newPageKapatBtnTopIcon !== "undefined") newPageKapatBtnTopIcon.visible = false; if (typeof newPageKapatBtnTopTxt !== "undefined") newPageKapatBtnTopTxt.visible = false; // Restore all game children visibility except overlay and panel content (like Madenler panel) for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; if (child !== fullscreenOverlay && child !== newPageOverlay && child !== newPagePanel && child !== newPagePanelTitle && child !== newPagePanelText && child !== newPageKapatBtn && child !== newPageKapatBtnTxt) { if (typeof child._oldVisible !== "undefined") { child.visible = child._oldVisible; delete child._oldVisible; } else { child.visible = true; } } } // --- Ava: Defensive fix for Mevduat panel interaction bug --- // If Mevduat panel was open before, re-enable all factory/factoryUnlock/prod/auto buttons if (typeof factoryBtns !== "undefined" && Array.isArray(factoryBtns)) { for (var i = 0; i < factoryBtns.length; i++) { if (factoryBtns[i] && factoryBtns[i]._origDown) { factoryBtns[i].down = factoryBtns[i]._origDown; delete factoryBtns[i]._origDown; } } } if (typeof factoryUnlockBtns !== "undefined" && Array.isArray(factoryUnlockBtns)) { for (var i = 0; i < factoryUnlockBtns.length; i++) { if (factoryUnlockBtns[i] && factoryUnlockBtns[i]._origDown) { factoryUnlockBtns[i].down = factoryUnlockBtns[i]._origDown; delete factoryUnlockBtns[i]._origDown; } } } if (typeof prodBtns !== "undefined" && Array.isArray(prodBtns)) { for (var i = 0; i < prodBtns.length; i++) { if (prodBtns[i] && prodBtns[i]._origDown) { prodBtns[i].down = prodBtns[i]._origDown; delete prodBtns[i]._origDown; } } } if (typeof factoryAutoBtns !== "undefined" && Array.isArray(factoryAutoBtns)) { for (var i = 0; i < factoryAutoBtns.length; i++) { if (factoryAutoBtns[i] && factoryAutoBtns[i]._origDown) { factoryAutoBtns[i].down = factoryAutoBtns[i]._origDown; delete factoryAutoBtns[i]._origDown; } } } for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; if (child && child.isFactoryButton && child._origDown) { child.down = child._origDown; delete child._origDown; } } }; // Madenler panelini kapatmak için kapat butonu madenlerKapatBtn.down = function (x, y, obj) { madenlerPanel.visible = false; madenlerPanelTitle.visible = false; madenlerPanelText.visible = false; madenlerKapatBtn.visible = false; madenlerKapatBtnIcon.visible = false; madenlerKapatBtnTxt.visible = false; // Ava: Hide maden depo stock area madenDepoPanel.visible = false; madenDepoStockTxt.visible = false; // Show all homepage buttons/UI if (typeof magazaBtn !== "undefined") { magazaBtn.visible = true; } if (typeof magazaBtnTxt !== "undefined") { magazaBtnTxt.visible = true; } if (typeof yatirimBtn !== "undefined") { yatirimBtn.visible = true; } if (typeof yatirimBtnTxt !== "undefined") { yatirimBtnTxt.visible = true; } if (typeof bankBtn !== "undefined") { bankBtn.visible = true; } if (typeof bankBtnTxt !== "undefined") { bankBtnTxt.visible = true; } if (typeof soundBtn !== "undefined") { soundBtn.visible = true; } if (typeof soundBtnTxt !== "undefined") { soundBtnTxt.visible = true; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = true; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = true; } if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = true; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = true; } if (typeof madenlerBtnMineImg !== "undefined") { madenlerBtnMineImg.visible = true; } if (typeof calisanlarBtnImg !== "undefined") { calisanlarBtnImg.visible = true; } if (typeof languagesBtn !== "undefined") { languagesBtn.visible = true; } if (typeof languagesBtnTxt !== "undefined") { languagesBtnTxt.visible = true; } // Info and How To Play buttons are never shown for (var i = 0; i < 6; i++) { // Defensive: skip if mines or mines[i] is not defined if (!mines || !mines[i]) { continue; } madenlerMineImages[i].visible = false; madenlerMineLabels[i].visible = false; madenlerMineLevelTxts[i].visible = false; madenlerMineProdTxts[i].visible = false; madenlerMineUpgradeBtns[i].visible = false; madenlerMineUpgradeBtnTxts[i].visible = false; // Ava: Hide stock count text above each mine image if (window.madenlerMineStockTxts && window.madenlerMineStockTxts[i]) { window.madenlerMineStockTxts[i].visible = false; } // Ava: Hide auto-produce button and text for each mine if (madenlerMineAutoBtns[i]) { madenlerMineAutoBtns[i].visible = false; } if (madenlerMineAutoTxts[i]) { madenlerMineAutoTxts[i].visible = false; } } // --- Ava: Restore all homepage images when Madenler panel closes --- if (window.homepageImages && window.homepageImages.length) { for (var i = 0; i < window.homepageImages.length; i++) { if (window.homepageImages[i] && typeof window.homepageImages[i].visible === "boolean") { if (typeof window.homepageImages[i]._oldVisible !== "undefined") { window.homepageImages[i].visible = window.homepageImages[i]._oldVisible; delete window.homepageImages[i]._oldVisible; } else { window.homepageImages[i].visible = true; } } } } }; // INFO butonunu Yatırım butonunun altına ekle // Info and How To Play buttons are removed from the homepage and never shown. // Languages butonunu "Nasıl Oynanır" butonunun altına ekle // Defensive: Define a dummy howToBtn if not already defined to prevent undefined error if (typeof howToBtn === "undefined") { var howToBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); howToBtn.x = 120; howToBtn.y = 120; LK.gui.top.addChild(howToBtn); } // --- Sound Toggle Icon Button --- // Use a simple colored box as icon: green for sound on, red for sound off var soundOnColor = 0x83de44; var soundOffColor = 0xd83318; // Sound button is created after languagesBtn to ensure languagesBtn is defined var soundBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 70, height: 70 }); // Place soundBtn below the mine image (madenlerBtnMineImg) and center it horizontally if (typeof madenlerBtnMineImg !== "undefined" && madenlerBtnMineImg) { soundBtn.x = madenlerBtnMineImg.x; // Move 1% of screen height (2732) further down from the mine image soundBtn.y = madenlerBtnMineImg.y + madenlerBtnMineImg.height + 24 + Math.floor(2732 * 0.01); } else { // fallback to previous position if mine image is not defined soundBtn.x = 120 + 140 + 70 + 20; soundBtn.y = 120 + 54 + 20; } LK.gui.top.addChild(soundBtn); // Sound icon state var isSoundOn = true; soundBtn.tint = soundOnColor; // Optional: Add a speaker icon text var soundBtnTxt = new Text2("\uD83D\uDD0A", { size: 38, fill: '#fff' }); soundBtnTxt.anchor.set(0.5, 0.5); soundBtnTxt.x = soundBtn.x; soundBtnTxt.y = soundBtn.y; LK.gui.top.addChild(soundBtnTxt); // Sound toggle logic soundBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } isSoundOn = !isSoundOn; if (isSoundOn) { soundBtn.tint = soundOnColor; soundBtnTxt.setText("\uD83D\uDD0A"); // Speaker // Resume music LK.playMusic('ArkaplanMuzik', { fade: { start: 0, end: 1, duration: 300 } }); } else { soundBtn.tint = soundOffColor; soundBtnTxt.setText("\uD83D\uDD07"); // Muted speaker // Stop music LK.stopMusic(); } // Animate for feedback tween(soundBtn, { scaleX: 1.15, scaleY: 1.15 }, { duration: 80, onFinish: function onFinish() { tween(soundBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); }; // "Nasıl Oynanır" butonuna tıklanınca info panelini aç howToBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } // Butona animasyon ekle tween(howToBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(howToBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); // Info panel popup and all related UI removed. Only the homepage info panel below stock panel remains. }; // Info panel popup and all related UI removed. Only the homepage info panel below stock panel remains. // --- Ava: Move homepage info panel button background (yazısız kutu) completely offscreen and hide it visually --- // Defensive: Move and hide infoPanel after all UI is created and positioned LK.setTimeout(function () { if (typeof infoPanel !== "undefined" && infoPanel) { // Move infoPanel far offscreen (top left, negative coordinates) infoPanel.x = -99999; infoPanel.y = -99999; // Make it invisible infoPanel.visible = false; // Optionally, send to back if parent is game if (infoPanel.parent === game && typeof game.setChildIndex === "function") { game.setChildIndex(infoPanel, 0); } } else { // Try again next frame if not ready LK.setTimeout(arguments.callee, 1); } }, 1); // (Languages panel and all related UI and logic removed) borcOdeBtn.down = function (x, y, obj) { if (borc > 0) { var odeme = Math.min(money, borc); if (odeme > 0) { money -= odeme; toplamBorcOdeme += odeme; borc -= odeme; if (borc < 0) { borc = 0; } updateMoneyText(); updateBorcText(); } // If borç is now 0, clear timers if (borc <= 0) { borc = 0; updateBorcText(); if (typeof borcOdemeTimer !== "undefined" && borcOdemeTimer) { LK.clearInterval(borcOdemeTimer); borcOdemeTimer = null; } if (typeof borcOdemeTimeTimer !== "undefined" && borcOdemeTimeTimer) { LK.clearInterval(borcOdemeTimeTimer); borcOdemeTimeTimer = null; } } } else { // Flash button red if no debt tween(borcOdeBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(borcOdeBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; // Repayment time text var borcTimeTxt = new Text2('', { size: 28, fill: '#ffb' }); borcTimeTxt.anchor.set(0.5, 0); borcTimeTxt.x = borcTxt.x; borcTimeTxt.y = borcTxt.y + 28; LK.gui.top.addChild(borcTimeTxt); var borcOdemeKalan = 0; // seconds left to next repayment var borcOdemeTimeTimer = null; function updateBorcText() { if (borc > 0) { borcTxt.setText('Borç: ₺' + borc); if (borcOdemeKalan > 0) { var min = Math.floor(borcOdemeKalan / 60); var sec = borcOdemeKalan % 60; var timeStr = min > 0 ? min + " dk " + (sec < 10 ? "0" : "") + sec + " sn" : sec + " sn"; borcTimeTxt.setText("Geri ödeme: " + timeStr); } else { borcTimeTxt.setText(''); } } else { borcTxt.setText(''); borcTimeTxt.setText(''); } } updateBorcText(); var borcOdemeTimer = null; bankBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) { return; } // Only allow one active loan at a time if (borc > 0) { // Flash button red to indicate already borrowed tween(bankBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(bankBtn, { tint: 0x222222 }, { duration: 120 }); } }); return; } // Borç alındığında mevcut bakiyenin %10'u kadar borç ver var loanAmount = Math.floor(money * 0.10); if (loanAmount < 1) loanAmount = 1; // Minimum 1 TL borç verilsin borc = loanAmount; money += loanAmount; updateMoneyText(); updateBorcText(); // Start repayment every 10 minutes (600s = 36000 frames) if (borcOdemeTimer) { LK.clearInterval(borcOdemeTimer); } if (borcOdemeTimeTimer) { LK.clearInterval(borcOdemeTimeTimer); } borcOdemeKalan = 600; // seconds to next repayment (10 minutes) updateBorcText(); // Repayment time countdown, updates every 1 second borcOdemeTimeTimer = LK.setInterval(function () { if (borc > 0) { borcOdemeKalan--; if (borcOdemeKalan < 0) { borcOdemeKalan = 0; } updateBorcText(); } else { borcOdemeKalan = 0; updateBorcText(); if (borcOdemeTimeTimer) { LK.clearInterval(borcOdemeTimeTimer); borcOdemeTimeTimer = null; } } }, 60); // 1 second at 60fps borcOdemeTimer = LK.setInterval(function () { if (borc > 0) { var odeme = Math.ceil(borc * 0.25); if (money >= odeme) { money -= odeme; borc -= odeme; if (borc < 0) { borc = 0; } updateMoneyText(); updateBorcText(); } else { // Not enough money, take all money and reduce borc accordingly borc -= money; money = 0; if (borc < 0) { borc = 0; } updateMoneyText(); updateBorcText(); } if (borc <= 0) { borc = 0; updateBorcText(); if (borcOdemeTimer) { LK.clearInterval(borcOdemeTimer); borcOdemeTimer = null; } if (borcOdemeTimeTimer) { LK.clearInterval(borcOdemeTimeTimer); borcOdemeTimeTimer = null; } } borcOdemeKalan = 600; // reset repayment time for next cycle (10 minutes) updateBorcText(); } }, 36000); // 10 minutes at 60fps }; // --- Madenlerin stok yazılarını maden resimlerinin tam üstüne ve ortasına yerleştir --- // Madenler oluşturulmadan önce tanımlanıyor, mines dizisi aşağıda dolacak var copperRawTxt, siliconRawTxt, ironRawTxt; // Global function to update raw material texts function updateRawText() { if (typeof copperRawTxt !== "undefined" && copperRawTxt) { copperRawTxt.setText('Bakır: ' + rawMaterials.copper); } if (typeof siliconRawTxt !== "undefined" && siliconRawTxt) { siliconRawTxt.setText('Silikon: ' + rawMaterials.silicon); } if (typeof ironRawTxt !== "undefined" && ironRawTxt) { ironRawTxt.setText('Demir: ' + rawMaterials.iron); } // Ava: Update stock count text in Madenler panel if visible if (window.madenlerMineStockTxts) { for (var i = 0; i < 6; i++) { if (window.madenlerMineStockTxts[i]) { var oreType = oreTypes[i]; // Defensive: check rawMaterials[oreType] exists var stock = rawMaterials && typeof rawMaterials[oreType] !== "undefined" ? rawMaterials[oreType] : 0; window.madenlerMineStockTxts[i].setText('' + stock); } } } // Ava: Update maden depo stock area if visible if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && typeof updateMadenDepoStockTxt === "function") { if (madenDepoStockTxt.visible === true) { updateMadenDepoStockTxt(); } } } // Defensive: updateRawText should not assume mines[i] exists when called elsewhere // Madenler oluşturulduktan sonra, mines dizisi dolduktan sonra konumlandır LK.setTimeout(function () { // Güvenli kontrol: mines ve her mine var mı if (mines && mines.length >= 6 && mines[0] && mines[1] && mines[2]) { // Bakır copperRawTxt = new Text2('', { size: 40, fill: '#ffb', fontWeight: 'bold' }); copperRawTxt.anchor.set(0.5, 0.5); if (mines[0] && typeof mines[0].x === "number" && typeof mines[0].y === "number") { copperRawTxt.x = mines[0].x; copperRawTxt.y = mines[0].y; } else { copperRawTxt.x = 0; copperRawTxt.y = 0; } game.addChild(copperRawTxt); // Silikon siliconRawTxt = new Text2('', { size: 40, fill: '#ffb', fontWeight: 'bold' }); siliconRawTxt.anchor.set(0.5, 0.5); if (mines[1] && typeof mines[1].x === "number" && typeof mines[1].y === "number") { siliconRawTxt.x = mines[1].x; siliconRawTxt.y = mines[1].y; } else { siliconRawTxt.x = 0; siliconRawTxt.y = 0; } game.addChild(siliconRawTxt); // Demir ironRawTxt = new Text2('', { size: 40, fill: '#ffb', fontWeight: 'bold' }); ironRawTxt.anchor.set(0.5, 0.5); if (mines[2] && typeof mines[2].x === "number" && typeof mines[2].y === "number") { ironRawTxt.x = mines[2].x; ironRawTxt.y = mines[2].y; } else { ironRawTxt.x = 0; ironRawTxt.y = 0; } game.addChild(ironRawTxt); // Gümüş // (Optional: add silverRawTxt if needed in future) // Nikel // (Optional: add nikelRawTxt if needed in future) // Altın // (Optional: add goldRawTxt if needed in future) updateRawText(); } }, 1); // mines dizisinin dolmasını bekle (1 frame sonra çalıştır) // Panel for parts count, placed below the sales offers (below sellPanel) // Ensure sellPanel is defined before using its x/y var partsPanelX = 120; // default fallback var partsPanelY = 1366 + 400 + 340 / 2 + 60; // biraz daha aşağı (ekstra +30px) if (typeof sellPanel !== "undefined" && sellPanel && typeof sellPanel.x === "number" && typeof sellPanel.y === "number" && typeof sellPanel.height === "number") { partsPanelX = sellPanel.x; partsPanelY = sellPanel.y + sellPanel.height / 2 + 60; // biraz daha aşağı (ekstra +30px) } // Panel boyutunu yazı boyutuna göre ayarla (2 sütun, 5 satır, her label max 13 karakter, font size 32, padding 24px) // Paneli üstteki sellPanel ile aynı genişlikte ve hizada yap // Panel genişliğini sağdan biraz daha küçült (ör: 1 kademe = 24px azalt) var partsPanelWidth = (typeof sellPanel !== "undefined" && sellPanel ? sellPanel.width : 2 * 13 * 18 + 48) - 72; // 72px azaltıldı (3 kademe) var partsPanelHeight = 5 * 38 + 36; // 5 satır * satır yüksekliği + padding var partsPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0, width: partsPanelWidth, height: partsPanelHeight, x: partsPanelX, y: partsPanelY // sellPanel'den biraz daha aşağı }); game.addChild(partsPanel); var partsTxt = new Text2('', { size: 32, fill: '#bff' }); // Yazıları panelin sağ kenarına hizala partsTxt.anchor.set(1, 0.5); partsTxt.x = partsPanel.x + partsPanel.width / 2 - 16; // sağdan 16px padding bırak (panel küçüldüğü için padding azaltıldı) partsTxt.y = partsPanel.y + partsPanel.height / 2; game.addChild(partsTxt); // --- Info panelini stok panelinin altına hizalı ve arkaplanlı ekle --- // Panel genişliği ve hizası partsPanel ile aynı olacak şekilde ayarlanır var infoPanelBelowStockWidth = partsPanel.width; // Info panelini aşağı doğru %400 oranında büyüt // Paneli alt ve üstten %10 oranında küçült (toplamda %20 daha kısa yap) var infoPanelBelowStockHeight = Math.floor(90 * 4 * 0.8); // 360px * 0.8 = 288px var infoPanelBelowStockX = partsPanel.x; var infoPanelBelowStockY = partsPanel.y + partsPanel.height + 24; // stok panelinin hemen altı, 24px boşluk // Arkaplan paneli (button asseti ile) var infoPanelBelowStock = LK.getAsset('button', { anchorX: 0.5, anchorY: 0, width: infoPanelBelowStockWidth, height: infoPanelBelowStockHeight, x: infoPanelBelowStockX, y: infoPanelBelowStockY, color: 0x222a38 // Hafif koyu mavi/gri arkaplan }); game.addChild(infoPanelBelowStock); // Info yazısını panelin ortasına ve satır aralığı artırılmış şekilde hizala var infoBelowStockText = new Text2('Bilgi: Bilgisayar parçalarını üretmek ve satmak için madenlerden ham madde toplayın, fabrikalarda üretim yapın ve mağazada satın.', { size: 28, fill: '#fff', lineHeight: 48, // Satır aralığını artır (daha ferah görünüm için) wordWrap: true, wordWrapWidth: infoPanelBelowStockWidth - 40 // 20px sağ-sol padding }); infoBelowStockText.anchor.set(0.5, 0.5); // Panelin tam ortasına hizala (yeni yükseklikle) infoBelowStockText.x = infoPanelBelowStock.x + 56; // 1 font daha sağa (yaklaşık 28px daha) // Panelin yeni yüksekliğiyle tam ortasına hizala infoBelowStockText.y = infoPanelBelowStock.y + infoPanelBelowStockHeight / 2; game.addChild(infoBelowStockText); function updatePartsText() { // 2 sütun, 5 satır olacak şekilde ürünleri aşağı doğru sırala // Her satırda iki sütun olacak şekilde, sağa hizalı var lines = ['', '', '', '', '']; for (var i = 0; i < partTypes.length; i++) { var label = (i === 0 ? "MOUSE" : i === 1 ? "KLAVYE" : i === 6 ? "CPU" : i === 7 ? "GPU" : i === 8 ? "MONITOR" : i === 9 ? "KASA" : partTypes[i].toUpperCase()) + ':' + parts[partTypes[i]]; var row = i % 5; var col = Math.floor(i / 5); if (col === 0) { lines[row] = label; } else { // Sola boşluk ekle, sağa hizalı olması için iki sütun arası boşluk artırıldı var maxLabelLen = 13; var left = lines[row]; var right = label; // Her iki sütunu da sağa hizalamak için, satırın toplam uzunluğunu panel genişliğine göre ayarla // 2 sütun arası 8 boşluk bırak var pad = " "; lines[row] = left + pad + right; } } partsTxt.setText(lines.join('\n')); if (magazaMuhasebeText && magazaMuhasebeText.visible) { updateMagazaMuhasebeText(); } } updatePartsText(); // Arkaplan müziğini başlat LK.playMusic('ArkaplanMuzik'); // --- Workers moved to new page panel --- var workerImages = []; // Her çalışana farklı bir resim atanacak şekilde image id'leri belirle var workerImageIds = ['6830b806dc6f2ae53a448901', '6830b6cfdc6f2ae53a4488d7', '6830b789dc6f2ae53a4488e8', '6830c278dc6f2ae53a4489a4', '6830ba15dc6f2ae53a448943']; var workerNames = ['Çalışan 1', 'Çalışan 2', 'Çalışan 3', 'Çalışan 4', 'Çalışan 5']; // Çalışanlar yeni sayfa panelinde gösterilecek var workerCount = 5; // --- 3'lü sıra halinde alt alta dizilim için yeni konumlandırma --- // 3 sütun, 2 satır (son satırda 2 çalışan olacak şekilde) var workerRows = 2; var workerCols = 3; var workerPanelMarginTop = 60; // başlık ve "Çalışanlar" yazısı için üstte daha fazla boşluk bırak var workerPanelMarginBottom = 80; var workerPanelHeight = newPagePanelHeight - workerPanelMarginTop - workerPanelMarginBottom; var workerPanelWidth = newPagePanelWidth; var workerCellWidth = Math.floor(workerPanelWidth / workerCols); var workerCellHeight = Math.floor(workerPanelHeight / workerRows); // "Çalışanlar" başlığının altına hizalamak için Y başlangıcı var workerGridStartY = newPagePanelText.y + newPagePanelText.height + 40; // başlığın altından 40px boşluk // Her çalışanın paneldeki X ve Y koordinatlarını hesapla function getWorkerPanelPos(idx) { // 0,1,2 üst satır; 3,4 alt satır var row = Math.floor(idx / workerCols); var col = idx % workerCols; // Son satırda çalışan sayısı 2 ise ortala if (row === 1 && workerCount === 5) { // 2 çalışanı ortalamak için col: 0 ve 1 için X ayarla var colInRow = idx - workerCols; // 3->0, 4->1 var x = newPagePanel.x + workerCellWidth * (colInRow + 1); var y = workerGridStartY + workerCellHeight * row + workerCellHeight / 2; return { x: x, y: y }; } else { // Üst satırda 3 çalışanı eşit aralıklı dağıt var x = newPagePanel.x + workerCellWidth * (col + 0.5); var y = workerGridStartY + workerCellHeight * row + workerCellHeight / 2; return { x: x, y: y }; } } // Çalışan 1 için seviye, kazanç oranı ve butonlar var worker1Level = 1; var worker1EarningBase = 10; var worker1UpgradeCost = 200; var worker1EarningTxt = null; var worker1LevelTxt = null; var worker1UpgradeBtn = null; var worker1UpgradeBtnTxt = null; // Çalışan 2 için seviye, üretim süresi azaltma ve butonlar var worker2Level = 1; var worker2UpgradeCost = 250; var worker2LevelTxt = null; var worker2SpeedTxt = null; var worker2UpgradeBtn = null; var worker2UpgradeBtnTxt = null; // Çalışan 3 için seviye, fabrika yükseltme maliyeti indirim oranı ve butonlar var worker3Level = 1; var worker3UpgradeCost = 300; var worker3LevelTxt = null; var worker3DiscountTxt = null; var worker3UpgradeBtn = null; var worker3UpgradeBtnTxt = null; // Çalışan 4 için seviye, tıklama kazancı ve butonlar var worker4Level = 1; var worker4BaseEarning = 50; var worker4UpgradeCost = 1000; var worker4EarningTxt = null; var worker4LevelTxt = null; var worker4UpgradeBtn = null; var worker4UpgradeBtnTxt = null; // Çalışan 5 için seviye, bonus ve butonlar var worker5Level = 1; var worker5BaseBonus = 0.05; var worker5UpgradeCost = 2000; var worker5BonusTxt = null; var worker5LevelTxt = null; var worker5UpgradeBtn = null; var worker5UpgradeBtnTxt = null; // Çalışan UI'larını panelde oluştur, başta görünmez // --- Ava: workerGapX ve workerY'yi tanımla (panelin genişliğine ve grid'e göre) --- var workerGapX = newPagePanelWidth / 6; // 3 sütun için 6 aralık (kenarlarda boşluk) var workerY = newPagePanelY + newPagePanelHeight / 2; // Panelin ortası (varsayılan, grid ile override edilir) for (var i = 0; i < 5; i++) { // Dağılımı tam ekran panelde ortala var workerX = workerGapX * (i + 1); var workerImg = LK.getAsset('worker' + (i + 1), { anchorX: 0.5, anchorY: 0.5, width: 140, height: 140, x: workerX, y: workerY }); workerImg.visible = false; game.addChild(workerImg); var workerLabel = new Text2(workerNames[i], { size: 40, fill: '#fff', lineHeight: 52 // madenler panelindeki gibi 52 px satır aralığı }); workerLabel.anchor.set(0.5, 0); // Resmin alt kenarına ve ortasına hizala workerLabel.x = workerImg.x; workerLabel.y = workerImg.y + workerImg.height / 2 + 10; // 10px aşağı boşluk bırak workerLabel.visible = false; game.addChild(workerLabel); // Çalışan alt açıklama yazılarını (seviye, kazanç, bonus, vs) alt alta hizalı şekilde ayarlamak için // Her çalışan için alt açıklama yazıları bir diziye alınacak ve alt alta sıralanacak // (Aşağıda ilgili UI'lar eklenirken y konumları bu düzene göre ayarlanacak) // Çalışan 1 için seviye, kazanç ve buton ekle if (i === 0) { worker1LevelTxt = new Text2('Seviye: ' + worker1Level, { size: 36, fill: '#ffb' }); worker1LevelTxt.anchor.set(0.5, 0); worker1LevelTxt.x = workerImg.x; worker1LevelTxt.y = workerLabel.y + 32; worker1LevelTxt.visible = false; game.addChild(worker1LevelTxt); worker1EarningTxt = new Text2('Kazanç: ₺' + Math.round(worker1EarningBase * Math.pow(1.02, worker1Level - 1)), { size: 36, fill: '#bff' }); worker1EarningTxt.anchor.set(0.5, 0); worker1EarningTxt.x = workerImg.x; worker1EarningTxt.y = worker1LevelTxt.y + worker1LevelTxt.height + 4; worker1EarningTxt.visible = false; game.addChild(worker1EarningTxt); worker1UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 64, x: workerImg.x, y: worker1EarningTxt.y + worker1EarningTxt.height + 18 }); worker1UpgradeBtn.visible = false; game.addChild(worker1UpgradeBtn); worker1UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker1UpgradeCost, { size: 36, fill: '#fff' }); worker1UpgradeBtnTxt.anchor.set(0.5, 0.5); worker1UpgradeBtnTxt.x = worker1UpgradeBtn.x; worker1UpgradeBtnTxt.y = worker1UpgradeBtn.y; worker1UpgradeBtnTxt.visible = false; game.addChild(worker1UpgradeBtnTxt); worker1UpgradeBtn.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } if (money >= worker1UpgradeCost) { money -= worker1UpgradeCost; worker1Level += 1; worker1UpgradeCost = Math.floor(worker1UpgradeCost * 2.2); updateMoneyText(); worker1LevelTxt.setText('Seviye: ' + worker1Level); worker1EarningTxt.setText('Kazanç: ₺' + Math.round(worker1EarningBase * Math.pow(1.02, worker1Level - 1))); worker1UpgradeBtnTxt.setText('Yükselt\n₺' + worker1UpgradeCost); tween(worker1UpgradeBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(worker1UpgradeBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { tween(worker1UpgradeBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(worker1UpgradeBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; } // Çalışan 2 için seviye, üretim süresi azaltma ve buton ekle if (i === 1) { worker2LevelTxt = new Text2('Seviye: ' + worker2Level, { size: 36, fill: '#ffb' }); worker2LevelTxt.anchor.set(0.5, 0); worker2LevelTxt.x = workerImg.x; worker2LevelTxt.y = workerLabel.y + 32; worker2LevelTxt.visible = false; game.addChild(worker2LevelTxt); worker2SpeedTxt = new Text2('Üretim Süresi: -%0', { size: 36, fill: '#bff' }); worker2SpeedTxt.anchor.set(0.5, 0); worker2SpeedTxt.x = workerImg.x; worker2SpeedTxt.y = worker2LevelTxt.y + worker2LevelTxt.height + 4; worker2SpeedTxt.visible = false; game.addChild(worker2SpeedTxt); worker2UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 64, x: workerImg.x, y: worker2SpeedTxt.y + worker2SpeedTxt.height + 18 }); worker2UpgradeBtn.visible = false; game.addChild(worker2UpgradeBtn); worker2UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker2UpgradeCost, { size: 36, fill: '#fff' }); worker2UpgradeBtnTxt.anchor.set(0.5, 0.5); worker2UpgradeBtnTxt.x = worker2UpgradeBtn.x; worker2UpgradeBtnTxt.y = worker2UpgradeBtn.y; worker2UpgradeBtnTxt.visible = false; game.addChild(worker2UpgradeBtnTxt); worker2UpgradeBtn.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } if (money >= worker2UpgradeCost) { money -= worker2UpgradeCost; worker2Level += 1; worker2UpgradeCost = Math.floor(worker2UpgradeCost * 2.2); updateMoneyText(); worker2LevelTxt.setText('Seviye: ' + worker2Level); worker2SpeedTxt.setText('Üretim Süresi: -%' + (worker2Level - 1) * 2); worker2UpgradeBtnTxt.setText('Yükselt\n₺' + worker2UpgradeCost); tween(worker2UpgradeBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(worker2UpgradeBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { tween(worker2UpgradeBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(worker2UpgradeBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; } // Çalışan 3 için seviye, fabrika yükseltme maliyeti indirim oranı ve buton ekle if (i === 2) { worker3LevelTxt = new Text2('Seviye: ' + worker3Level, { size: 36, fill: '#ffb' }); worker3LevelTxt.anchor.set(0.5, 0); worker3LevelTxt.x = workerImg.x; worker3LevelTxt.y = workerLabel.y + 32; worker3LevelTxt.visible = false; game.addChild(worker3LevelTxt); worker3DiscountTxt = new Text2('Fabrika Yükseltme İndirimi: -%0', { size: 36, fill: '#bff' }); worker3DiscountTxt.anchor.set(0.5, 0); worker3DiscountTxt.x = workerImg.x; worker3DiscountTxt.y = worker3LevelTxt.y + worker3LevelTxt.height + 4; worker3DiscountTxt.visible = false; game.addChild(worker3DiscountTxt); worker3UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 64, x: workerImg.x, y: worker3DiscountTxt.y + worker3DiscountTxt.height + 18 }); worker3UpgradeBtn.visible = false; game.addChild(worker3UpgradeBtn); worker3UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker3UpgradeCost, { size: 36, fill: '#fff' }); worker3UpgradeBtnTxt.anchor.set(0.5, 0.5); worker3UpgradeBtnTxt.x = worker3UpgradeBtn.x; worker3UpgradeBtnTxt.y = worker3UpgradeBtn.y; worker3UpgradeBtnTxt.visible = false; game.addChild(worker3UpgradeBtnTxt); worker3UpgradeBtn.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } if (money >= worker3UpgradeCost) { money -= worker3UpgradeCost; worker3Level += 1; worker3UpgradeCost = Math.floor(worker3UpgradeCost * 2.2); updateMoneyText && updateMoneyText(); worker3LevelTxt.setText('Seviye: ' + worker3Level); worker3DiscountTxt.setText('Fabrika Yükseltme İndirimi: -%' + (worker3Level - 1) * 2); worker3UpgradeBtnTxt.setText('Yükselt\n₺' + worker3UpgradeCost); tween(worker3UpgradeBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(worker3UpgradeBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { tween(worker3UpgradeBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(worker3UpgradeBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; } // Çalışan 4 için seviye, tıklama kazancı ve yükseltme butonu ekle if (i === 3) { worker4LevelTxt = new Text2('Seviye: ' + worker4Level, { size: 36, fill: '#ffb' }); worker4LevelTxt.anchor.set(0.5, 0); worker4LevelTxt.x = workerImg.x; worker4LevelTxt.y = workerLabel.y + 32; worker4LevelTxt.visible = false; game.addChild(worker4LevelTxt); var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1)); worker4EarningTxt = new Text2('Resmime Tıkla\nTıkla: ₺' + earning, { size: 36, fill: '#bff' }); worker4EarningTxt.anchor.set(0.5, 0); worker4EarningTxt.x = workerImg.x; worker4EarningTxt.y = worker4LevelTxt.y + worker4LevelTxt.height + 4; worker4EarningTxt.visible = false; game.addChild(worker4EarningTxt); worker4UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 64, x: workerImg.x, y: worker4EarningTxt.y + worker4EarningTxt.height + 18 }); worker4UpgradeBtn.visible = false; game.addChild(worker4UpgradeBtn); worker4UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker4UpgradeCost, { size: 36, fill: '#fff' }); worker4UpgradeBtnTxt.anchor.set(0.5, 0.5); worker4UpgradeBtnTxt.x = worker4UpgradeBtn.x; worker4UpgradeBtnTxt.y = worker4UpgradeBtn.y; worker4UpgradeBtnTxt.visible = false; game.addChild(worker4UpgradeBtnTxt); workerImg.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1)); money += earning; updateMoneyText && updateMoneyText(); tween(workerImg, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(workerImg, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); worker4EarningTxt.setText('Resmime Tıkla\nTıkla: ₺' + earning); }; worker4UpgradeBtn.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } if (money >= worker4UpgradeCost) { money -= worker4UpgradeCost; worker4Level += 1; worker4UpgradeCost = Math.floor(worker4UpgradeCost * 2.5); updateMoneyText && updateMoneyText(); worker4LevelTxt.setText('Seviye: ' + worker4Level); var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1)); worker4EarningTxt.setText('Resmime Tıkla\nTıkla: ₺' + earning); worker4UpgradeBtnTxt.setText('Yükselt\n₺' + worker4UpgradeCost); tween(worker4UpgradeBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(worker4UpgradeBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { tween(worker4UpgradeBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(worker4UpgradeBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; } // Çalışan 5 için seviye, bonus ve yükseltme butonu ekle if (i === 4) { worker5LevelTxt = new Text2('Seviye: ' + worker5Level, { size: 36, fill: '#ffb' }); worker5LevelTxt.anchor.set(0.5, 0); worker5LevelTxt.x = workerImg.x; worker5LevelTxt.y = workerLabel.y + 32; worker5LevelTxt.visible = false; game.addChild(worker5LevelTxt); var bonusPercent = Math.round(worker5BaseBonus * worker5Level * 100); worker5BonusTxt = new Text2('Tüm Kazanç: +%' + bonusPercent, { size: 36, fill: '#bff' }); worker5BonusTxt.anchor.set(0.5, 0); worker5BonusTxt.x = workerImg.x; worker5BonusTxt.y = worker5LevelTxt.y + worker5LevelTxt.height + 4; worker5BonusTxt.visible = false; game.addChild(worker5BonusTxt); worker5UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 64, x: workerImg.x, y: worker5BonusTxt.y + worker5BonusTxt.height + 18 }); worker5UpgradeBtn.visible = false; game.addChild(worker5UpgradeBtn); worker5UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker5UpgradeCost, { size: 36, fill: '#fff' }); worker5UpgradeBtnTxt.anchor.set(0.5, 0.5); worker5UpgradeBtnTxt.x = worker5UpgradeBtn.x; worker5UpgradeBtnTxt.y = worker5UpgradeBtn.y; worker5UpgradeBtnTxt.visible = false; game.addChild(worker5UpgradeBtnTxt); worker5UpgradeBtn.down = function (x, y, obj) { if (yatirimPanel && yatirimPanel.visible) { return; } if (money >= worker5UpgradeCost) { money -= worker5UpgradeCost; worker5Level += 1; worker5UpgradeCost = Math.floor(worker5UpgradeCost * 2.5); updateMoneyText && updateMoneyText(); worker5LevelTxt.setText('Seviye: ' + worker5Level); var bonusPercent = Math.round(worker5BaseBonus * worker5Level * 100); worker5BonusTxt.setText('Tüm Kazanç: +%' + bonusPercent); worker5UpgradeBtnTxt.setText('Yükselt\n₺' + worker5UpgradeCost); tween(worker5UpgradeBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(worker5UpgradeBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); } else { tween(worker5UpgradeBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(worker5UpgradeBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; } workerImages.push({ img: workerImg, label: workerLabel }); } // Çalışan 1 kazancını her 10 saniyede bir ekle // Defensive: define mevduatTutar as 0 if not already defined, to prevent 'mevduatTutar is not defined' error if (typeof mevduatTutar === "undefined") { var mevduatTutar = 0; } LK.setInterval(function () { var earning = Math.round(worker1EarningBase * Math.pow(1.02, worker1Level - 1)); money += earning; // --- Mevduat faizi: %2 yıllık, 10 saniyede bir işlesin (yıllık faiz, 10 saniyeye bölünür) --- // Yıllık faiz oranı var mevduatFaizYillik = 0.02; // 1 yılda 365*24*60*60/10 = 315360 kez 10 saniyelik periyot var var faizPeriyotSayisi = 365 * 24 * 60 * 60 / 10; // Her 10 saniyede işlenecek faiz oranı var mevduatFaizOrani = Math.pow(1 + mevduatFaizYillik, 1 / faizPeriyotSayisi) - 1; // Mevduat faizi ekle if (mevduatTutar > 0) { var faizKazanc = mevduatTutar * mevduatFaizOrani; // En az 1 kuruş (0.01) birikirse ekle, küsuratı biriktir if (typeof mevduatFaizKalan === "undefined") { window.mevduatFaizKalan = 0; } window.mevduatFaizKalan += faizKazanc; if (window.mevduatFaizKalan >= 0.01) { var eklenecek = Math.floor(window.mevduatFaizKalan * 100) / 100; mevduatTutar += eklenecek; window.mevduatFaizKalan -= eklenecek; updateMevduatTxt && updateMevduatTxt(); } } updateMoneyText && updateMoneyText(); if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt !== null && typeof worker1EarningTxt.setText === "function" && typeof worker1EarningTxt.x !== "undefined" && typeof worker1EarningTxt.x === "number") { worker1EarningTxt.setText('Kazanç: ₺' + earning); } }, 600); // 10 saniye (60fps * 10) // Panel açıldığında çalışanları göster newPageBtn.down = function (x, y, obj) { newPagePanel.visible = true; newPagePanelTitle.visible = true; newPagePanelText.visible = true; newPageKapatBtn.visible = true; newPageKapatBtnTxt.visible = true; // Çalışanları ve altındaki UI'ları göster ve panelde 3'lü sıra halinde alt alta ortala for (var i = 0; i < workerImages.length; i++) { var pos = getWorkerPanelPos(i); workerImages[i].img.x = pos.x; workerImages[i].img.y = pos.y; workerImages[i].img.visible = true; workerImages[i].label.x = pos.x; workerImages[i].label.y = pos.y + 80; workerImages[i].label.visible = true; // Alt açıklama yazılarını alt alta ve hizalı şekilde göster var baseY = workerImages[i].label.y + workerImages[i].label.height + 8; // label'ın altından 8px boşluk var lineGap = 8; // satırlar arası boşluk if (i === 0) { var y = baseY; if (worker1LevelTxt) { worker1LevelTxt.x = pos.x; worker1LevelTxt.y = y; worker1LevelTxt.visible = true; y += worker1LevelTxt.height + lineGap; } if (worker1EarningTxt) { worker1EarningTxt.x = pos.x; worker1EarningTxt.y = y; worker1EarningTxt.visible = true; y += worker1EarningTxt.height + lineGap; } if (worker1UpgradeBtn) { worker1UpgradeBtn.x = pos.x; worker1UpgradeBtn.y = y + worker1UpgradeBtn.height / 2; worker1UpgradeBtn.visible = true; } if (worker1UpgradeBtnTxt) { worker1UpgradeBtnTxt.x = pos.x; worker1UpgradeBtnTxt.y = worker1UpgradeBtn.y; worker1UpgradeBtnTxt.visible = true; } } if (i === 1) { var y = baseY; if (worker2LevelTxt) { worker2LevelTxt.x = pos.x; worker2LevelTxt.y = y; worker2LevelTxt.visible = true; y += worker2LevelTxt.height + lineGap; } if (worker2SpeedTxt) { worker2SpeedTxt.x = pos.x; worker2SpeedTxt.y = y; worker2SpeedTxt.visible = true; y += worker2SpeedTxt.height + lineGap; } if (worker2UpgradeBtn) { worker2UpgradeBtn.x = pos.x; worker2UpgradeBtn.y = y + worker2UpgradeBtn.height / 2; worker2UpgradeBtn.visible = true; } if (worker2UpgradeBtnTxt) { worker2UpgradeBtnTxt.x = pos.x; worker2UpgradeBtnTxt.y = worker2UpgradeBtn.y; worker2UpgradeBtnTxt.visible = true; } } if (i === 2) { var y = baseY; if (worker3LevelTxt) { worker3LevelTxt.x = pos.x; worker3LevelTxt.y = y; worker3LevelTxt.visible = true; y += worker3LevelTxt.height + lineGap; } if (worker3DiscountTxt) { worker3DiscountTxt.x = pos.x; worker3DiscountTxt.y = y; worker3DiscountTxt.visible = true; y += worker3DiscountTxt.height + lineGap; } if (worker3UpgradeBtn) { worker3UpgradeBtn.x = pos.x; worker3UpgradeBtn.y = y + worker3UpgradeBtn.height / 2; worker3UpgradeBtn.visible = true; } if (worker3UpgradeBtnTxt) { worker3UpgradeBtnTxt.x = pos.x; worker3UpgradeBtnTxt.y = worker3UpgradeBtn.y; worker3UpgradeBtnTxt.visible = true; } } if (i === 3) { var y = baseY; if (worker4LevelTxt) { worker4LevelTxt.x = pos.x; worker4LevelTxt.y = y; worker4LevelTxt.visible = true; y += worker4LevelTxt.height + lineGap; } if (worker4EarningTxt) { worker4EarningTxt.x = pos.x; worker4EarningTxt.y = y; worker4EarningTxt.visible = true; y += worker4EarningTxt.height + lineGap; } if (worker4UpgradeBtn) { worker4UpgradeBtn.x = pos.x; worker4UpgradeBtn.y = y + worker4UpgradeBtn.height / 2; worker4UpgradeBtn.visible = true; } if (worker4UpgradeBtnTxt) { worker4UpgradeBtnTxt.x = pos.x; worker4UpgradeBtnTxt.y = worker4UpgradeBtn.y; worker4UpgradeBtnTxt.visible = true; } } if (i === 4) { var y = baseY; if (worker5LevelTxt) { worker5LevelTxt.x = pos.x; worker5LevelTxt.y = y; worker5LevelTxt.visible = true; y += worker5LevelTxt.height + lineGap; } if (worker5BonusTxt) { worker5BonusTxt.x = pos.x; worker5BonusTxt.y = y; worker5BonusTxt.visible = true; y += worker5BonusTxt.height + lineGap; } if (worker5UpgradeBtn) { worker5UpgradeBtn.x = pos.x; worker5UpgradeBtn.y = y + worker5UpgradeBtn.height / 2; worker5UpgradeBtn.visible = true; } if (worker5UpgradeBtnTxt) { worker5UpgradeBtnTxt.x = pos.x; worker5UpgradeBtnTxt.y = worker5UpgradeBtn.y; worker5UpgradeBtnTxt.visible = true; } } } // Paneli en öne getir if (game.setChildIndex) { game.setChildIndex(newPagePanel, game.children.length - 1); game.setChildIndex(newPagePanelTitle, game.children.length - 1); game.setChildIndex(newPagePanelText, game.children.length - 1); game.setChildIndex(newPageKapatBtn, game.children.length - 1); game.setChildIndex(newPageKapatBtnTxt, game.children.length - 1); // Çalışanları ve altındaki UI'ları en öne getir for (var i = 0; i < workerImages.length; i++) { game.setChildIndex(workerImages[i].img, game.children.length - 1); game.setChildIndex(workerImages[i].label, game.children.length - 1); } if (worker1LevelTxt) { game.setChildIndex(worker1LevelTxt, game.children.length - 1); } if (worker1EarningTxt) { game.setChildIndex(worker1EarningTxt, game.children.length - 1); } if (worker1UpgradeBtn) { game.setChildIndex(worker1UpgradeBtn, game.children.length - 1); } if (worker1UpgradeBtnTxt) { game.setChildIndex(worker1UpgradeBtnTxt, game.children.length - 1); } if (worker2LevelTxt) { game.setChildIndex(worker2LevelTxt, game.children.length - 1); } if (worker2SpeedTxt) { game.setChildIndex(worker2SpeedTxt, game.children.length - 1); } if (worker2UpgradeBtn) { game.setChildIndex(worker2UpgradeBtn, game.children.length - 1); } if (worker2UpgradeBtnTxt) { game.setChildIndex(worker2UpgradeBtnTxt, game.children.length - 1); } if (worker3LevelTxt) { game.setChildIndex(worker3LevelTxt, game.children.length - 1); } if (worker3DiscountTxt) { game.setChildIndex(worker3DiscountTxt, game.children.length - 1); } if (worker3UpgradeBtn) { game.setChildIndex(worker3UpgradeBtn, game.children.length - 1); } if (worker3UpgradeBtnTxt) { game.setChildIndex(worker3UpgradeBtnTxt, game.children.length - 1); } if (worker4LevelTxt) { game.setChildIndex(worker4LevelTxt, game.children.length - 1); } if (worker4EarningTxt) { game.setChildIndex(worker4EarningTxt, game.children.length - 1); } if (worker4UpgradeBtn) { game.setChildIndex(worker4UpgradeBtn, game.children.length - 1); } if (worker4UpgradeBtnTxt) { game.setChildIndex(worker4UpgradeBtnTxt, game.children.length - 1); } if (worker5LevelTxt) { game.setChildIndex(worker5LevelTxt, game.children.length - 1); } if (worker5BonusTxt) { game.setChildIndex(worker5BonusTxt, game.children.length - 1); } if (worker5UpgradeBtn) { game.setChildIndex(worker5UpgradeBtn, game.children.length - 1); } if (worker5UpgradeBtnTxt) { game.setChildIndex(worker5UpgradeBtnTxt, game.children.length - 1); } } }; // Paneli kapatınca çalışanları gizle newPageKapatBtn.down = function (x, y, obj) { // Hide Çalışanlar panel and all its UI newPagePanel.visible = false; newPagePanelTitle.visible = false; newPagePanelText.visible = false; newPageKapatBtn.visible = false; newPageKapatBtnTxt.visible = false; // --- Yeni üst kapat butonunu ve label/icon'unu gizle --- if (typeof newPageKapatBtnTop !== "undefined") newPageKapatBtnTop.visible = false; if (typeof newPageKapatBtnTopIcon !== "undefined") newPageKapatBtnTopIcon.visible = false; if (typeof newPageKapatBtnTopTxt !== "undefined") newPageKapatBtnTopTxt.visible = false; // Hide all worker UI for (var i = 0; i < workerImages.length; i++) { workerImages[i].img.visible = false; workerImages[i].label.visible = false; } if (worker1LevelTxt) worker1LevelTxt.visible = false; //{17H}{17I} if (worker1EarningTxt) worker1EarningTxt.visible = false; //{17K}{17L} if (worker1UpgradeBtn) worker1UpgradeBtn.visible = false; //{17N}{17O} if (worker1UpgradeBtnTxt) worker1UpgradeBtnTxt.visible = false; //{17Q}{17R} if (worker2LevelTxt) worker2LevelTxt.visible = false; //{17T}{17U} if (worker2SpeedTxt) worker2SpeedTxt.visible = false; //{17W}{17X} if (worker2UpgradeBtn) worker2UpgradeBtn.visible = false; //{17Z}{180} if (worker2UpgradeBtnTxt) worker2UpgradeBtnTxt.visible = false; //{182}{183} if (worker3LevelTxt) worker3LevelTxt.visible = false; //{185}{186} if (worker3DiscountTxt) worker3DiscountTxt.visible = false; //{188}{189} if (worker3UpgradeBtn) worker3UpgradeBtn.visible = false; //{18b}{18c} if (worker3UpgradeBtnTxt) worker3UpgradeBtnTxt.visible = false; //{18e}{18f} if (worker4LevelTxt) worker4LevelTxt.visible = false; //{18h}{18i} if (worker4EarningTxt) worker4EarningTxt.visible = false; //{18k}{18l} if (worker4UpgradeBtn) worker4UpgradeBtn.visible = false; //{18n}{18o} if (worker4UpgradeBtnTxt) worker4UpgradeBtnTxt.visible = false; //{18q}{18r} if (worker5LevelTxt) worker5LevelTxt.visible = false; //{18t}{18u} if (worker5BonusTxt) worker5BonusTxt.visible = false; //{18w}{18x} if (worker5UpgradeBtn) worker5UpgradeBtn.visible = false; //{18z}{18A} if (worker5UpgradeBtnTxt) worker5UpgradeBtnTxt.visible = false; //{18C}{18D} // Restore all homepage/game UI (defensive, in case other panels were open) if (typeof magazaBtn !== "undefined") magazaBtn.visible = true; if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true; if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true; if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true; if (typeof bankBtn !== "undefined") bankBtn.visible = true; if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true; if (typeof soundBtn !== "undefined") soundBtn.visible = true; if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true; if (typeof newPageBtn !== "undefined") newPageBtn.visible = true; if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true; if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true; if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true; if (typeof magazalarBtn !== "undefined") magazalarBtn.visible = true; if (typeof magazalarBtnTxt !== "undefined") magazalarBtnTxt.visible = true; if (typeof languagesBtn !== "undefined") languagesBtn.visible = true; if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true; if (typeof calisanlarBtnImg !== "undefined") calisanlarBtnImg.visible = true; if (typeof madenlerBtnMineImg !== "undefined") madenlerBtnMineImg.visible = true; // Info and How To Play buttons are never shown if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = true; if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = true; if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = true; if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = true; // --- Ava: Restore all homepage images when Çalışanlar panel closes --- if (window.homepageImages && window.homepageImages.length) { for (var i = 0; i < window.homepageImages.length; i++) { if (window.homepageImages[i] && typeof window.homepageImages[i].visible === "boolean") { if (typeof window.homepageImages[i]._oldVisible !== "undefined") { window.homepageImages[i].visible = window.homepageImages[i]._oldVisible; delete window.homepageImages[i]._oldVisible; } else { window.homepageImages[i].visible = true; } } } } // Defensive: re-enable all factory/factoryUnlock/prod/auto buttons if they were disabled by other panels if (typeof factoryBtns !== "undefined" && Array.isArray(factoryBtns)) { for (var i = 0; i < factoryBtns.length; i++) { if (factoryBtns[i] && factoryBtns[i]._origDown) { factoryBtns[i].down = factoryBtns[i]._origDown; delete factoryBtns[i]._origDown; } } } if (typeof factoryUnlockBtns !== "undefined" && Array.isArray(factoryUnlockBtns)) { for (var i = 0; i < factoryUnlockBtns.length; i++) { if (factoryUnlockBtns[i] && factoryUnlockBtns[i]._origDown) { factoryUnlockBtns[i].down = factoryUnlockBtns[i]._origDown; delete factoryUnlockBtns[i]._origDown; } } } if (typeof prodBtns !== "undefined" && Array.isArray(prodBtns)) { for (var i = 0; i < prodBtns.length; i++) { if (prodBtns[i] && prodBtns[i]._origDown) { prodBtns[i].down = prodBtns[i]._origDown; delete prodBtns[i]._origDown; } } } if (typeof factoryAutoBtns !== "undefined" && Array.isArray(factoryAutoBtns)) { for (var i = 0; i < factoryAutoBtns.length; i++) { if (factoryAutoBtns[i] && factoryAutoBtns[i]._origDown) { factoryAutoBtns[i].down = factoryAutoBtns[i]._origDown; delete factoryAutoBtns[i]._origDown; } } } for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; if (child && child.isFactoryButton && child._origDown) { child.down = child._origDown; delete child._origDown; } } // Hide overlays if visible if (typeof fullscreenOverlay !== "undefined") fullscreenOverlay.visible = false; }; // --- Mines --- // Anasayfada madenler, stok sayısı ve butonları gösterilmeyecek var mines = []; var mineAutoProduce = [false, false, false, false, false, false]; // Track auto-produce state for each mine var mineAutoBtns = []; var mineAutoTxts = []; // Defensive: Always initialize mines array with 6 Mine objects, one for each ore type if (!Array.isArray(mines) || mines.length !== 6) { mines = []; for (var i = 0; i < 6; i++) { var m = new Mine(); m.setType(oreTypes[i]); // Arrange mines offscreen by default (UI panels will reposition them) m.x = -1000; m.y = -1000; mines.push(m); game.addChild(m); } } // --- Factories for each part --- var factories = []; var factoryUnlocks = []; var factoryUnlockCosts = [0, 350, 525, 700, 875, 1050, 1225, 1400, 1575, 1750]; // Apply 50% price increase to all except the first (CPU) for (var i = 1; i < factoryUnlockCosts.length; i++) { factoryUnlockCosts[i] = Math.floor(factoryUnlockCosts[i] * 1.5); } var factoryAutoProduce = []; var factoryAutoBtns = []; var factoryAutoTxts = []; for (var i = 0; i < partTypes.length; i++) { var FactoryClass = FactoryClasses[partTypes[i]]; var f = new FactoryClass(); // Arrange factories in two rows of 5, with extra vertical spacing between rows var col = i % 5; var row = Math.floor(i / 5); // Add vertical spacing (gap) between factory panels var factoryPanelGap = 24; f.x = 500 + col * 300 + col * factoryPanelGap; // Move MB, CASE, FAN, HDD, COOLER (indices 5,6,7,8,9) further down // Move the whole factories panel lower by +200px if (i >= 5) { // Increase the offset for the second row and move these factories further down f.y = 1300 + row * 420 + 320; } else { f.y = 1300 + row * 420; } game.addChild(f); factories.push(f); // Add production time text under the part icon var prodTime = f.getProductionTime ? f.getProductionTime() : 30; var prodTimeSec = (prodTime / 60).toFixed(2); // Add a panel image behind the production time text var prodTimePanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0, width: 220, height: 54, x: f.x, y: f.y - 60 + 60 * 0.7 + 28, // 10px higher to allow for text padding scaleX: 0.8, scaleY: 0.7 }); // Add horizontal gap to prodTimePanel to match factory panel gap prodTimePanel.x = f.x; game.addChild(prodTimePanel); var prodTimeTxt = new Text2("Üretim: " + prodTimeSec + " sn", { size: 32, fill: "#fff" }); prodTimeTxt.anchor.set(0.5, 0); // Place under the part icon (which is at y: -60, scale 0.7, so about -60+60*0.7+10) prodTimeTxt.x = f.x; prodTimeTxt.y = f.y - 60 + 60 * 0.7 + 38; game.addChild(prodTimeTxt); // Store reference for later update on upgrade f._prodTimeTxt = prodTimeTxt; // Unlock state: CPU (i==0) is always unlocked, others locked factoryUnlocks.push(i === 0 ? true : false); // Add auto-produce toggle button for each factory factoryAutoProduce.push(false); var autoBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); autoBtn.x = f.x; // Move auto-produce button further down // Add horizontal gap to autoBtn to match factory panel gap autoBtn.x = f.x; if (i >= 5) { autoBtn.y = f.y + 530 + 80; } else { autoBtn.y = f.y + 530; } game.addChild(autoBtn); var autoTxt = new Text2('Oto Üret: Kapalı', { size: 36, fill: '#fff' }); autoTxt.anchor.set(0.5, 0.5); autoTxt.x = autoBtn.x; autoTxt.y = autoBtn.y; game.addChild(autoTxt); autoBtn.factoryIndex = i; autoBtn.down = function (x, y, obj) { // Disable if investment panel is open or Çalışanlar paneli is open if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) { return; } var idx = this.factoryIndex; if (!factoryAutoProduce[idx]) { // Cost to enable auto-produce for factory: 1000 var autoFactoryCost = (idx + 1) * 1000; if (money >= autoFactoryCost) { money -= autoFactoryCost; updateMoneyText(); factoryAutoProduce[idx] = true; factoryAutoTxts[idx].setText('Oto Üret: Açık'); } else { // Not enough money, flash button red tween(this, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(autoBtn, { tint: 0x222222 }, { duration: 120 }); } }); } } else { // Oto Üret kapatılmasın: Satın alındıktan sonra kapatmaya izin verme // Artık kapatma işlemi yapılmıyor, buton işlevsiz. } }; factoryAutoBtns.push(autoBtn); factoryAutoTxts.push(autoTxt); // Set initial text var autoFactoryCost = (i + 1) * 1000; autoTxt.setText('Oto Üret: Kapalı\n₺' + autoFactoryCost); } // --- Store --- var store = new Store(); // --- Ava: Arrange all stores and their purchase/upgrade buttons horizontally above factories --- // Calculate horizontal layout for stores above factories // Move all stores and their buttons 0.75 row higher (row height = 420, so move up by 315px) var storeAboveFactoryY = 980 - 315; // 0.75 satır yukarı taşı var storeAboveFactoryGapX = 320; var storeAboveFactoryStartX = 650; // Ekranın solundan biraz içeride başlat // Store 1 store.x = storeAboveFactoryStartX; store.y = storeAboveFactoryY; store.scaleX = 0.82; store.scaleY = 0.82; game.addChild(store); // Store 2 var store2Purchased = false; var store2PurchaseCost = 2000; var store2 = new Store(); store2.x = store.x + storeAboveFactoryGapX * 1; store2.y = storeAboveFactoryY; store2.scaleX = 0.82; store2.scaleY = 0.82; game.addChild(store2); store2.visible = true; // Store 3 var store3Purchased = false; var store3PurchaseCost = 5000; var store3 = new Store(); store3.x = store.x + storeAboveFactoryGapX * 2; store3.y = storeAboveFactoryY; store3.scaleX = 0.82; store3.scaleY = 0.82; game.addChild(store3); store3.visible = true; // Store 4 var store4Purchased = false; var store4PurchaseCost = 10000; var store4 = new Store(); store4.x = store.x + storeAboveFactoryGapX * 3; store4.y = storeAboveFactoryY; store4.scaleX = 0.82; store4.scaleY = 0.82; game.addChild(store4); store4.visible = true; // --- Store 2 Purchase Button (fabrikaların üstündeki mağazaların altına hizala) --- var store2PurchaseBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 80 }); store2PurchaseBtn.x = store2.x; store2PurchaseBtn.y = store2.y + 160; store2PurchaseBtn.visible = !store2Purchased; game.addChild(store2PurchaseBtn); var store2PurchaseBtnTxt = new Text2('Mağaza 2 Satın Al\n₺' + store2PurchaseCost, { size: 38, fill: '#fff' }); store2PurchaseBtnTxt.anchor.set(0.5, 0.5); store2PurchaseBtnTxt.x = store2PurchaseBtn.x; store2PurchaseBtnTxt.y = store2PurchaseBtn.y + 10; store2PurchaseBtnTxt.visible = !store2Purchased; game.addChild(store2PurchaseBtnTxt); // Store2 purchase logic as a function for reuse function handleStore2Purchase() { if (store2Purchased) { return; } if (money >= store2PurchaseCost) { money -= store2PurchaseCost; store2Purchased = true; updateMoneyText && updateMoneyText(); store2PurchaseBtn.visible = false; store2PurchaseBtnTxt.visible = false; // Show upgrade button after purchase if (typeof store2Btn !== "undefined") { store2Btn.visible = true; } if (typeof store2BtnTxt !== "undefined") { store2BtnTxt.visible = true; } // Show store2 in Mağazalar panel after purchase if (typeof store2 !== "undefined") { store2.visible = true; } // Hide purchase button after purchase on homepage store2PurchaseBtn.visible = false; store2PurchaseBtnTxt.visible = false; // Also hide on homepage duplicate if exists if (typeof store2PurchaseBtn !== "undefined") { store2PurchaseBtn.visible = false; } if (typeof store2PurchaseBtnTxt !== "undefined") { store2PurchaseBtnTxt.visible = false; } } else { // Not enough money, flash button red tween(store2PurchaseBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store2PurchaseBtn, { tint: 0x222222 }, { duration: 120 }); } }); } // Hide purchase button if purchased (defensive, in case of duplicate UI) if (store2Purchased) { store2PurchaseBtn.visible = false; store2PurchaseBtnTxt.visible = false; } } // Button logic store2PurchaseBtn.down = function (x, y, obj) { handleStore2Purchase(); }; // --- Store 2 Upgrade Button (fabrikaların üstündeki mağazaların altına hizala) --- if (typeof store2Btn !== "undefined") { store2Btn.x = store2.x; store2Btn.y = store2.y + 160; } if (typeof store2BtnTxt !== "undefined") { store2BtnTxt.x = store2.x; store2BtnTxt.y = store2.y + 180; } // --- Store 3 Purchase Button (fabrikaların üstündeki mağazaların altına hizala) --- // --- Store 3 Purchase Button (store2'ye benzer şekilde) --- var store3PurchaseBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 80 }); store3PurchaseBtn.x = store3.x; store3PurchaseBtn.y = store3.y + 160; store3PurchaseBtn.visible = !store3Purchased; game.addChild(store3PurchaseBtn); var store3PurchaseBtnTxt = new Text2('Mağaza 3 Satın Al\n₺' + store3PurchaseCost, { size: 38, fill: '#fff' }); store3PurchaseBtnTxt.anchor.set(0.5, 0.5); store3PurchaseBtnTxt.x = store3PurchaseBtn.x; store3PurchaseBtnTxt.y = store3PurchaseBtn.y + 10; store3PurchaseBtnTxt.visible = !store3Purchased; game.addChild(store3PurchaseBtnTxt); function handleStore3Purchase() { if (store3Purchased) { return; } if (money >= store3PurchaseCost) { money -= store3PurchaseCost; store3Purchased = true; updateMoneyText && updateMoneyText(); store3PurchaseBtn.visible = false; store3PurchaseBtnTxt.visible = false; store3PurchaseBtnImg.visible = false; if (typeof store3Btn !== "undefined") { store3Btn.visible = true; } if (typeof store3BtnTxt !== "undefined") { store3BtnTxt.visible = true; } if (typeof store3 !== "undefined") { store3.visible = true; } // Hide purchase button after purchase on homepage if (typeof store3PurchaseBtn !== "undefined") { store3PurchaseBtn.visible = false; } if (typeof store3PurchaseBtnTxt !== "undefined") { store3PurchaseBtnTxt.visible = false; } if (typeof store3PurchaseBtnImg !== "undefined") { store3PurchaseBtnImg.visible = false; } } else { // Not enough money, flash button red tween(store3PurchaseBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store3PurchaseBtn, { tint: 0x222222 }, { duration: 120 }); } }); tween(store3PurchaseBtnImg, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store3PurchaseBtnImg, { tint: 0x3fa9f5 }, { duration: 120 }); } }); } if (store3Purchased) { store3PurchaseBtn.visible = false; store3PurchaseBtnTxt.visible = false; store3PurchaseBtnImg.visible = false; } } store3PurchaseBtn.down = function (x, y, obj) { handleStore3Purchase(); }; store3PurchaseBtnTxt.down = function (x, y, obj) { handleStore3Purchase(); }; if (typeof store3Btn !== "undefined") { store3Btn.x = store3.x; store3Btn.y = store3.y + 160; store3Btn.visible = !!store3Purchased; } if (typeof store3BtnTxt !== "undefined") { store3BtnTxt.x = store3.x; store3BtnTxt.y = store3.y + 180; store3BtnTxt.visible = !!store3Purchased; } // --- Store 4 Purchase Button (store2'ye benzer şekilde) --- var store4PurchaseBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 80 }); store4PurchaseBtn.x = store4.x; store4PurchaseBtn.y = store4.y + 160; store4PurchaseBtn.visible = !store4Purchased; game.addChild(store4PurchaseBtn); var store4PurchaseBtnTxt = new Text2('Mağaza 4 Satın Al\n₺' + store4PurchaseCost, { size: 38, fill: '#fff' }); store4PurchaseBtnTxt.anchor.set(0.5, 0.5); store4PurchaseBtnTxt.x = store4PurchaseBtn.x; store4PurchaseBtnTxt.y = store4PurchaseBtn.y + 10; store4PurchaseBtnTxt.visible = !store4Purchased; game.addChild(store4PurchaseBtnTxt); function handleStore4Purchase() { if (store4Purchased) { return; } if (money >= store4PurchaseCost) { money -= store4PurchaseCost; store4Purchased = true; updateMoneyText && updateMoneyText(); store4PurchaseBtn.visible = false; store4PurchaseBtnTxt.visible = false; store4PurchaseBtnImg.visible = false; if (typeof store4Btn !== "undefined") { store4Btn.visible = true; } if (typeof store4BtnTxt !== "undefined") { store4BtnTxt.visible = true; } if (typeof store4 !== "undefined") { store4.visible = true; } // Hide purchase button after purchase on homepage if (typeof store4PurchaseBtn !== "undefined") { store4PurchaseBtn.visible = false; } if (typeof store4PurchaseBtnTxt !== "undefined") { store4PurchaseBtnTxt.visible = false; } if (typeof store4PurchaseBtnImg !== "undefined") { store4PurchaseBtnImg.visible = false; } } else { // Not enough money, flash button red tween(store4PurchaseBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store4PurchaseBtn, { tint: 0x222222 }, { duration: 120 }); } }); tween(store4PurchaseBtnImg, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store4PurchaseBtnImg, { tint: 0xf97f62 }, { duration: 120 }); } }); } if (store4Purchased) { store4PurchaseBtn.visible = false; store4PurchaseBtnTxt.visible = false; store4PurchaseBtnImg.visible = false; } } store4PurchaseBtn.down = function (x, y, obj) { handleStore4Purchase(); }; store4PurchaseBtnTxt.down = function (x, y, obj) { handleStore4Purchase(); }; if (typeof store4Btn !== "undefined") { store4Btn.x = store4.x; store4Btn.y = store4.y + 160; store4Btn.visible = !!store4Purchased; } if (typeof store4BtnTxt !== "undefined") { store4BtnTxt.x = store4.x; store4BtnTxt.y = store4.y + 180; store4BtnTxt.visible = !!store4Purchased; } // --- Ava: Always show all stores and their purchase buttons on homepage until purchased --- store.visible = true; store2.visible = true; store3.visible = true; store4.visible = true; if (typeof store2PurchaseBtn !== "undefined" && store2PurchaseBtn) { store2PurchaseBtn.visible = !store2Purchased; if (store2Purchased) { store2PurchaseBtn.visible = false; store2PurchaseBtnTxt.visible = false; } } store2PurchaseBtnTxt.visible = !store2Purchased; store3PurchaseBtn.visible = false; store3PurchaseBtnTxt.visible = false; if (typeof store3PurchaseBtnIcon !== "undefined") { store3PurchaseBtnIcon.visible = false; } if (store3Purchased) { store3PurchaseBtn.visible = false; store3PurchaseBtnTxt.visible = false; if (typeof store3PurchaseBtnIcon !== "undefined") { store3PurchaseBtnIcon.visible = false; } } store4PurchaseBtn.visible = false; store4PurchaseBtnTxt.visible = false; if (typeof store4PurchaseBtnIcon !== "undefined") { store4PurchaseBtnIcon.visible = false; } if (store4Purchased) { store4PurchaseBtn.visible = false; store4PurchaseBtnTxt.visible = false; if (typeof store4PurchaseBtnIcon !== "undefined") { store4PurchaseBtnIcon.visible = false; } } // --- Show all customers on homepage --- if (typeof customers === "undefined" || !Array.isArray(customers)) { customers = []; } for (var i = 0; i < customers.length; i++) { customers[i].visible = true; } // --- Store 2 Purchase Button (Mağazalar panelinde, upgrade üstünde) --- var store2PurchaseBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 80 }); // Show on homepage (anasayfa) store2PurchaseBtn.x = store2.x; store2PurchaseBtn.y = store2.y + 160; store2PurchaseBtn.visible = !store2Purchased; game.addChild(store2PurchaseBtn); var store2PurchaseBtnTxt = new Text2('Mağaza 2 Satın Al\n₺' + store2PurchaseCost, { size: 38, fill: '#fff' }); store2PurchaseBtnTxt.anchor.set(0.5, 0.5); store2PurchaseBtnTxt.x = store2PurchaseBtn.x; store2PurchaseBtnTxt.y = store2PurchaseBtn.y + 10; store2PurchaseBtnTxt.visible = !store2Purchased; game.addChild(store2PurchaseBtnTxt); store2PurchaseBtn.down = function (x, y, obj) { if (store2Purchased) { return; } if (money >= store2PurchaseCost) { money -= store2PurchaseCost; store2Purchased = true; updateMoneyText && updateMoneyText(); store2PurchaseBtn.visible = false; store2PurchaseBtnTxt.visible = false; // Show upgrade button after purchase if (typeof store2Btn !== "undefined") { store2Btn.visible = true; } if (typeof store2BtnTxt !== "undefined") { store2BtnTxt.visible = true; } // Show store2 in Mağazalar panel after purchase if (typeof store2 !== "undefined") { store2.visible = true; } } else { // Not enough money, flash button red tween(store2PurchaseBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store2PurchaseBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; // --- Store 3 Purchase Button (Mağazalar panelinde, upgrade üstünde) --- var store3PurchaseBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 80 }); // Show on homepage (anasayfa) store3PurchaseBtn.x = store3.x; store3PurchaseBtn.y = store3.y + 160; store3PurchaseBtn.visible = !store3Purchased; game.addChild(store3PurchaseBtn); // (icon removed for Store3 purchase button - duplicate) var store3PurchaseBtnTxt = new Text2('Mağaza 3 Satın Al\n₺' + store3PurchaseCost, { size: 36, fill: '#fff' }); store3PurchaseBtnTxt.anchor.set(0.5, 0.5); store3PurchaseBtnTxt.x = store3PurchaseBtn.x; store3PurchaseBtnTxt.y = store3PurchaseBtn.y + 10; store3PurchaseBtnTxt.visible = !store3Purchased; store3PurchaseBtnTxt.style = store3PurchaseBtnTxt.style || {}; store3PurchaseBtnTxt.style.fill = '#fff'; game.addChild(store3PurchaseBtnTxt); // Store3 purchase button logic store3PurchaseBtn.down = function (x, y, obj) { if (store3Purchased) { return; } if (money >= store3PurchaseCost) { money -= store3PurchaseCost; store3Purchased = true; updateMoneyText && updateMoneyText(); store3PurchaseBtn.visible = false; store3PurchaseBtnTxt.visible = false; // Show upgrade button after purchase if (typeof store3Btn !== "undefined") { store3Btn.visible = true; } if (typeof store3BtnTxt !== "undefined") { store3BtnTxt.visible = true; } // Show store3 in Mağazalar panel after purchase if (typeof store3 !== "undefined") { store3.visible = true; } } else { // Not enough money, flash button red tween(store3PurchaseBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store3PurchaseBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; store3PurchaseBtnTxt.down = function (x, y, obj) { store3PurchaseBtn.down(x, y, obj); }; // --- Store 4 Purchase Button (Mağazalar panelinde, upgrade üstünde) --- var store4PurchaseBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 260, height: 80 }); // Show on homepage (anasayfa) store4PurchaseBtn.x = store4.x; store4PurchaseBtn.y = store4.y + 160; store4PurchaseBtn.visible = !store4Purchased; game.addChild(store4PurchaseBtn); // (icon removed for Store4 purchase button - duplicate) var store4PurchaseBtnTxt = new Text2('Mağaza 4 Satın Al\n₺' + store4PurchaseCost, { size: 36, fill: '#fff' }); store4PurchaseBtnTxt.anchor.set(0.5, 0.5); store4PurchaseBtnTxt.x = store4PurchaseBtn.x; store4PurchaseBtnTxt.y = store4PurchaseBtn.y + 10; store4PurchaseBtnTxt.visible = !store4Purchased; store4PurchaseBtnTxt.style = store4PurchaseBtnTxt.style || {}; store4PurchaseBtnTxt.style.fill = '#fff'; game.addChild(store4PurchaseBtnTxt); // Store4 purchase button logic store4PurchaseBtn.down = function (x, y, obj) { if (store4Purchased) { return; } if (money >= store4PurchaseCost) { money -= store4PurchaseCost; store4Purchased = true; updateMoneyText && updateMoneyText(); store4PurchaseBtn.visible = false; store4PurchaseBtnTxt.visible = false; // Show upgrade button after purchase if (typeof store4Btn !== "undefined") { store4Btn.visible = true; } if (typeof store4BtnTxt !== "undefined") { store4BtnTxt.visible = true; } // Show store4 in Mağazalar panel after purchase if (typeof store4 !== "undefined") { store4.visible = true; } } else { // Not enough money, flash button red tween(store4PurchaseBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(store4PurchaseBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; store4PurchaseBtnTxt.down = function (x, y, obj) { store4PurchaseBtn.down(x, y, obj); }; // --- Upgrade Buttons --- var mineBtns = []; for (var i = 0; i < 3; i++) { // Defensive: skip if mines or mines[i] is not defined if (!mines || !mines[i]) { continue; } var btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); btn.x = mines[i].x - 80; // Move left to make space for produce button btn.y = mines[i].y + 200; game.addChild(btn); var txt = new Text2('Maden Yükselt\n₺' + mines[i].upgradeCost, { size: 44, fill: '#fff' }); txt.anchor.set(0.5, 0.5); txt.y = btn.y + 20; txt.x = btn.x; game.addChild(txt); btn.mineIndex = i; btn.txt = txt; btn.down = function (x, y, obj) { // Disable if investment panel is open if (yatirimPanel && yatirimPanel.visible) { return; } var idx = this.mineIndex; if (!mines || !mines[idx]) { return; } var m = mines[idx]; if (money >= m.upgradeCost) { toplamMadenYukseltme += m.upgradeCost; m.upgrade(); this.txt.setText('Maden Yükselt\n₺' + m.upgradeCost); } }; mineBtns.push(btn); // Add ÜRET (Produce) button next to upgrade var prodBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 180, height: 80 }); // ÜRET butonunu madenin altına yerleştir prodBtn.x = mines[i].x - 170; prodBtn.y = mines[i].y + 320; game.addChild(prodBtn); var prodTxt = new Text2('ÜRET', { size: 36, fill: '#fff' }); prodTxt.anchor.set(0.5, 0.5); // ÜRET yazısını butonun tam ortasına yerleştir prodTxt.x = prodBtn.x; prodTxt.y = prodBtn.y; game.addChild(prodTxt); prodBtn.mineIndex = i; prodBtn.down = function (x, y, obj) { // Disable if investment panel is open if (yatirimPanel && yatirimPanel.visible) { return; } var idx = this.mineIndex; if (!mines || !mines[idx]) { return; } var m = mines[idx]; // Instantly produce one batch of raw material for this mine rawMaterials[m.type] += m.production; updateRawText(); // Animate mine for feedback tween(m, { scaleX: 1.1, scaleY: 1.1 }, { duration: 120, easing: tween.easeOut, onFinish: function onFinish() { tween(m, { scaleX: 1, scaleY: 1 }, { duration: 120 }); } }); }; } // Factory upgrade buttons for each part var factoryBtns = []; var factoryUnlockBtns = []; for (var i = 0; i < factories.length; i++) { var f = factories[i]; // If factory is locked (except CPU), show unlock button instead of upgrade if (!factoryUnlocks[i]) { var unlockBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); unlockBtn.x = f.x; // Add horizontal gap to unlock buttons to match factory panel gap unlockBtn.x = f.x; if (i >= 5) { unlockBtn.y = f.y + 200 + 80; } else { unlockBtn.y = f.y + 200; } game.addChild(unlockBtn); var unlockTxt = new Text2((i === 0 ? "MOUSE" : i === 1 ? "KLAVYE" : i === 6 ? "CPU" : i === 7 ? "GPU" : i === 8 ? "MONITOR" : i === 9 ? "KASA" : partTypes[i].toUpperCase()) + " Aç\n₺" + factoryUnlockCosts[i], { size: 44, fill: '#fff' }); unlockTxt.anchor.set(0.5, 0.5); unlockTxt.x = unlockBtn.x; unlockTxt.y = unlockBtn.y + 20; game.addChild(unlockTxt); unlockBtn.factoryIndex = i; unlockBtn.txt = unlockTxt; unlockBtn.down = function (x, y, obj) { // Disable if investment panel is open or Çalışanlar paneli is open if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) { return; } var idx = this.factoryIndex; if (!factoryUnlocks[idx] && money >= factoryUnlockCosts[idx]) { money -= factoryUnlockCosts[idx]; updateMoneyText(); factoryUnlocks[idx] = true; // Remove unlock button and text this.destroy(); this.txt.destroy(); // Show upgrade button for this factory showFactoryUpgradeButton(idx); } }; factoryUnlockBtns.push(unlockBtn); // Don't show upgrade button for locked factories continue; } // Show upgrade button for unlocked factories var btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); btn.x = f.x; // Add horizontal gap to upgrade/unlock/production buttons to match factory panel gap btn.x = f.x; // Move MB, CASE, FAN, HDD, COOLER (indices 5,6,7,8,9) buttons further down if (i >= 5) { btn.y = f.y + 200 + 80; } else { btn.y = f.y + 200; } game.addChild(btn); var txt = new Text2((i === 0 ? "MOUSE" : i === 1 ? "KLAVYE" : i === 6 ? "CPU" : i === 7 ? "GPU" : i === 8 ? "MONITOR" : partTypes[i].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost, { size: 44, fill: '#fff' }); txt.anchor.set(0.5, 0.5); txt.x = btn.x; txt.y = btn.y + 20; game.addChild(txt); btn.factoryIndex = i; btn.txt = txt; btn.down = function (x, y, obj) { // Disable if investment panel is open or Çalışanlar paneli is open if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) { return; } var idx = this.factoryIndex; var f = factories[idx]; // Çalışan 3 indirimini uygula var discount = 1 - (worker3Level - 1) * 0.02; if (discount < 0.1) { discount = 0.1; } // Maksimum %90 indirim var discountedCost = Math.floor(f.upgradeCost * discount); if (money >= discountedCost) { toplamFabrikaYukseltme += discountedCost; money -= discountedCost; f.upgrade(); updateMoneyText && updateMoneyText(); this.txt.setText((idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : partTypes[idx].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost); } }; factoryBtns.push(btn); } // Helper to show upgrade button after unlock function showFactoryUpgradeButton(idx) { var f = factories[idx]; var btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); btn.x = f.x; // Add horizontal gap to upgrade button after unlock to match factory panel gap btn.x = f.x; if (idx >= 5) { btn.y = f.y + 200 + 80; } else { btn.y = f.y + 200; } game.addChild(btn); var txt = new Text2((idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : partTypes[idx].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost, { size: 44, fill: '#fff' }); txt.anchor.set(0.5, 0.5); txt.x = btn.x; txt.y = btn.y + 20; game.addChild(txt); btn.factoryIndex = idx; btn.txt = txt; btn.down = function (x, y, obj) { // Disable if investment panel is open or Çalışanlar paneli is open if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) { return; } var idx = this.factoryIndex; var f = factories[idx]; // Çalışan 3 indirimini uygula var discount = 1 - (worker3Level - 1) * 0.02; if (discount < 0.1) { discount = 0.1; } // Maksimum %90 indirim var discountedCost = Math.floor(f.upgradeCost * discount); if (money >= discountedCost) { money -= discountedCost; f.upgrade(); updateMoneyText && updateMoneyText(); this.txt.setText((idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : partTypes[idx].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost); } }; factoryBtns[idx] = btn; } // Store upgrade button (moved to Mağazalar panel overlay) var storeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); // Move Store1 upgrade button below the store image on the homepage storeBtn.x = store.x; storeBtn.y = store.y + 160; storeBtn.visible = true; game.addChild(storeBtn); var storeBtnTxt = new Text2('Mağaza Yükselt\n₺' + store.upgradeCost, { size: 44, fill: '#fff' }); storeBtnTxt.anchor.set(0.5, 0.5); storeBtnTxt.x = storeBtn.x; storeBtnTxt.y = storeBtn.y + 20; storeBtnTxt.visible = true; game.addChild(storeBtnTxt); storeBtn.down = function (x, y, obj) { if (money >= store.upgradeCost) { toplamStoreYukseltme += store.upgradeCost; store.upgrade(); storeBtnTxt.setText('Mağaza Yükselt\n₺' + store.upgradeCost); } }; // --- Store 2 Upgrade Button (moved to Mağazalar panel overlay) --- var store2Btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); // Move Store2 upgrade button below the store2 image on the homepage store2Btn.x = store2.x; store2Btn.y = store2.y + 160; store2Btn.visible = false; game.addChild(store2Btn); var store2BtnTxt = new Text2('Mağaza 2 Yükselt\n₺' + store2.upgradeCost, { size: 44, fill: '#fff' }); store2BtnTxt.anchor.set(0.5, 0.5); store2BtnTxt.x = store2.x; store2BtnTxt.y = store2.y + 180; store2BtnTxt.visible = false; game.addChild(store2BtnTxt); store2Btn.down = function (x, y, obj) { if (money >= store2.upgradeCost) { toplamStoreYukseltme += store2.upgradeCost; store2.upgrade(); store2BtnTxt.setText('Mağaza 2 Yükselt\n₺' + store2.upgradeCost); } }; // --- Store 3 Upgrade Button (Mağazalar panelinde) --- var store3Btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); // Move Store3 upgrade button below the store3 image on the homepage store3Btn.x = store3.x; store3Btn.y = store3.y + 260; store3Btn.visible = false; game.addChild(store3Btn); var store3BtnTxt = new Text2('Mağaza 3 Yükselt\n₺' + store3.upgradeCost, { size: 44, fill: '#fff' }); store3BtnTxt.anchor.set(0.5, 0.5); store3BtnTxt.x = store3.x; store3BtnTxt.y = store3.y + 280; store3BtnTxt.visible = false; game.addChild(store3BtnTxt); store3Btn.down = function (x, y, obj) { if (money >= store3.upgradeCost) { toplamStoreYukseltme += store3.upgradeCost; store3.upgrade(); store3BtnTxt.setText('Mağaza 3 Yükselt\n₺' + store3.upgradeCost); } }; // --- Store 4 Upgrade Button (Mağazalar panelinde) --- var store4Btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); // Move Store4 upgrade button below the store4 image on the homepage store4Btn.x = store4.x; store4Btn.y = store4.y + 260; store4Btn.visible = false; game.addChild(store4Btn); var store4BtnTxt = new Text2('Mağaza 4 Yükselt\n₺' + store4.upgradeCost, { size: 44, fill: '#fff' }); store4BtnTxt.anchor.set(0.5, 0.5); store4BtnTxt.x = store4.x; store4BtnTxt.y = store4.y + 280; store4BtnTxt.visible = false; game.addChild(store4BtnTxt); store4Btn.down = function (x, y, obj) { if (money >= store4.upgradeCost) { toplamStoreYukseltme += store4.upgradeCost; store4.upgrade(); store4BtnTxt.setText('Mağaza 4 Yükselt\n₺' + store4.upgradeCost); } }; // --- Show/hide store upgrade buttons with Mağazalar panel --- // Show panel on button press // Kapat butonu logic magazalarKapatBtn.down = function (x, y, obj) { magazalarPanel.visible = false; magazalarPanelTitle.visible = false; magazalarPanelText.visible = false; magazalarKapatBtn.visible = false; magazalarKapatBtnIcon.visible = false; magazalarKapatBtnTxt.visible = false; // Hide store upgrade buttons if (typeof storeBtn !== "undefined") { storeBtn.visible = false; } if (typeof storeBtnTxt !== "undefined") { storeBtnTxt.visible = false; } if (typeof store2Btn !== "undefined") { store2Btn.visible = false; } if (typeof store2BtnTxt !== "undefined") { store2BtnTxt.visible = false; } if (typeof store2PurchaseBtn !== "undefined") { store2PurchaseBtn.visible = false; } if (typeof store2PurchaseBtnTxt !== "undefined") { store2PurchaseBtnTxt.visible = false; } if (typeof store3Btn !== "undefined") { store3Btn.visible = false; } if (typeof store3BtnTxt !== "undefined") { store3BtnTxt.visible = false; } if (typeof store4Btn !== "undefined") { store4Btn.visible = false; } if (typeof store4BtnTxt !== "undefined") { store4BtnTxt.visible = false; } // Restore all homepage buttons/UI if (typeof store2PurchaseBtn !== "undefined") { store2PurchaseBtn.visible = !store2Purchased; } if (typeof store2PurchaseBtnTxt !== "undefined") { store2PurchaseBtnTxt.visible = !store2Purchased; } if (typeof store3PurchaseBtn !== "undefined") { store3PurchaseBtn.visible = !store3Purchased; } if (typeof store3PurchaseBtnTxt !== "undefined") { store3PurchaseBtnTxt.visible = !store3Purchased; } if (typeof store3PurchaseBtnIcon !== "undefined") { store3PurchaseBtnIcon.visible = !store3Purchased; } if (typeof store4PurchaseBtn !== "undefined") { store4PurchaseBtn.visible = !store4Purchased; } if (typeof store4PurchaseBtnTxt !== "undefined") { store4PurchaseBtnTxt.visible = !store4Purchased; } if (typeof store4PurchaseBtnIcon !== "undefined") { store4PurchaseBtnIcon.visible = !store4Purchased; } // Defensive: ensure other panels do not re-show these buttons after Mağazalar panel is closed if (typeof magazaBtn !== "undefined") { magazaBtn.visible = true; } if (typeof magazaBtnTxt !== "undefined") { magazaBtnTxt.visible = true; } if (typeof yatirimBtn !== "undefined") { yatirimBtn.visible = true; } if (typeof yatirimBtnTxt !== "undefined") { yatirimBtnTxt.visible = true; } if (typeof bankBtn !== "undefined") { bankBtn.visible = true; } if (typeof bankBtnTxt !== "undefined") { bankBtnTxt.visible = true; } if (typeof soundBtn !== "undefined") { soundBtn.visible = true; } if (typeof soundBtnTxt !== "undefined") { soundBtnTxt.visible = true; } if (typeof newPageBtn !== "undefined") { newPageBtn.visible = true; } if (typeof newPageBtnTxt !== "undefined") { newPageBtnTxt.visible = true; } if (typeof madenlerBtn !== "undefined") { madenlerBtn.visible = true; } if (typeof madenlerBtnTxt !== "undefined") { madenlerBtnTxt.visible = true; } // Removed magazalarBtn and magazalarBtnTxt show logic (button was deleted) if (typeof languagesBtn !== "undefined") { languagesBtn.visible = true; } if (typeof languagesBtnTxt !== "undefined") { languagesBtnTxt.visible = true; } // Info and How To Play buttons are never shown if (typeof borcOdeBtn !== "undefined") { borcOdeBtn.visible = true; } if (typeof borcOdeBtnTxt !== "undefined") { borcOdeBtnTxt.visible = true; } if (typeof mevduatBtn !== "undefined") { mevduatBtn.visible = true; } if (typeof mevduatBtnTxt !== "undefined") { mevduatBtnTxt.visible = true; } // Move stores and customers back to their original positions if (typeof store !== "undefined") { store.x = 1850; store.y = 600; store.visible = true; // Anasayfa'da mağazaları göster } if (typeof store2 !== "undefined") { store2.x = 1850; store2.y = 950; store2.visible = true; // Anasayfa'da mağazaları göster } if (typeof store3 !== "undefined") { store3.x = 1850; store3.y = 1300; store3.visible = true; // Anasayfa'da mağazaları göster } if (typeof store4 !== "undefined") { store4.x = 1850; store4.y = 1650; store4.visible = true; // Anasayfa'da mağazaları göster } // Customer logic removed: no customers to reposition on Mağazalar panel close. }; // --- Production Buttons and Logic for each factory --- var prodBtns = []; for (var i = 0; i < factories.length; i++) { (function (idx) { var f = factories[idx]; var btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5 }); btn.x = f.x; // Add horizontal gap to production buttons to match factory panel gap btn.x = f.x; // Move MB, CASE, FAN, HDD, COOLER (indices 5,6,7,8,9) production buttons further down if (idx >= 5) { btn.y = f.y + 350 + 80; } else { btn.y = f.y + 350; } game.addChild(btn); var txt = new Text2('ÜRET', { size: 36, fill: '#fff' }); txt.anchor.set(0.5, 0.5); txt.x = btn.x; txt.y = btn.y; game.addChild(txt); btn.factoryIndex = idx; btn.down = function (x, y, obj) { // Disable if investment panel is open or Çalışanlar paneli is open if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) { return; } var idx = this.factoryIndex; // Only allow production if factory is unlocked if (!factoryUnlocks[idx]) { // Optionally, flash or shake to indicate locked tween(factories[idx], { scaleX: 1.15, scaleY: 1.15 }, { duration: 80, onFinish: function onFinish() { tween(factories[idx], { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); return; } var f = factories[idx]; var part = partTypes[idx]; var produced = 0; var hadMaterial = false; for (var j = 0; j < f.production; j++) { // Each part needs: copper:2, silicon:1, iron:1, silver:1, nikel:1, gold:1 // Calculate production cost as 50% of the sale price (which is 30~49, so use 40 as avg, or use 30 + Math.floor(Math.random()*20)/2 for dynamic) var salePrice = 30 + Math.floor(Math.random() * 20); var productionCost = Math.floor(salePrice * 0.5); if (rawMaterials.copper >= 2 && rawMaterials.silicon >= 1 && rawMaterials.iron >= 1 && rawMaterials.silver >= 1 && rawMaterials.nikel >= 1 && rawMaterials.gold >= 1 && money >= productionCost) { hadMaterial = true; rawMaterials.copper -= 2; rawMaterials.silicon -= 1; rawMaterials.iron -= 1; rawMaterials.silver -= 1; rawMaterials.nikel -= 1; rawMaterials.gold -= 1; money -= productionCost; updateMoneyText(); parts[part] += 1; produced++; } } if (produced > 0) { updateRawText(); updatePartsText(); // Animate factory tween(f, { scaleX: 1.1, scaleY: 1.1 }, { duration: 120, easing: tween.easeOut, onFinish: function onFinish() { tween(f, { scaleX: 1, scaleY: 1 }, { duration: 120 }); } }); } else if (!hadMaterial) { // Show "Maden Kalmadı" warning for 1 minute (60 seconds = 3600 frames) var oldText = txt.getText ? txt.getText() : ''; txt.setText('Maden Kalmadı'); tween(txt, { tint: 0xff2222 }, { duration: 120 }); LK.setTimeout(function () { if (txt && txt.setText) { txt.setText('ÜRET'); } tween(txt, { tint: 0xffffff }, { duration: 120 }); }, 3600); // 1 minute (60s * 60fps) } }; prodBtns.push(btn); })(i); } // --- Customer/Store Logic --- // Customer logic removed: customers are no longer used in the game. // --- Game Update --- game.update = function () { // Auto-produce for mines for (var i = 0; i < mines.length; i++) { mines[i].update(); // Auto-produce for mine if enabled if (mineAutoProduce[i]) { // Çalışan 2'nin seviyesiyle üretim süresini azalt: her seviye %2 daha hızlı var baseInterval = 30; // 0.5s var speedBonus = 1 - (worker2Level - 1) * 0.02; if (speedBonus < 0.1) { speedBonus = 0.1; } // min %90 azaltma (maks %900 hız) var interval = Math.max(2, Math.floor(baseInterval * speedBonus)); if (!mines[i].autoTick) { mines[i].autoTick = 0; } mines[i].autoTick++; if (mines[i].autoTick >= interval) { rawMaterials[mines[i].type] += mines[i].production; updateRawText(); // Animate mine for feedback tween(mines[i], { scaleX: 1.1, scaleY: 1.1 }, { duration: 120, easing: tween.easeOut, onFinish: function onFinish() { tween(this.target, { scaleX: 1, scaleY: 1 }, { duration: 120 }); }.bind({ target: mines[i] }) }); mines[i].autoTick = 0; } } } // Auto-produce for factories for (var i = 0; i < factories.length; i++) { if (factoryAutoProduce[i] && factoryUnlocks[i]) { if (!factories[i].autoTick) { factories[i].autoTick = 0; } factories[i].autoTick++; // Use per-factory production time (speed up with level) // Çalışan 2'nin seviyesiyle üretim süresi indirimi uygula var prodTime = factories[i].getProductionTime ? factories[i].getProductionTime() : 30; // Çalışan 2'nin seviyesiyle fabrika üretim süresi indirimi uygula var worker2FactoryBonus = 1 - (worker2Level - 1) * 0.02; if (worker2FactoryBonus < 0.1) { worker2FactoryBonus = 0.1; } // min %90 azaltma (maks %900 hız) prodTime = Math.max(2, Math.floor(prodTime * worker2FactoryBonus)); // Çalışan 2'nin seviyesiyle ek olarak üretim hızını %2 düşür (yani prodTime'ı tekrar %2 azalt) var worker2ExtraSpeedBonus = 1 - (worker2Level - 1) * 0.02; if (worker2ExtraSpeedBonus < 0.1) { worker2ExtraSpeedBonus = 0.1; } prodTime = Math.max(2, Math.floor(prodTime * worker2ExtraSpeedBonus)); if (factories[i].autoTick >= prodTime) { var f = factories[i]; var part = partTypes[i]; var produced = 0; // Çalışan 2'nin seviyesiyle üretim miktarını artır: her seviye %2 daha fazla üretim var worker2ProductionBonus = 1 + (worker2Level - 1) * 0.02; var totalProduction = Math.floor(f.production * worker2ProductionBonus); if (totalProduction < 1) { totalProduction = 1; } for (var j = 0; j < totalProduction; j++) { // Each part needs: copper:2, silicon:1, iron:1, silver:1, nikel:1, gold:1 // Calculate production cost as 50% of the sale price (which is 30~49, so use 40 as avg, or use 30 + Math.floor(Math.random()*20)/2 for dynamic) var salePrice = 30 + Math.floor(Math.random() * 20); var productionCost = Math.floor(salePrice * 0.5); if (rawMaterials.copper >= 2 && rawMaterials.silicon >= 1 && rawMaterials.iron >= 1 && rawMaterials.silver >= 1 && rawMaterials.nikel >= 1 && rawMaterials.gold >= 1 && money >= productionCost) { rawMaterials.copper -= 2; rawMaterials.silicon -= 1; rawMaterials.iron -= 1; rawMaterials.silver -= 1; rawMaterials.nikel -= 1; rawMaterials.gold -= 1; money -= productionCost; updateMoneyText(); parts[part] += 1; produced++; } } if (produced > 0) { updateRawText(); updatePartsText(); // Animate factory tween(f, { scaleX: 1.1, scaleY: 1.1 }, { duration: 120, easing: tween.easeOut, onFinish: function onFinish() { tween(this.target, { scaleX: 1, scaleY: 1 }, { duration: 120 }); }.bind({ target: f }) }); } factories[i].autoTick = 0; } } } // Customer logic removed: no customer spawning or processing. // --- Ava: Mağazalar stokta olan ürünleri otomatik satar --- // Her mağaza için otomatik satış (her biri kendi hızında) // Satış, mağaza görünür olmasa da devam etmeli if (store && typeof store.tryAutoSell === "function") { store.tryAutoSell(); } if (store2 && store2Purchased && typeof store2.tryAutoSell === "function") { store2.tryAutoSell(); } if (store3 && store3Purchased && typeof store3.tryAutoSell === "function") { store3.tryAutoSell(); } if (store4 && store4Purchased && typeof store4.tryAutoSell === "function") { store4.tryAutoSell(); } }; // --- Dragging (for fun, not required) --- var dragNode = null; game.down = function (x, y, obj) { // No drag for now }; game.move = function (x, y, obj) { // No drag for now }; game.up = function (x, y, obj) { // No drag for now }; // --- Internet Offer Panel --- // Panel variables var offerPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 420, height: 340, x: 120, y: 1366 // center of 2732 }); game.addChild(offerPanel); var offerTitle = new Text2('İNTERNET TEKLİFİ', { size: 32, fill: '#fff' }); // Move to right edge of panel offerTitle.anchor.set(1, 0); offerTitle.x = offerPanel.x + offerPanel.width / 2 - 20; offerTitle.y = offerPanel.y - 140; game.addChild(offerTitle); var offerPartTxt = new Text2('', { size: 28, fill: '#bff' }); offerPartTxt.anchor.set(0.5, 0); offerPartTxt.x = offerPanel.x; offerPartTxt.y = offerPanel.y - 60; game.addChild(offerPartTxt); var offerAmountTxt = new Text2('', { size: 28, fill: '#fff' }); offerAmountTxt.anchor.set(0.5, 0); offerAmountTxt.x = offerPanel.x; offerAmountTxt.y = offerPanel.y - 10; game.addChild(offerAmountTxt); var offerPriceTxt = new Text2('', { size: 28, fill: '#ffb' }); offerPriceTxt.anchor.set(0.5, 0); offerPriceTxt.x = offerPanel.x; offerPriceTxt.y = offerPanel.y + 40; game.addChild(offerPriceTxt); var offerBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 220, height: 70, x: offerPanel.x, y: offerPanel.y + 180 // moved 30px lower (was 150), now 180 }); game.addChild(offerBtn); var offerBtnTxt = new Text2('Satın Al', { size: 36, fill: '#fff' }); offerBtnTxt.anchor.set(0.5, 0.5); offerBtnTxt.x = offerBtn.x; offerBtnTxt.y = offerBtn.y; game.addChild(offerBtnTxt); // Offer state var currentOffer = { part: null, amount: 0, price: 0, active: false // yeni teklif aktif mi }; // Helper to generate a new offer var offerTimeLeft = 0; var offerTimerInterval = null; var offerTimeTxt = new Text2('', { size: 32, fill: '#ffb' }); offerTimeTxt.anchor.set(0.5, 0); offerTimeTxt.x = offerPanel.x; offerTimeTxt.y = offerPanel.y + 90; game.addChild(offerTimeTxt); function updateOfferTimeTxt() { if (offerTimeLeft > 0) { var min = Math.floor(offerTimeLeft / 60); var sec = offerTimeLeft % 60; var timeStr = min > 0 ? min + " dk " + (sec < 10 ? "0" : "") + sec + " sn" : sec + " sn"; offerTimeTxt.setText("Süre: " + timeStr); } else { offerTimeTxt.setText(''); } } function generateInternetOffer() { // Pick a random part type var idx = Math.floor(Math.random() * partTypes.length); var part = partTypes[idx]; // Random amount: 2-8 var amount = 2 + Math.floor(Math.random() * 7); // Random price per item: 18-32 var pricePer = 18 + Math.floor(Math.random() * 15); var totalPrice = pricePer * amount; currentOffer.part = part; currentOffer.amount = amount; currentOffer.price = totalPrice; currentOffer.active = true; // Update UI offerPartTxt.setText(idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : part.toUpperCase()); offerAmountTxt.setText("Adet: " + amount); offerPriceTxt.setText("Toplam: ₺" + totalPrice); offerBtn.visible = true; offerBtnTxt.visible = true; // Rastgele 1-2 dakika (60-120 saniye) arası süre belirle offerTimeLeft = (60 + Math.floor(Math.random() * 61)) * 60; updateOfferTimeTxt(); // Start timer for next offer if (offerTimerInterval) { LK.clearInterval(offerTimerInterval); offerTimerInterval = null; } offerTimerInterval = LK.setInterval(function () { if (!currentOffer.active) { LK.clearInterval(offerTimerInterval); offerTimerInterval = null; return; } offerTimeLeft--; updateOfferTimeTxt(); if (offerTimeLeft <= 0) { // Süre doldu, yeni teklif gelsin currentOffer.active = false; offerBtn.visible = false; offerBtnTxt.visible = false; offerPartTxt.setText("Süre doldu!"); offerAmountTxt.setText(""); offerPriceTxt.setText(""); updateOfferTimeTxt(); LK.clearInterval(offerTimerInterval); offerTimerInterval = null; LK.setTimeout(function () { generateInternetOffer(); }, 60); // 1 frame sonra yeni teklif gelsin } }, 60); // 1 saniye } generateInternetOffer(); // Button logic offerBtn.down = function (x, y, obj) { if (!currentOffer.active) { return; } if (money >= currentOffer.price) { money -= currentOffer.price; toplamInternetTeklifHarcamasi += currentOffer.price; parts[currentOffer.part] += currentOffer.amount; updateMoneyText(); updatePartsText(); // Animate panel for feedback tween(offerPanel, { scaleX: 1.08, scaleY: 1.08 }, { duration: 120, onFinish: function onFinish() { tween(offerPanel, { scaleX: 1, scaleY: 1 }, { duration: 120 }); } }); // Teklif tamamlandı, yeni teklif gelene kadar butonu kapat currentOffer.active = false; offerBtn.visible = false; offerBtnTxt.visible = false; offerPartTxt.setText("Teklif tamamlandı!"); offerAmountTxt.setText(""); offerPriceTxt.setText(""); offerTimeLeft = 1200; updateOfferTimeTxt(); if (offerTimerInterval) { LK.clearInterval(offerTimerInterval); offerTimerInterval = null; } // Yeni teklif rastgele 1-2 dakika sonra gelsin var nextOfferDelay = (60 + Math.floor(Math.random() * 61)) * 60; LK.setTimeout(function () { generateInternetOffer(); }, nextOfferDelay); } else { // Not enough money, flash button red tween(offerBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(offerBtn, { tint: 0x222222 }, { duration: 120 }); } }); } }; // --- Toplu Satış Paneli --- var sellPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 420, height: 340, x: 120, y: 1366 + 400 // offerPanel.y + 400 px altına }); game.addChild(sellPanel); var sellTitle = new Text2('TOPLU SATIŞ TEKLİFİ', { size: 32, fill: '#fff' }); // Move to right edge of panel sellTitle.anchor.set(1, 0); sellTitle.x = sellPanel.x + sellPanel.width / 2 - 20; sellTitle.y = sellPanel.y - 140; game.addChild(sellTitle); var sellPartTxt = new Text2('', { size: 28, fill: '#bff' }); sellPartTxt.anchor.set(0.5, 0); sellPartTxt.x = sellPanel.x; sellPartTxt.y = sellPanel.y - 60; game.addChild(sellPartTxt); var sellAmountTxt = new Text2('', { size: 28, fill: '#fff' }); sellAmountTxt.anchor.set(0.5, 0); sellAmountTxt.x = sellPanel.x; sellAmountTxt.y = sellPanel.y - 10; game.addChild(sellAmountTxt); var sellPriceTxt = new Text2('', { size: 28, fill: '#ffb' }); sellPriceTxt.anchor.set(0.5, 0); sellPriceTxt.x = sellPanel.x; sellPriceTxt.y = sellPanel.y + 40; game.addChild(sellPriceTxt); var sellBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 220, height: 70, x: sellPanel.x, y: sellPanel.y + 180 // moved 30px lower (was 150), now 180 }); game.addChild(sellBtn); var sellBtnTxt = new Text2('Sat', { size: 36, fill: '#fff' }); sellBtnTxt.anchor.set(0.5, 0.5); sellBtnTxt.x = sellBtn.x; sellBtnTxt.y = sellBtn.y; game.addChild(sellBtnTxt); // Satış teklifi state var currentSellOffer = { part: null, amount: 0, price: 0, active: false }; // Helper to generate a new sell offer var sellOfferTimeLeft = 0; var sellOfferTimerInterval = null; var sellOfferTimeTxt = new Text2('', { size: 32, fill: '#ffb' }); sellOfferTimeTxt.anchor.set(0.5, 0); sellOfferTimeTxt.x = sellPanel.x; sellOfferTimeTxt.y = sellPanel.y + 90; game.addChild(sellOfferTimeTxt); function updateSellOfferTimeTxt() { if (sellOfferTimeLeft > 0) { var min = Math.floor(sellOfferTimeLeft / 60); var sec = sellOfferTimeLeft % 60; var timeStr = min > 0 ? min + " dk " + (sec < 10 ? "0" : "") + sec + " sn" : sec + " sn"; sellOfferTimeTxt.setText("Süre: " + timeStr); } else { sellOfferTimeTxt.setText(''); } } // Helper to generate a new sell offer function generateSellOffer() { // Sadece stoğunda en az 2 olanlardan rastgele seç var available = []; for (var i = 0; i < partTypes.length; i++) { if (parts[partTypes[i]] >= 2) { available.push(partTypes[i]); } } // Eğer hiç stoğu olan ürün yoksa, teklif oluşturma if (available.length === 0) { currentSellOffer.part = null; currentSellOffer.amount = 0; currentSellOffer.price = 0; currentSellOffer.active = false; sellPartTxt.setText("Stokta ürün yok"); sellAmountTxt.setText(""); sellPriceTxt.setText(""); sellBtn.visible = false; sellBtnTxt.visible = false; return; } var idx = Math.floor(Math.random() * available.length); var part = available[idx]; // Satış miktarı: mevcut stoğun %50-%75 aralığında, en az 2, en fazla 8 ve stoğun kendisinden fazla olamaz var stock = parts[part]; var minAmount = Math.max(2, Math.floor(stock * 0.5)); var maxAmount = Math.max(minAmount, Math.min(Math.floor(stock * 0.75), 8)); var amount = minAmount; if (maxAmount > minAmount) { amount = minAmount + Math.floor(Math.random() * (maxAmount - minAmount + 1)); } // Satış fiyatı: 28-45 arası birim fiyat var pricePer = 28 + Math.floor(Math.random() * 18); var totalPrice = pricePer * amount; currentSellOffer.part = part; currentSellOffer.amount = amount; currentSellOffer.price = totalPrice; currentSellOffer.active = true; sellPartTxt.setText(idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : part.toUpperCase()); sellAmountTxt.setText("Adet: " + amount); sellPriceTxt.setText("Toplam: ₺" + totalPrice); sellBtn.visible = true; sellBtnTxt.visible = true; // Süreyi rastgele 1-2 dakika (60-120 saniye) arası belirle sellOfferTimeLeft = (60 + Math.floor(Math.random() * 61)) * 60; updateSellOfferTimeTxt(); // Timer varsa temizle if (sellOfferTimerInterval) { LK.clearInterval(sellOfferTimerInterval); sellOfferTimerInterval = null; } sellOfferTimerInterval = LK.setInterval(function () { if (!currentSellOffer.active) { LK.clearInterval(sellOfferTimerInterval); sellOfferTimerInterval = null; return; } sellOfferTimeLeft--; updateSellOfferTimeTxt(); if (sellOfferTimeLeft <= 0) { // Süre doldu, yeni teklif gelsin currentSellOffer.active = false; sellBtn.visible = false; sellBtnTxt.visible = false; sellPartTxt.setText("Süre doldu!"); sellAmountTxt.setText(""); sellPriceTxt.setText(""); updateSellOfferTimeTxt(); LK.clearInterval(sellOfferTimerInterval); sellOfferTimerInterval = null; LK.setTimeout(function () { generateSellOffer(); }, 60); // 1 frame sonra yeni teklif gelsin } }, 60); // 1 saniye } generateSellOffer(); // Satış butonu logic sellBtn.down = function (x, y, obj) { // If not active or not enough stock, do nothing (button is visually disabled) if (!currentSellOffer.active || parts[currentSellOffer.part] < currentSellOffer.amount) { // Optionally, flash button red and show warning if user tries to press when not enough stock tween(sellBtn, { tint: 0xff2222 }, { duration: 120, onFinish: function onFinish() { tween(sellBtn, { tint: 0x222222 }, { duration: 120 }); } }); // 'Stok yetersiz' uyarısı göster sellBtnTxt.setText('Stok yetersiz'); LK.setTimeout(function () { // Eğer buton hala görünürse eski haline döndür if (sellBtn.visible) { sellBtnTxt.setText('Sat'); } // Teklifi yenileme, teklif tamamlanmasın! }, 300); // 5 saniye = 300 frame return; } // Satış işlemi parts[currentSellOffer.part] -= currentSellOffer.amount; money += currentSellOffer.price; toplamTopluSatisGeliri += currentSellOffer.price; updateMoneyText(); updatePartsText(); // Panel animasyonu tween(sellPanel, { scaleX: 1.08, scaleY: 1.08 }, { duration: 120, onFinish: function onFinish() { tween(sellPanel, { scaleX: 1, scaleY: 1 }, { duration: 120 }); } }); // Teklif tamamlandı, yeni teklif gelene kadar butonu kapat currentSellOffer.active = false; sellBtn.visible = false; sellBtnTxt.visible = false; sellPartTxt.setText("Teklif tamamlandı!"); sellAmountTxt.setText(""); sellPriceTxt.setText(""); // Yeni teklif rastgele 1-2 dakika sonra gelsin var nextSellOfferDelay = (60 + Math.floor(Math.random() * 61)) * 60; LK.setTimeout(function () { generateSellOffer(); }, nextSellOfferDelay); }; // Satış teklifi her rastgele 1-5 dakikada bir yenilensin (eğer aktif değilse) function scheduleNextSellOfferInterval() { var interval = (60 + Math.floor(Math.random() * 61)) * 60; LK.setTimeout(function () { if (!currentSellOffer.active) { generateSellOffer(); } scheduleNextSellOfferInterval(); }, interval); } scheduleNextSellOfferInterval(); // Image file for CPU product (part_cpu) is now registered with id '6842c1a1c660c325a06c2abc'
===================================================================
--- original.js
+++ change.js
@@ -273,206 +273,11 @@
/****
* Game Code
****/
-// --- Ava: Panel-aware input lock: Only allow input for the active panel and its UI, block background input ---
-// This must be at the very top of Game Code to override all .down/.move/.up handlers defensively
-// Helper: returns the currently open panel, or null if none
-function _typeof2(o) {
- "@babel/helpers - typeof";
- return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
- return typeof o;
- } : function (o) {
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
- }, _typeof2(o);
-}
-function getActivePanel() {
- if (typeof patronPanel !== "undefined" && patronPanel.visible) return patronPanel;
- if (typeof magazaPanel !== "undefined" && magazaPanel.visible) return magazaPanel;
- if (typeof yatirimPanel !== "undefined" && yatirimPanel.visible) return yatirimPanel;
- if (typeof magazalarPanel !== "undefined" && magazalarPanel.visible) return magazalarPanel;
- if (typeof newPagePanel !== "undefined" && newPagePanel.visible) return newPagePanel;
- if (typeof madenlerPanel !== "undefined" && madenlerPanel.visible) return madenlerPanel;
- if (typeof mevduatPanel !== "undefined" && mevduatPanel.visible) return mevduatPanel;
- return null;
-}
-// Helper: returns true if the given obj is a child of the active panel or its UI
-function isPanelInputAllowed(obj) {
- var panel = getActivePanel();
- if (!panel) return true; // No panel open, allow all input
- // Defensive: allow input for panel and its direct children, and for known panel UI elements
- // List all panel UI elements that should remain interactive when their panel is open
- var allowed = [panel];
- // Patron panel
- if (panel === patronPanel) {
- if (typeof patronSiparisTamamlaBtn !== "undefined") allowed.push(patronSiparisTamamlaBtn);
- if (typeof patronSiparisTamamlaBtnTxt !== "undefined") allowed.push(patronSiparisTamamlaBtnTxt);
- if (typeof patronSiparisReddetBtn !== "undefined") allowed.push(patronSiparisReddetBtn);
- if (typeof patronSiparisReddetBtnTxt !== "undefined") allowed.push(patronSiparisReddetBtnTxt);
- if (typeof patronKapatBtn !== "undefined") allowed.push(patronKapatBtn);
- if (typeof patronKapatBtnTxt !== "undefined") allowed.push(patronKapatBtnTxt);
- if (typeof patronKapatBtnIcon !== "undefined") allowed.push(patronKapatBtnIcon);
- }
- // Mağaza panel
- if (panel === magazaPanel) {
- if (typeof magazaKapatBtn !== "undefined") allowed.push(magazaKapatBtn);
- if (typeof magazaKapatBtnTxt !== "undefined") allowed.push(magazaKapatBtnTxt);
- if (typeof magazaKapatBtnIcon !== "undefined") allowed.push(magazaKapatBtnIcon);
- }
- // Yatırım panel
- if (panel === yatirimPanel) {
- if (typeof yatirimKapatBtn !== "undefined") allowed.push(yatirimKapatBtn);
- if (typeof yatirimKapatBtnTxt !== "undefined") allowed.push(yatirimKapatBtnTxt);
- if (typeof yatirimKapatBtnIcon !== "undefined") allowed.push(yatirimKapatBtnIcon);
- // Coin buy/sell buttons
- if (typeof coinBuyBtns !== "undefined" && Array.isArray(coinBuyBtns)) {
- for (var i = 0; i < coinBuyBtns.length; i++) allowed.push(coinBuyBtns[i]);
- }
- if (typeof coinSellBtns !== "undefined" && Array.isArray(coinSellBtns)) {
- for (var i = 0; i < coinSellBtns.length; i++) allowed.push(coinSellBtns[i]);
- }
- }
- // Mağazalar panel
- if (panel === magazalarPanel) {
- if (typeof magazalarKapatBtn !== "undefined") allowed.push(magazalarKapatBtn);
- if (typeof magazalarKapatBtnTxt !== "undefined") allowed.push(magazalarKapatBtnTxt);
- if (typeof magazalarKapatBtnIcon !== "undefined") allowed.push(magazalarKapatBtnIcon);
- if (typeof store2PurchaseBtn !== "undefined") allowed.push(store2PurchaseBtn);
- if (typeof store2PurchaseBtnTxt !== "undefined") allowed.push(store2PurchaseBtnTxt);
- if (typeof store3PurchaseBtn !== "undefined") allowed.push(store3PurchaseBtn);
- if (typeof store3PurchaseBtnTxt !== "undefined") allowed.push(store3PurchaseBtnTxt);
- if (typeof store3PurchaseBtnIcon !== "undefined") allowed.push(store3PurchaseBtnIcon);
- if (typeof store4PurchaseBtn !== "undefined") allowed.push(store4PurchaseBtn);
- if (typeof store4PurchaseBtnTxt !== "undefined") allowed.push(store4PurchaseBtnTxt);
- if (typeof store4PurchaseBtnIcon !== "undefined") allowed.push(store4PurchaseBtnIcon);
- if (typeof storeBtn !== "undefined") allowed.push(storeBtn);
- if (typeof storeBtnTxt !== "undefined") allowed.push(storeBtnTxt);
- if (typeof store2Btn !== "undefined") allowed.push(store2Btn);
- if (typeof store2BtnTxt !== "undefined") allowed.push(store2BtnTxt);
- if (typeof store3Btn !== "undefined") allowed.push(store3Btn);
- if (typeof store3BtnTxt !== "undefined") allowed.push(store3BtnTxt);
- if (typeof store4Btn !== "undefined") allowed.push(store4Btn);
- if (typeof store4BtnTxt !== "undefined") allowed.push(store4BtnTxt);
- }
- // Çalışanlar panel (newPagePanel)
- if (panel === newPagePanel) {
- if (typeof newPageKapatBtn !== "undefined") allowed.push(newPageKapatBtn);
- if (typeof newPageKapatBtnTxt !== "undefined") allowed.push(newPageKapatBtnTxt);
- if (typeof newPageKapatBtnIcon !== "undefined") allowed.push(newPageKapatBtnIcon);
- if (typeof newPageKapatBtnTop !== "undefined") allowed.push(newPageKapatBtnTop);
- if (typeof newPageKapatBtnTopTxt !== "undefined") allowed.push(newPageKapatBtnTopTxt);
- if (typeof newPageKapatBtnTopIcon !== "undefined") allowed.push(newPageKapatBtnTopIcon);
- if (typeof workerImages !== "undefined" && Array.isArray(workerImages)) {
- for (var i = 0; i < workerImages.length; i++) {
- if (workerImages[i].img) allowed.push(workerImages[i].img);
- if (workerImages[i].label) allowed.push(workerImages[i].label);
- }
- }
- if (typeof worker1UpgradeBtn !== "undefined") allowed.push(worker1UpgradeBtn);
- if (typeof worker2UpgradeBtn !== "undefined") allowed.push(worker2UpgradeBtn);
- if (typeof worker3UpgradeBtn !== "undefined") allowed.push(worker3UpgradeBtn);
- if (typeof worker4UpgradeBtn !== "undefined") allowed.push(worker4UpgradeBtn);
- if (typeof worker5UpgradeBtn !== "undefined") allowed.push(worker5UpgradeBtn);
- }
- // Madenler panel
- if (panel === madenlerPanel) {
- if (typeof madenlerKapatBtn !== "undefined") allowed.push(madenlerKapatBtn);
- if (typeof madenlerKapatBtnTxt !== "undefined") allowed.push(madenlerKapatBtnTxt);
- if (typeof madenlerKapatBtnIcon !== "undefined") allowed.push(madenlerKapatBtnIcon);
- if (typeof madenlerMineUpgradeBtns !== "undefined" && Array.isArray(madenlerMineUpgradeBtns)) {
- for (var i = 0; i < madenlerMineUpgradeBtns.length; i++) allowed.push(madenlerMineUpgradeBtns[i]);
- }
- if (typeof madenlerMineAutoBtns !== "undefined" && Array.isArray(madenlerMineAutoBtns)) {
- for (var i = 0; i < madenlerMineAutoBtns.length; i++) allowed.push(madenlerMineAutoBtns[i]);
- }
- if (typeof madenlerMineImages !== "undefined" && Array.isArray(madenlerMineImages)) {
- for (var i = 0; i < madenlerMineImages.length; i++) allowed.push(madenlerMineImages[i]);
- }
- }
- // Mevduat panel
- if (panel === mevduatPanel) {
- if (typeof mevduatYatirBtn !== "undefined") allowed.push(mevduatYatirBtn);
- if (typeof mevduatCekBtn !== "undefined") allowed.push(mevduatCekBtn);
- }
- // Defensive: allow input for panel's children as well
- if (obj && panel && _typeof2(panel.children) === "object" && panel.children.length) {
- for (var i = 0; i < panel.children.length; i++) {
- if (panel.children[i] === obj) return true;
- }
- }
- // If obj is in allowed list, allow input
- if (allowed.indexOf(obj) !== -1) return true;
- return false;
-}
-// Patch LK's global input event system to block all input except for the active panel and its UI
-if (typeof LK !== "undefined" && typeof LK.on === "function") {
- var origLKOn = LK.on;
- LK.on = function (event, handler) {
- var wrappedHandler = function wrappedHandler(obj) {
- var panel = getActivePanel();
- if (panel) {
- // Only allow input for panel and its UI
- if (!isPanelInputAllowed(obj)) return true;
- }
- return handler(obj);
- };
- return origLKOn.call(LK, event, wrappedHandler);
- };
-}
-// Patch all .down/.move/.up handlers for all homepage and game UI elements
-function patchAllInputHandlers() {
- // List all button arrays and UI arrays to patch
- var allBtnArrays = [typeof factoryBtns !== "undefined" ? factoryBtns : [], typeof factoryUnlockBtns !== "undefined" ? factoryUnlockBtns : [], typeof prodBtns !== "undefined" ? prodBtns : [], typeof factoryAutoBtns !== "undefined" ? factoryAutoBtns : [], typeof mineBtns !== "undefined" ? mineBtns : [], typeof madenlerMineUpgradeBtns !== "undefined" ? madenlerMineUpgradeBtns : [], typeof madenlerMineAutoBtns !== "undefined" ? madenlerMineAutoBtns : [], typeof workerImages !== "undefined" ? workerImages.map(function (w) {
- return w.img;
- }) : [], typeof worker1UpgradeBtn !== "undefined" ? [worker1UpgradeBtn] : [], typeof worker2UpgradeBtn !== "undefined" ? [worker2UpgradeBtn] : [], typeof worker3UpgradeBtn !== "undefined" ? [worker3UpgradeBtn] : [], typeof worker4UpgradeBtn !== "undefined" ? [worker4UpgradeBtn] : [], typeof worker5UpgradeBtn !== "undefined" ? [worker5UpgradeBtn] : [], typeof storeBtn !== "undefined" ? [storeBtn] : [], typeof store2Btn !== "undefined" ? [store2Btn] : [], typeof store3Btn !== "undefined" ? [store3Btn] : [], typeof store4Btn !== "undefined" ? [store4Btn] : [], typeof store2PurchaseBtn !== "undefined" ? [store2PurchaseBtn] : [], typeof store3PurchaseBtn !== "undefined" ? [store3PurchaseBtn] : [], typeof store4PurchaseBtn !== "undefined" ? [store4PurchaseBtn] : [], typeof magazaBtn !== "undefined" ? [magazaBtn] : [], typeof yatirimBtn !== "undefined" ? [yatirimBtn] : [], typeof bankBtn !== "undefined" ? [bankBtn] : [], typeof borcOdeBtn !== "undefined" ? [borcOdeBtn] : [], typeof madenlerBtn !== "undefined" ? [madenlerBtn] : [], typeof newPageBtn !== "undefined" ? [newPageBtn] : [], typeof calisanlarBtnImg !== "undefined" ? [calisanlarBtnImg] : [], typeof madenlerBtnMineImg !== "undefined" ? [madenlerBtnMineImg] : [], typeof soundBtn !== "undefined" ? [soundBtn] : [], typeof howToBtn !== "undefined" ? [howToBtn] : [], typeof offerBtn !== "undefined" ? [offerBtn] : [], typeof sellBtn !== "undefined" ? [sellBtn] : [], typeof magazaKapatBtn !== "undefined" ? [magazaKapatBtn] : [], typeof yatirimKapatBtn !== "undefined" ? [yatirimKapatBtn] : [], typeof magazalarKapatBtn !== "undefined" ? [magazalarKapatBtn] : [], typeof newPageKapatBtn !== "undefined" ? [newPageKapatBtn] : [], typeof newPageKapatBtnTop !== "undefined" ? [newPageKapatBtnTop] : [], typeof madenlerKapatBtn !== "undefined" ? [madenlerKapatBtn] : [], typeof patronKapatBtn !== "undefined" ? [patronKapatBtn] : []
- // Add more as needed
- ];
- for (var arrIdx = 0; arrIdx < allBtnArrays.length; arrIdx++) {
- var arr = allBtnArrays[arrIdx];
- if (!arr) continue;
- for (var i = 0; i < arr.length; i++) {
- var btn = arr[i];
- if (!btn) continue;
- // Patch .down
- if (btn.down && !btn._inputLockPatched) {
- btn._origDown = btn.down;
- btn.down = function (x, y, obj) {
- var panel = getActivePanel();
- if (panel && !isPanelInputAllowed(this)) return true;
- return this._origDown ? this._origDown(x, y, obj) : undefined;
- };
- btn._inputLockPatched = true;
- }
- // Patch .move
- if (btn.move && !btn._inputLockPatchedMove) {
- btn._origMove = btn.move;
- btn.move = function (x, y, obj) {
- var panel = getActivePanel();
- if (panel && !isPanelInputAllowed(this)) return true;
- return this._origMove ? this._origMove(x, y, obj) : undefined;
- };
- btn._inputLockPatchedMove = true;
- }
- // Patch .up
- if (btn.up && !btn._inputLockPatchedUp) {
- btn._origUp = btn.up;
- btn.up = function (x, y, obj) {
- var panel = getActivePanel();
- if (panel && !isPanelInputAllowed(this)) return true;
- return this._origUp ? this._origUp(x, y, obj) : undefined;
- };
- btn._inputLockPatchedUp = true;
- }
- }
- }
-}
-// Call patchAllInputHandlers at game start and after all UI is created
-LK.setTimeout(patchAllInputHandlers, 1);
-// Optionally, re-patch after panels open/close if new buttons are created dynamically
-// (If you add new UI elements after this, call patchAllInputHandlers() again)
-// Panel içeriğine göre genişlik/uzunluk ayarla ve ortala
-// --- Mevduat (Deposit) Panel: Internet Teklif panelinin üstüne hizalanacak şekilde ekle ---
// Defensive: Only use offerPanel's width/height/x/y if offerPanel is defined and has those properties
+// --- Mevduat (Deposit) Panel: Internet Teklif panelinin üstüne hizalanacak şekilde ekle ---
+// Panel içeriğine göre genişlik/uzunluk ayarla ve ortala
var mevduatPanelTitleText = 'Mevduat';
var mevduatPanelFaizText = '2 dakikada %10 faiz';
var mevduatPanelTitleObj = new Text2(mevduatPanelTitleText, {
size: 32,
@@ -1243,16 +1048,8 @@
delete factoryAutoBtns[i]._origDown;
}
}
}
- // Defensive: also restore .down for any factory button with .isFactoryButton property
- for (var i = 0; i < game.children.length; i++) {
- var child = game.children[i];
- if (child && child.isFactoryButton && child._origDown) {
- child.down = child._origDown;
- delete child._origDown;
- }
- }
};
}
// Oyun başında ilk siparişi oluştur
LK.setTimeout(function () {
@@ -1296,8 +1093,23 @@
patronKapatBtnTxt.visible = false;
game.addChild(patronKapatBtnTxt);
// Patron button opens panel
patronBtn.down = function (x, y, obj) {
+ // Patron Paneli arkaplan ve içeriğini sıfırla
+ // Paneli ve tüm içeriğini görünmez yap, sonra sadece gerekli olanları aç
+ patronPanel.visible = false;
+ patronPanelTitle.visible = false;
+ patronSiparisTxt.visible = false;
+ patronInfoTxt.visible = false;
+ patronKapatBtn.visible = false;
+ patronKapatBtnTxt.visible = false;
+ if (typeof patronKapatBtnIcon !== "undefined") patronKapatBtnIcon.visible = false;
+ patronSiparisTamamlaBtn.visible = false;
+ patronSiparisTamamlaBtnTxt.visible = false;
+ patronSiparisReddetBtn.visible = false;
+ patronSiparisReddetBtnTxt.visible = false;
+ if (typeof patronSiparisKazancTxt !== "undefined") patronSiparisKazancTxt.visible = false;
+ // Paneli ve başlığı tekrar aç
patronPanel.visible = true;
patronPanelTitle.visible = true;
patronSiparisTxt.visible = true;
patronInfoTxt.visible = true;
Factory. In-Game asset. 2d. High contrast. No shadows
Copper. In-Game asset. 2d. High contrast. No shadows
Müşteri. In-Game asset. 2d. High contrast. No shadows
Iron. In-Game asset. 2d. High contrast. No shadows
Silicon. In-Game asset. 2d. High contrast. No shadows
Store. In-Game asset. 2d. High contrast. No shadows
CPU. In-Game asset. 2d. High contrast. No shadows
PC Case. In-Game asset. 2d. High contrast. No shadows
PC GPU. In-Game asset. 2d. High contrast. No shadows
PC RAM. In-Game asset. 2d. High contrast. No shadows
PC Klavye. In-Game asset. 2d. High contrast. No shadows
PC Monitör. In-Game asset. 2d. High contrast. No shadows
City. In-Game asset. 2d. High contrast. No shadows
Bilgisayar teknikeri personel. In-Game asset. 2d. High contrast. No shadows
Mavi gömlekli bilgisayar teknikeri personeli. In-Game asset. 2d. High contrast. No shadows
Silver madeni. In-Game asset. 2d. High contrast. No shadows
Altın cevheri. In-Game asset. 2d. High contrast. No shadows
Nikel cevheri. In-Game asset. 2d. High contrast. No shadows
SSD bilgisayar Parçası. In-Game asset. 2d. High contrast. No shadows
PSU bilgisayar Parçası. In-Game asset. 2d. High contrast. No shadows
ANAKART Bilgisayar Parçası. In-Game asset. 2d. High contrast. No shadows
Maden girişi. In-Game asset. 2d. High contrast. No shadows
2000 sayısı ve Buy butonu. In-Game asset. 2d. High contrast. No shadows