User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtnTxt.visible = !store2Purchased;' Line Number: 6292
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtnTxt.visible = !store2Purchased;' Line Number: 6292
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtn.visible = !store2Purchased;' Line Number: 6286
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible === true && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtn.visible = !store2Purchased;' Line Number: 6283
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtn.visible = !store2Purchased;' Line Number: 6281
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'store4PurchaseBtn.x = store4.x;' Line Number: 6261
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'store3PurchaseBtn.x = store3.x;' Line Number: 6245
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible === true && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5750
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof store2PurchaseBtn !== "undefined" && store2PurchaseBtn && typeof store2 !== "undefined" && store2) {' Line Number: 6236
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'store2PurchaseBtn.x = store2.x;' Line Number: 6236
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && madenDepoStockTxt.visible && typeof madenDepoStockTxt.x !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.x === "number" && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt && typeof worker1EarningTxt.setText === "function") {' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5750
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x === "number" &&' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
/**** * 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 --- 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: 1.2, scaleY: 1.2 }); 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 ****/ // Example: Use COOLER part image as factory image // Example: Use HDD part image as factory image // Example: Use FAN part image as factory image // Example: Use CASE part image as factory image // Example: Use MB part image as factory image // Example: Use PSU part image as factory image // Example: Use SSD part image as factory image // Example: Use RAM part image as factory image // Example: Use GPU part image as factory image // Example: Use existing factory image for mouse // Unique mine images for each ore type // Computer parts (10 types) // Raw materials (3 types) // Factory, Store, Mine icons // Customer // Button // Create a factory class for each part type // Her çalışana farklı renkli box tanımla // kırmızımsı // mavi // yeşil // turuncu // mor // Image file for Monitor product (part_monitor) is now registered with id '6842c1a1c660c325a06c2abd' 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); // Bakiye kullanım detayını gösteren text ve ilgili fonksiyonlar kaldırıldı. // --- Ava: Fullscreen overlay for all popups/panels --- // Make overlay black and fully opaque, always covers the entire screen var fullscreenOverlay = LK.getAsset('button', { anchorX: 0, anchorY: 0, width: 2048, height: 2732, x: 0, y: 0, color: 0x000000 // black overlay }); fullscreenOverlay.visible = false; fullscreenOverlay.alpha = 0.65; // Yarı saydam, panel arkasını karartır fullscreenOverlay.zIndex = 9999; // Overlay swallows all input fullscreenOverlay.down = function (x, y, obj) { return true; }; fullscreenOverlay.move = function (x, y, obj) { return true; }; fullscreenOverlay.up = function (x, y, obj) { return true; }; game.addChild(fullscreenOverlay); // --- Ava: Helper to hide all homepage/anasayfa UI and disable all their input when any panel is open --- function setHomepageUIEnabled(enabled) { // List all homepage/anasayfa UI elements (buttons, texts, images) var homepageUI = [magazaBtn, magazaBtnTxt, yatirimBtn, yatirimBtnTxt, bankBtn, bankBtnTxt, soundBtn, soundBtnTxt, newPageBtn, newPageBtnTxt, madenlerBtn, madenlerBtnTxt, madenlerBtnMineImg, calisanlarBtnImg, infoBtn, infoBtnTxt, howToBtn, howToBtnTxt, languagesBtn, languagesBtnTxt, borcOdeBtn, borcOdeBtnTxt, mevduatBtn, mevduatBtnTxt, magazalarBtn, magazalarBtnTxt]; 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; } } } } // --- 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: 40, //{3f} // Çalışan isimleriyle aynı font büyüklüğü 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: 40, //{3j} // Çalışan isimleriyle aynı font büyüklüğü 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: 40, //{3n} // Çalışan isimleriyle aynı font büyüklüğü 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: 40, //{3r} // Çalışan isimleriyle aynı font büyüklüğü 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(); } fullscreenOverlay.visible = true; magazaPanel.visible = true; magazaPanelTitle.visible = true; magazaPanelText.visible = true; magazaKapatBtn.visible = true; magazaKapatBtnTxt.visible = true; magazaMuhasebeTitle.visible = true; magazaMuhasebeText.visible = true; updateMagazaMuhasebeText(); // Paneli ve tüm içeriğini en öne getir (butonlar dahil) if (game.setChildIndex) { game.setChildIndex(fullscreenOverlay, game.children.length - 1); game.setChildIndex(magazaPanel, game.children.length - 1); game.setChildIndex(magazaPanelTitle, game.children.length - 1); game.setChildIndex(magazaPanelText, game.children.length - 1); game.setChildIndex(magazaKapatBtn, game.children.length - 1); game.setChildIndex(magazaKapatBtnTxt, game.children.length - 1); game.setChildIndex(magazaMuhasebeTitle, game.children.length - 1); game.setChildIndex(magazaMuhasebeText, game.children.length - 1); // Kapat butonu X simgesini de en öne getir if (typeof magazaKapatBtnIcon !== "undefined") game.setChildIndex(magazaKapatBtnIcon, game.children.length - 1); } // Hide all game children except overlay and panel content for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; if (child !== fullscreenOverlay && child !== magazaPanel && child !== magazaPanelTitle && child !== magazaPanelText && child !== magazaKapatBtn && child !== magazaKapatBtnTxt && child !== magazaMuhasebeTitle && child !== magazaMuhasebeText) { child._oldVisible = child.visible; child.visible = false; } } }; // 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: 240, // %100 büyüklük (120*2) height: 120, // %100 büyüklük (60*2) x: magazaPanel.x + magazaPanel.width / 2 - 120, // sağ kenardan 120px içeride y: magazaPanel.y - magazaPanel.height / 2 + 60, // üstten 60px aşağıda color: 0xffffff, // beyaz zemin borderColor: 0xff2222, // kırmızı çerçeve borderWidth: 8 }); magazaKapatBtn.visible = false; game.addChild(magazaKapatBtn); // Kapat butonu için X simgesi (Unicode heavy multiplication X) var magazaKapatBtnIcon = new Text2("\u2716", { size: 54, fill: '#ff2222' }); magazaKapatBtnIcon.anchor.set(1, 0.5); magazaKapatBtnIcon.x = magazaKapatBtn.x - 40; magazaKapatBtnIcon.y = magazaKapatBtn.y; magazaKapatBtnIcon.visible = false; game.addChild(magazaKapatBtnIcon); var magazaKapatBtnTxt = new Text2('Kapat', { size: 64, // %100 büyüklük (32*2) 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(); } fullscreenOverlay.visible = false; magazaPanel.visible = false; magazaPanelTitle.visible = false; magazaPanelText.visible = false; magazaKapatBtn.visible = false; magazaKapatBtnTxt.visible = false; magazaMuhasebeTitle.visible = false; magazaMuhasebeText.visible = false; // Restore all game children visibility except overlay and panel content for (var i = 0; i < game.children.length; i++) { var child = game.children[i]; if (child !== fullscreenOverlay && child !== magazaPanel && child !== magazaPanelTitle && child !== magazaPanelText && child !== magazaKapatBtn && child !== magazaKapatBtnTxt && child !== magazaMuhasebeTitle && child !== magazaMuhasebeText) { if (typeof child._oldVisible !== "undefined") { child.visible = child._oldVisible; delete child._oldVisible; } else { child.visible = 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 var yatirimPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: panelWidth, height: panelHeight, x: panelX, y: panelY }); 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: 44, fill: '#fff' }); yatirimTitle.anchor.set(0.5, 0); yatirimTitle.x = yatirimPanel.x; yatirimTitle.y = yatirimPanel.y - yatirimPanel.height / 2 + 20; // panelin üstüne hizala 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: 32, 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: 28, 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: 24, 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: 30, 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: 30, 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: 240, // %100 büyüklük (120*2) height: 120, // %100 büyüklük (60*2) x: yatirimPanel.x + yatirimPanel.width / 2 - 120, 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: 54, fill: '#ff2222' }); yatirimKapatBtnIcon.anchor.set(1, 0.5); yatirimKapatBtnIcon.x = yatirimKapatBtn.x - 40; yatirimKapatBtnIcon.y = yatirimKapatBtn.y; yatirimKapatBtnIcon.visible = false; game.addChild(yatirimKapatBtnIcon); var yatirimKapatBtnTxt = new Text2('Kapat', { size: 64, fill: '#ff2222' }); yatirimKapatBtnTxt.anchor.set(0.5, 0.5); yatirimKapatBtnTxt.x = yatirimKapatBtn.x; yatirimKapatBtnTxt.y = yatirimKapatBtn.y; yatirimKapatBtnTxt.visible = false; game.addChild(yatirimKapatBtnTxt); // Yatırım paneli açıldığında tüm ekranı kaplayan overlay'i oluştur (başta görünmez) if (typeof yatirimOverlay === "undefined") { var yatirimOverlay = LK.getAsset('button', { anchorX: 0, anchorY: 0, width: 2048, height: 2732, // Tüm ekranı kapla x: 0, y: 0 // Ekranın en üstünden başla }); yatirimOverlay.visible = false; yatirimOverlay.alpha = 0.65; // Yarı saydam game.addChild(yatirimOverlay); } // 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(); } fullscreenOverlay.visible = true; yatirimPanel.visible = true; yatirimTitle.visible = true; yatirimKapatBtn.visible = true; yatirimKapatBtnTxt.visible = true; yatirimOverlay.visible = true; // Overlay'i göster // --- Mevduat paneli ve elemanları Yatırım panelinden tamamen kaldırıldı --- // 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 store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased; } if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") { store4PurchaseBtn.visible = !store4Purchased; store4PurchaseBtnTxt.visible = !store4Purchased; if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased; } } // Hide Borç Öde and Mevduat buttons when Yatırım panel is open 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; // 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 (yeni genişlik: 950) 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 ve başlığı panelin sağ kenarına hizala yatirimKapatBtn.x = yatirimPanel.x + yatirimPanel.width / 2 - 70; yatirimKapatBtn.y = yatirimPanel.y - yatirimPanel.height / 2 + 20; 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(fullscreenOverlay, game.children.length - 1); game.setChildIndex(yatirimOverlay, game.children.length - 1); game.setChildIndex(yatirimPanel, game.children.length - 1); game.setChildIndex(yatirimTitle, game.children.length - 1); 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) { fullscreenOverlay.visible = false; yatirimPanel.visible = false; yatirimTitle.visible = false; yatirimKapatBtn.visible = false; yatirimKapatBtnTxt.visible = false; if (typeof yatirimOverlay !== "undefined") yatirimOverlay.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 languagesBtn !== "undefined") languagesBtn.visible = true; if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true; if (typeof infoBtn !== "undefined") infoBtn.visible = true; if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true; if (typeof howToBtn !== "undefined") howToBtn.visible = true; if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true; // Show Borç Öde and Mevduat buttons again when Yatırım panel is closed 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; 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('Banka', { 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); // --- Mevduat Button below Borç Öde button --- var mevduatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); mevduatBtn.x = borcOdeBtn.x; mevduatBtn.y = borcOdeBtn.y + borcOdeBtn.height / 2 + 20 + 54 / 2; mevduatBtn.visible = false; // Ava: Hide Mevduat button //LK.gui.top.addChild(mevduatBtn); var mevduatBtnTxt = new Text2('Mevduat', { size: 28, fill: '#fff' }); mevduatBtnTxt.anchor.set(0.5, 0.5); mevduatBtnTxt.x = mevduatBtn.x; mevduatBtnTxt.y = mevduatBtn.y; mevduatBtnTxt.visible = false; // Ava: Hide Mevduat button label //LK.gui.top.addChild(mevduatBtnTxt); // --- Mağazalar Button below Borç Öde and Mevduat --- var magazalarBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); magazalarBtn.x = borcOdeBtn.x; magazalarBtn.y = mevduatBtn.y + mevduatBtn.height / 2 + 20 + 54 / 2; magazalarBtn.visible = false; // Ava: Hide Mağazalar panel button by default LK.gui.top.addChild(magazalarBtn); var magazalarBtnTxt = new Text2('Mağazalar', { size: 28, fill: '#fff' }); magazalarBtnTxt.anchor.set(0.5, 0.5); magazalarBtnTxt.x = magazalarBtn.x; magazalarBtnTxt.y = magazalarBtn.y; magazalarBtnTxt.visible = false; // Ava: Hide Mağazalar panel label by default LK.gui.top.addChild(magazalarBtnTxt); // --- 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: 64, 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: 40, fill: '#bff', lineHeight: 52 }); 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: 240, height: 120, x: magazalarPanel.x + magazalarPanelWidth - 120, y: magazalarPanel.y + 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); magazalarKapatBtn.visible = false; game.addChild(magazalarKapatBtn); var magazalarKapatBtnIcon = new Text2("\u2716", { size: 54, fill: '#ff2222' }); magazalarKapatBtnIcon.anchor.set(1, 0.5); magazalarKapatBtnIcon.x = magazalarKapatBtn.x - 40; magazalarKapatBtnIcon.y = magazalarKapatBtn.y; magazalarKapatBtnIcon.visible = false; game.addChild(magazalarKapatBtnIcon); var magazalarKapatBtnTxt = new Text2('Kapat', { size: 64, 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.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") { store2PurchaseBtn.visible = !store2Purchased; 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); } // Yükseltme butonu (her mağaza için) if (typeof storeBtnList[i] !== "undefined") { storeBtnList[i].x = cx; storeBtnList[i].y = cy + 160; // 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 = cy + 180; 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) -- SEVİYENİN ALTINA ALINDI if (i > 0 && typeof storePurchaseBtnList[i] !== "undefined" && typeof storePurchaseBtnTxtList[i] !== "undefined") { storePurchaseBtnList[i].x = cx; storePurchaseBtnList[i].y = cy + 220; storePurchaseBtnTxtList[i].x = cx; storePurchaseBtnTxtList[i].y = cy + 240; // 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 overlay and panel to front game.setChildIndex(fullscreenOverlay, game.children.length - 1); 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(fullscreenOverlay, game.children.length - 1); game.setChildIndex(magazalarPanel, game.children.length - 1); game.setChildIndex(magazalarPanelTitle, game.children.length - 1); game.setChildIndex(magazalarPanelText, game.children.length - 1); 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 magazalarBtn.down = function (x, y, obj) { showMagazalarPanel(); }; magazalarBtnTxt.down = function (x, y, obj) { showMagazalarPanel(); }; // Kapat butonu logic magazalarKapatBtn.down = function (x, y, obj) { fullscreenOverlay.visible = false; 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; if (typeof infoBtn !== "undefined") infoBtn.visible = true; if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true; if (typeof howToBtn !== "undefined") howToBtn.visible = true; if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true; 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. }; var mevduatPopupPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: panelWidth, height: panelHeight, x: panelX, y: panelY }); mevduatPopupPanel.visible = false; game.addChild(mevduatPopupPanel); var mevduatPopupTitle = new Text2('Mevduat', { size: 60, fill: '#fff' }); mevduatPopupTitle.anchor.set(0.5, 0); mevduatPopupTitle.x = mevduatPopupPanel.x; mevduatPopupTitle.y = mevduatPopupPanel.y - mevduatPopupPanel.height / 2 + 30; mevduatPopupTitle.visible = false; game.addChild(mevduatPopupTitle); var mevduatKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 240, height: 120, x: mevduatPopupPanel.x + mevduatPopupPanel.width / 2 - 120, y: mevduatPopupPanel.y - mevduatPopupPanel.height / 2 + 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); mevduatKapatBtn.visible = false; game.addChild(mevduatKapatBtn); var mevduatKapatBtnTxt = new Text2('Kapat', { size: 64, fill: '#ff2222' }); mevduatKapatBtnTxt.anchor.set(0.5, 0.5); mevduatKapatBtnTxt.x = mevduatKapatBtn.x; mevduatKapatBtnTxt.y = mevduatKapatBtn.y; mevduatKapatBtnTxt.visible = false; game.addChild(mevduatKapatBtnTxt); // --- Ava: Define mevduatPanel and related UI elements to fix 'mevduatPanel is not defined' bug --- // Mevduat panel ana paneli (popup panelin içine yerleştirilecek) var mevduatPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: Math.floor(panelWidth * 0.7), height: Math.floor(panelHeight * 0.45), x: mevduatPopupPanel.x, y: mevduatPopupPanel.y - 60, color: 0x181818 }); mevduatPanel.visible = false; game.addChild(mevduatPanel); // Mevduat başlığı var mevduatTitle = new Text2('Mevduat', { size: 90, fill: '#fff' }); mevduatTitle.anchor.set(0.5, 0); mevduatTitle.x = mevduatPanel.x; mevduatTitle.y = mevduatPanel.y + 10; mevduatTitle.visible = false; game.addChild(mevduatTitle); // Mevduat tutar yazısı var mevduatTutar = 0; var mevduatTutarTxt = new Text2('Mevduat: ₺0', { size: 72, fill: '#ffb' }); mevduatTutarTxt.anchor.set(0.5, 0); mevduatTutarTxt.x = mevduatPanel.x; mevduatTutarTxt.y = mevduatTitle.y + mevduatTitle.height + 8; mevduatTutarTxt.visible = false; game.addChild(mevduatTutarTxt); // Mevduat yatır butonu var mevduatYatirBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 220, height: 90, x: mevduatPanel.x - 100, y: mevduatPanel.y + mevduatPanel.height - 40 }); mevduatYatirBtn.visible = false; game.addChild(mevduatYatirBtn); var mevduatYatirBtnTxt = new Text2('Yatır', { size: 54, fill: '#fff' }); mevduatYatirBtnTxt.anchor.set(0.5, 0.5); mevduatYatirBtnTxt.x = mevduatYatirBtn.x; mevduatYatirBtnTxt.y = mevduatYatirBtn.y; mevduatYatirBtnTxt.visible = false; game.addChild(mevduatYatirBtnTxt); // Mevduat çek butonu var mevduatCekBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 220, height: 90, x: mevduatPanel.x + 100, y: mevduatPanel.y + mevduatPanel.height - 40 }); mevduatCekBtn.visible = false; game.addChild(mevduatCekBtn); var mevduatCekBtnTxt = new Text2('Çek', { size: 54, fill: '#fff' }); mevduatCekBtnTxt.anchor.set(0.5, 0.5); mevduatCekBtnTxt.x = mevduatCekBtn.x; mevduatCekBtnTxt.y = mevduatCekBtn.y; mevduatCekBtnTxt.visible = false; game.addChild(mevduatCekBtnTxt); // Mevduat panelindeki mevcut mevduatPanel ve elemanlarını popup panelin içine taşı mevduatPanel.x = mevduatPopupPanel.x; mevduatPanel.y = mevduatPopupPanel.y - 60; mevduatTitle.x = mevduatPanel.x; mevduatTitle.y = mevduatPanel.y + 10; mevduatTutarTxt.x = mevduatPanel.x; mevduatTutarTxt.y = mevduatTitle.y + mevduatTitle.height + 8; mevduatYatirBtn.x = mevduatPanel.x - 100; mevduatYatirBtn.y = mevduatPanel.y + mevduatPanel.height - 40; mevduatYatirBtnTxt.x = mevduatYatirBtn.x; mevduatYatirBtnTxt.y = mevduatYatirBtn.y; mevduatCekBtn.x = mevduatPanel.x + 100; mevduatCekBtn.y = mevduatPanel.y + mevduatPanel.height - 40; mevduatCekBtnTxt.x = mevduatCekBtn.x; mevduatCekBtnTxt.y = mevduatCekBtn.y; // Mevduat butonuna tıklanınca paneli aç mevduatBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) return; if (isSoundOn && LK.getSound) { var clickSound = LK.getSound('ClickSesi'); if (clickSound) clickSound.play(); } fullscreenOverlay.visible = true; mevduatPopupPanel.visible = true; mevduatPopupTitle.visible = true; mevduatKapatBtn.visible = true; mevduatKapatBtnTxt.visible = true; // Mevduat paneli ve elemanlarını göster mevduatPanel.visible = true; mevduatTitle.visible = true; mevduatTutarTxt.visible = true; mevduatYatirBtn.visible = true; mevduatYatirBtnTxt.visible = true; mevduatCekBtn.visible = true; mevduatCekBtnTxt.visible = true; // --- Ava: Mevduat info ve faiz tablosunu göster --- if (typeof mevduatInfoTxt !== "undefined") mevduatInfoTxt.visible = true; if (typeof mevduatTabloBaslik !== "undefined") mevduatTabloBaslik.visible = true; if (typeof mevduatTabloSatirlar !== "undefined") { for (var i = 0; i < mevduatTabloSatirlar.length; i++) { mevduatTabloSatirlar[i].visible = true; } } if (typeof updateMevduatTxt === "function") updateMevduatTxt(); // 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; } } // Hide Borç Öde and Mevduat buttons when Mevduat panel is open 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; // Panel ve içeriğini en öne getir if (game.setChildIndex) { game.setChildIndex(fullscreenOverlay, game.children.length - 1); game.setChildIndex(mevduatPopupPanel, game.children.length - 1); game.setChildIndex(mevduatPopupTitle, game.children.length - 1); game.setChildIndex(mevduatKapatBtn, game.children.length - 1); game.setChildIndex(mevduatKapatBtnTxt, game.children.length - 1); if (typeof mevduatKapatBtnIcon !== "undefined") game.setChildIndex(mevduatKapatBtnIcon, game.children.length - 1); game.setChildIndex(mevduatPanel, game.children.length - 1); game.setChildIndex(mevduatTitle, game.children.length - 1); game.setChildIndex(mevduatTutarTxt, game.children.length - 1); game.setChildIndex(mevduatYatirBtn, game.children.length - 1); game.setChildIndex(mevduatYatirBtnTxt, game.children.length - 1); game.setChildIndex(mevduatCekBtn, game.children.length - 1); game.setChildIndex(mevduatCekBtnTxt, game.children.length - 1); } }; // Paneli kapatmak için kapat butonu mevduatKapatBtn.down = function (x, y, obj) { fullscreenOverlay.visible = false; mevduatPopupPanel.visible = false; mevduatPopupTitle.visible = false; mevduatKapatBtn.visible = false; mevduatKapatBtnTxt.visible = false; // Mevduat paneli ve elemanlarını gizle mevduatPanel.visible = false; mevduatTitle.visible = false; mevduatTutarTxt.visible = false; mevduatYatirBtn.visible = false; mevduatYatirBtnTxt.visible = false; mevduatCekBtn.visible = false; mevduatCekBtnTxt.visible = false; // --- Ava: Mevduat info ve faiz tablosunu gizle --- if (typeof mevduatInfoTxt !== "undefined") mevduatInfoTxt.visible = false; if (typeof mevduatTabloBaslik !== "undefined") mevduatTabloBaslik.visible = false; if (typeof mevduatTabloSatirlar !== "undefined") { for (var i = 0; i < mevduatTabloSatirlar.length; i++) { mevduatTabloSatirlar[i].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 languagesBtn !== "undefined") languagesBtn.visible = true; if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true; if (typeof infoBtn !== "undefined") infoBtn.visible = true; if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true; if (typeof howToBtn !== "undefined") howToBtn.visible = true; if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true; // Show Borç Öde and Mevduat buttons again when Mevduat panel is closed 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; }; // --- New Page Button below Banka button --- var newPageBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); // Move Çalışanlar butonu 5 satır aşağı ve 2 satır sola // Each row: height + 20px gap, each column: -(width + 20px) left var calisanlarRowOffset = 5; var calisanlarColOffset = -2; var calisanlarRowGap = 20; var calisanlarColGap = 20; newPageBtn.x = bankBtn.x + calisanlarColOffset * (newPageBtn.width + calisanlarColGap); newPageBtn.y = bankBtn.y + calisanlarRowOffset * (bankBtn.height + calisanlarRowGap); LK.gui.top.addChild(newPageBtn); 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(newPageBtnTxt); // --- Add new image below the Çalışanlar button --- var calisanlarBtnImg = LK.getAsset('worker2', { anchorX: 0.5, anchorY: 0, width: 125, height: 125, x: newPageBtn.x, y: newPageBtn.y + newPageBtn.height / 2 + 10 // 10px gap below button }); LK.gui.top.addChild(calisanlarBtnImg); // Clicking the image opens the Çalışanlar panel (same as newPageBtn.down) calisanlarBtnImg.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) return; fullscreenOverlay.visible = true; newPageOverlay.visible = true; 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); 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 below Çalışanlar button --- var madenlerBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); // Move 0 rows down and 3 columns left relative to newPageBtn (3 rows up) // Each row: height + 20px gap, each column: -(width + 20px) left var rowOffset = 0; var colOffset = -3; var rowGap = 20; var colGap = 20; madenlerBtn.x = newPageBtn.x + colOffset * (madenlerBtn.width + colGap); madenlerBtn.y = newPageBtn.y + rowOffset * (newPageBtn.height + rowGap); 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, //{cx} // 100 * 1.25 = 125 height: 125, //{cy} // 100 * 1.25 = 125 x: madenlerBtn.x, y: madenlerBtn.y + madenlerBtn.height / 2 + 10 // 10px gap below button }); 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; fullscreenOverlay.visible = true; madenlerPanel.visible = true; madenlerPanelTitle.visible = true; madenlerPanelText.visible = true; madenlerKapatBtn.visible = true; madenlerKapatBtnIcon.visible = true; madenlerKapatBtnTxt.visible = true; // 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 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); 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); // Çalışanlar paneli açıldığında tüm butonları devre dışı bırakacak overlay (başta görünmez) var newPageOverlay = LK.getAsset('button', { anchorX: 0, anchorY: 0, width: 2048, height: 2732, x: 0, y: 0 }); newPageOverlay.visible = false; newPageOverlay.alpha = 0.65; // Yarı saydam game.addChild(newPageOverlay); 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: 64, 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: 40, fill: '#bff', lineHeight: 52 // madenlerPanelText ile aynı satır aralığı }); 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: 240, // %100 büyüklük (120*2) height: 120, // %100 büyüklük (60*2) x: newPagePanel.x + newPagePanelWidth - 120, y: newPagePanel.y + 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: 54, fill: '#ff2222' }); newPageKapatBtnIcon.anchor.set(1, 0.5); newPageKapatBtnIcon.x = newPageKapatBtn.x - 40; newPageKapatBtnIcon.y = newPageKapatBtn.y; newPageKapatBtnIcon.visible = false; game.addChild(newPageKapatBtnIcon); var newPageKapatBtnTxt = new Text2('Kapat', { size: 64, fill: '#ff2222' }); newPageKapatBtnTxt.anchor.set(0.5, 0.5); newPageKapatBtnTxt.x = newPageKapatBtn.x; newPageKapatBtnTxt.y = newPageKapatBtn.y; newPageKapatBtnTxt.visible = false; game.addChild(newPageKapatBtnTxt); // --- 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: 64, 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: 40, 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: 240, height: 120, x: madenlerPanel.x + madenlerPanel.width - 120, y: madenlerPanel.y + 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: 54, fill: '#ff2222' }); madenlerKapatBtnIcon.anchor.set(1, 0.5); madenlerKapatBtnIcon.x = madenlerKapatBtn.x - 40; madenlerKapatBtnIcon.y = madenlerKapatBtn.y; madenlerKapatBtnIcon.visible = false; game.addChild(madenlerKapatBtnIcon); var madenlerKapatBtnTxt = new Text2('Kapat', { size: 64, 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) { fullscreenOverlay.visible = true; newPageOverlay.visible = true; newPagePanel.visible = true; newPagePanelTitle.visible = true; newPagePanelText.visible = true; newPageKapatBtn.visible = true; newPageKapatBtnTxt.visible = true; // Panel arkasındaki overlay'i göstererek tüm ekranı devre dışı bırak fullscreenOverlay.visible = true; // Hide all homepage buttons/UI (same as Madenler panel logic) 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; } } // Paneli en öne getir, overlay'i panelden hemen arkaya al if (game.setChildIndex) { game.setChildIndex(fullscreenOverlay, game.children.length - 1); game.setChildIndex(newPageOverlay, game.children.length - 1); 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); if (typeof newPageKapatBtnIcon !== "undefined") game.setChildIndex(newPageKapatBtnIcon, game.children.length - 1); } // Hide all game children 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) { 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; fullscreenOverlay.visible = true; madenlerPanel.visible = true; madenlerPanelTitle.visible = true; madenlerPanelText.visible = true; madenlerKapatBtn.visible = true; madenlerKapatBtnIcon.visible = true; madenlerKapatBtnTxt.visible = true; // Panel arkasındaki overlay'i göstererek tüm ekranı devre dışı bırak fullscreenOverlay.visible = true; // 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) { fullscreenOverlay.visible = false; newPageOverlay.visible = false; newPagePanel.visible = false; newPagePanelTitle.visible = false; newPagePanelText.visible = false; newPageKapatBtn.visible = false; newPageKapatBtnTxt.visible = false; // Panel arkasındaki overlay'i gizle fullscreenOverlay.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; } } } }; // Madenler panelini kapatmak için kapat butonu madenlerKapatBtn.down = function (x, y, obj) { fullscreenOverlay.visible = false; madenlerPanel.visible = false; madenlerPanelTitle.visible = false; madenlerPanelText.visible = false; madenlerKapatBtn.visible = false; madenlerKapatBtnIcon.visible = false; madenlerKapatBtnTxt.visible = false; // Panel arkasındaki overlay'i gizle fullscreenOverlay.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 languagesBtn !== "undefined") languagesBtn.visible = true; if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true; if (typeof infoBtn !== "undefined") infoBtn.visible = true; if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true; if (typeof howToBtn !== "undefined") howToBtn.visible = true; if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true; 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; } }; // INFO butonunu Yatırım butonunun altına ekle var infoBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); infoBtn.x = yatirimBtn.x; infoBtn.y = yatirimBtn.y + 70; LK.gui.top.addChild(infoBtn); var infoBtnTxt = new Text2('INFO', { size: 28, fill: '#fff' }); infoBtnTxt.anchor.set(0.5, 0.5); infoBtnTxt.x = infoBtn.x; infoBtnTxt.y = infoBtn.y; LK.gui.top.addChild(infoBtnTxt); // "Nasıl Oynanır" butonunu INFO butonunun ALTINA ekle var howToBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 220, height: 54 }); howToBtn.x = infoBtn.x; howToBtn.y = infoBtn.y + infoBtn.height / 2 + howToBtn.height / 2 + 20; LK.gui.top.addChild(howToBtn); var howToBtnTxt = new Text2('Nasıl Oynanır', { size: 28, fill: '#fff' }); howToBtnTxt.anchor.set(0.5, 0.5); howToBtnTxt.x = howToBtn.x; howToBtnTxt.y = howToBtn.y; LK.gui.top.addChild(howToBtnTxt); // Languages butonunu "Nasıl Oynanır" butonunun altına ekle var languagesBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, height: 54 }); languagesBtn.x = howToBtn.x; languagesBtn.y = howToBtn.y + howToBtn.height / 2 + languagesBtn.height / 2 + 20; LK.gui.top.addChild(languagesBtn); var languagesBtnTxt = new Text2('Languages', { size: 28, fill: '#fff' }); languagesBtnTxt.anchor.set(0.5, 0.5); languagesBtnTxt.x = languagesBtn.x; languagesBtnTxt.y = languagesBtn.y; LK.gui.top.addChild(languagesBtnTxt); // --- 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 }); soundBtn.x = languagesBtn.x - languagesBtn.width / 2 - 70 / 2 - 20; soundBtn.y = languagesBtn.y; 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 }); } }); fullscreenOverlay.visible = true; infoPanel.visible = true; infoPanelTitle.visible = true; infoPanelText.visible = true; infoKapatBtn.visible = true; infoKapatBtnTxt.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 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; } } // Paneli en öne getir if (game.setChildIndex) { game.setChildIndex(fullscreenOverlay, game.children.length - 1); game.setChildIndex(infoPanel, game.children.length - 1); game.setChildIndex(infoPanelTitle, game.children.length - 1); game.setChildIndex(infoPanelText, game.children.length - 1); game.setChildIndex(infoKapatBtn, game.children.length - 1); game.setChildIndex(infoKapatBtnTxt, game.children.length - 1); if (typeof infoKapatBtnIcon !== "undefined") game.setChildIndex(infoKapatBtnIcon, game.children.length - 1); } }; // INFO panel (açılır pencere) ekle // Create the infoPanelText first to measure its width var infoPanelText = new Text2('Bu oyunda amacınız fabrikalar kurarak bilgisayar parçaları üretmek ve mağazada satarak para kazanmaktır.\n\n' + '- Madenlerden ham madde üretin.\n' + '- Fabrikalarda bilgisayar parçaları üretin.\n' + '- Mağazada ve internetten satış yapın.\n' + '- Yatırım ve banka özelliklerini kullanın.\n\n' + 'İyi oyunlar!', { size: 40, fill: '#fff' }); infoPanelText.anchor.set(0.5, 0.5); // Calculate width based on text width, add padding var infoPanelTextWidth = infoPanelText.width; var infoPanelTextHeight = infoPanelText.height; var infoPanelWidth = Math.max(700, infoPanelTextWidth + 120); // min 700, 60px padding each side var infoPanelHeight = Math.max(500, infoPanelTextHeight + 120); // min 500, 60px padding top/bottom // Sol üstteki ayar/menu butonunun altına hizala // Sol üstte platform menüsü 100x100 px alanı kaplar, bu alanın hemen altına hizala var infoPanelX = 60 + infoPanelWidth / 2; // 60px padding from left var infoPanelY = 100 + 40 + infoPanelHeight / 2; // 100px platform menu + 40px padding var infoPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: panelWidth, height: panelHeight, x: panelX, y: panelY }); infoPanel.visible = false; game.addChild(infoPanel); var infoPanelTitle = new Text2('INFO', { size: 40, fill: '#fff' }); infoPanelTitle.anchor.set(0.5, 0); // Panelin üst kenarına hizala infoPanelTitle.x = infoPanel.x; infoPanelTitle.y = infoPanel.y - infoPanel.height / 2 + 30; infoPanelTitle.visible = false; game.addChild(infoPanelTitle); // Reposition infoPanelText to center in the new panel infoPanelText.x = infoPanel.x; infoPanelText.y = infoPanel.y + 10; infoPanelText.visible = false; game.addChild(infoPanelText); // INFO panel kapat butonu // --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli --- var infoKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 240, // %100 büyüklük (120*2) height: 120, // %100 büyüklük (60*2) x: infoPanel.x + infoPanel.width / 2 - 120, y: infoPanel.y - infoPanel.height / 2 + 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); infoKapatBtn.visible = false; game.addChild(infoKapatBtn); // Kapat butonu için X simgesi var infoKapatBtnIcon = new Text2("\u2716", { size: 54, fill: '#ff2222' }); infoKapatBtnIcon.anchor.set(1, 0.5); infoKapatBtnIcon.x = infoKapatBtn.x - 40; infoKapatBtnIcon.y = infoKapatBtn.y; infoKapatBtnIcon.visible = false; game.addChild(infoKapatBtnIcon); var infoKapatBtnTxt = new Text2('Kapat', { size: 64, fill: '#ff2222' }); infoKapatBtnTxt.anchor.set(0.5, 0.5); infoKapatBtnTxt.x = infoKapatBtn.x; infoKapatBtnTxt.y = infoKapatBtn.y; infoKapatBtnTxt.visible = false; game.addChild(infoKapatBtnTxt); // INFO butonuna tıklanınca paneli aç infoBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) return; tween(infoBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(infoBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); infoPanel.visible = true; infoPanelTitle.visible = true; infoPanelText.visible = true; infoKapatBtn.visible = true; infoKapatBtnTxt.visible = true; // Paneli en öne getir if (game.setChildIndex) { game.setChildIndex(infoPanel, game.children.length - 1); game.setChildIndex(infoPanelTitle, game.children.length - 1); game.setChildIndex(infoPanelText, game.children.length - 1); game.setChildIndex(infoKapatBtn, game.children.length - 1); game.setChildIndex(infoKapatBtnTxt, game.children.length - 1); } }; // INFO panel kapat butonu infoKapatBtn.down = function (x, y, obj) { fullscreenOverlay.visible = false; infoPanel.visible = false; infoPanelTitle.visible = false; infoPanelText.visible = false; infoKapatBtn.visible = false; infoKapatBtnTxt.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 languagesBtn !== "undefined") languagesBtn.visible = true; if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true; if (typeof infoBtn !== "undefined") infoBtn.visible = true; if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true; if (typeof howToBtn !== "undefined") howToBtn.visible = true; if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true; }; // Languages panel (açılır pencere) ekle var languagesPanel = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: panelWidth, height: panelHeight, x: panelX, y: panelY }); languagesPanel.visible = false; game.addChild(languagesPanel); var languagesPanelTitle = new Text2('Languages', { size: 40, fill: '#fff' }); languagesPanelTitle.anchor.set(0.5, 0); languagesPanelTitle.x = languagesPanel.x; languagesPanelTitle.y = languagesPanel.y - languagesPanel.height / 2 + 30; languagesPanelTitle.visible = false; game.addChild(languagesPanelTitle); var languagesPanelText = new Text2('Select your language:', { size: 32, fill: '#fff' }); languagesPanelText.anchor.set(0.5, 0.5); languagesPanelText.x = languagesPanel.x; languagesPanelText.y = languagesPanel.y - 60; languagesPanelText.visible = false; game.addChild(languagesPanelText); // Language options var languageOptions = [{ code: "tr", label: "Türkçe" }, { code: "en", label: "English" }]; var languageBtns = []; var languageBtnTxts = []; var selectedLanguage = "tr"; // default for (var i = 0; i < languageOptions.length; i++) { var btn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 220, height: 60, x: languagesPanel.x, y: languagesPanel.y - 10 + i * 70 }); btn.visible = false; game.addChild(btn); languageBtns.push(btn); var btnTxt = new Text2(languageOptions[i].label, { size: 32, fill: '#fff' }); btnTxt.anchor.set(0.5, 0.5); btnTxt.x = btn.x; btnTxt.y = btn.y; btnTxt.visible = false; game.addChild(btnTxt); languageBtnTxts.push(btnTxt); // Closure for correct index (function (idx) { btn.down = function (x, y, obj) { var _tr, _en; // Animate button tween(btn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(btn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); // Set selected language selectedLanguage = languageOptions[idx].code; // Visual feedback: highlight selected for (var j = 0; j < languageBtns.length; j++) { if (j === idx) { languageBtns[j].tint = 0x83de44; // green highlight } else { languageBtns[j].tint = 0x222222; } } // Optionally, update UI text to reflect language (demo only) // You can add more logic here to actually change game language // --- TRANSLATION INFRASTRUCTURE --- // Ava: Add translation infrastructure and English translations for all game texts // 1. Translation dictionary var translations = { tr: (_tr = { "Mağaza": "Mağaza", "Burada mağaza ile ilgili içerik veya açıklama eklenebilir.": "Burada mağaza ile ilgili içerik veya açıklama eklenebilir.", "Muhasebe Bilgileri": "Muhasebe Bilgileri", "Mevcut Stok (adet):": "Mevcut Stok (adet):", "Kasadaki Para:": "Kasadaki Para:", "Borç:": "Borç:", "Kapat": "Kapat", "Yatırım": "Yatırım", "Yatırım - Popüler Coinler": "Yatırım - Popüler Coinler", "Adet:": "Adet:", "Maliyet:": "Maliyet:", "Al": "Al", "Sat": "Sat", "Banka": "Banka", "Borç Öde": "Borç Öde", "Languages": "Languages", "Select your language:": "Dilinizi seçin:", "Türkçe": "Türkçe", "English": "İngilizce", "Deutsch": "Almanca", "Français": "Fransızca", "Español": "İspanyolca", "Bakiye kullanım detayları yok": "Bakiye kullanım detayları yok", "Coin Alım: -₺": "Coin Alım: -₺", "Coin Satış: +₺": "Coin Satış: +₺", "Borç Ödeme: -₺": "Borç Ödeme: -₺", "Yatırım Harcama: -₺": "Yatırım Harcama: -₺", "Fabrika Yükseltme: -₺": "Fabrika Yükseltme: -₺", "Maden Yükseltme: -₺": "Maden Yükseltme: -₺", "Mağaza Yükseltme: -₺": "Mağaza Yükseltme: -₺", "İnternet Teklifi: -₺": "İnternet Teklifi: -₺", "Toplu Satış: +₺": "Toplu Satış: +₺", "Seviye:": "Seviye:", "Kazanç: ₺": "Kazanç: ₺", "Yükselt": "Yükselt", "Üretim Süresi: -%": "Üretim Süresi: -%", "Fabrika Yükseltme İndirimi: -%": "Fabrika Yükseltme İndirimi: -%", "Tıkla: ₺": "Tıkla: ₺", "Tüm Kazanç: +%": "Tüm Kazanç: +%", "Oto Üret: Kapalı": "Oto Üret: Kapalı", "Oto Üret: Açık": "Oto Üret: Açık", "Maden Yükselt": "Maden Yükselt", "ÜRET": "ÜRET", "Aç": "Aç", "Yükselt\n₺": "Yükselt\n₺", "Mağaza Yükselt": "Mağaza Yükselt", "Mağaza 2 Yükselt": "Mağaza 2 Yükselt", "İNTERNET TEKLİFİ": "İNTERNET TEKLİFİ", "Adet": "Adet", "Toplam: ₺": "Toplam: ₺", "Satın Al": "Satın Al", "Süre doldu!": "Süre doldu!", "Teklif tamamlandı!": "Teklif tamamlandı!", "Yeni teklif: ": "Yeni teklif: ", "dk": "dk", "sn": "sn", "TOPLU SATIŞ TEKLİFİ": "TOPLU SATIŞ TEKLİFİ", "Stokta ürün yok": "Stokta ürün yok", "Stok yetersiz": "Stok yetersiz" }, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_tr, "Sat", "Sat"), "Bakır: ", "Bakır: "), "Silikon: ", "Silikon: "), "Demir: ", "Demir: "), "Çalışan 1", "Çalışan 1"), "Çalışan 2", "Çalışan 2"), "Çalışan 3", "Çalışan 3"), "Çalışan 4", "Çalışan 4"), "Çalışan 5", "Çalışan 5"), "T\xFCm Kazan\xE7: +%", "Tüm Kazanç: +%"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_tr, "Geri ödeme: ", "Geri ödeme: "), "Borç: ₺", "Borç: ₺"), "MOUSE", "MOUSE"), "Aç\n₺", "Aç\n₺"), "Y\xFCkselt\n\u20BA", "Yükselt\n₺"), "Mağaza 2 Yükselt\n₺", "Mağaza 2 Yükselt\n₺"), "Mağaza Yükselt\n₺", "Mağaza Yükselt\n₺"), "Maden Yükselt\n₺", "Maden Yükselt\n₺"), "Oto Üret: Kapalı\n₺", "Oto Üret: Kapalı\n₺"), "Oto Üret: Açık\n₺", "Oto Üret: Açık\n₺"), _defineProperty(_defineProperty(_tr, "Üretim: ", "Üretim: "), " sn", " sn")), en: (_en = { "Mağaza": "Store", "Burada mağaza ile ilgili içerik veya açıklama eklenebilir.": "You can add store-related content or description here.", "Muhasebe Bilgileri": "Accounting Info", "Mevcut Stok (adet):": "Current Stock (qty):", "Kasadaki Para:": "Cash in Register:", "Borç:": "Debt:", "Kapat": "Close", "Yatırım": "Investment", "Yatırım - Popüler Coinler": "Investment - Popular Coins", "Adet:": "Qty:", "Maliyet:": "Cost:", "Al": "Buy", "Sat": "Sell", "Banka": "Bank", "Borç Öde": "Pay Debt", "Languages": "Languages", "Select your language:": "Select your language:", "Türkçe": "Turkish", "English": "English", "Deutsch": "German", "Français": "French", "Español": "Spanish", "Bakiye kullanım detayları yok": "No balance usage details", "Coin Alım: -₺": "Coin Purchase: -₺", "Coin Satış: +₺": "Coin Sale: +₺", "Borç Ödeme: -₺": "Debt Payment: -₺", "Yatırım Harcama: -₺": "Investment Expense: -₺", "Fabrika Yükseltme: -₺": "Factory Upgrade: -₺", "Maden Yükseltme: -₺": "Mine Upgrade: -₺", "Mağaza Yükseltme: -₺": "Store Upgrade: -₺", "İnternet Teklifi: -₺": "Internet Offer: -₺", "Toplu Satış: +₺": "Bulk Sale: +₺", "Seviye:": "Level:", "Kazanç: ₺": "Earning: ₺", "Yükselt": "Upgrade", "Üretim Süresi: -%": "Production Time: -%", "Fabrika Yükseltme İndirimi: -%": "Factory Upgrade Discount: -%", "Tıkla: ₺": "Click: ₺", "Tüm Kazanç: +%": "All Earnings: +%", "Oto Üret: Kapalı": "Auto Prod: Off", "Oto Üret: Açık": "Auto Prod: On", "Maden Yükselt": "Upgrade Mine", "ÜRET": "PRODUCE", "Aç": "Unlock", "Yükselt\n₺": "Upgrade\n₺", "Mağaza Yükselt": "Upgrade Store", "Mağaza 2 Yükselt": "Upgrade Store 2", "İNTERNET TEKLİFİ": "INTERNET OFFER", "Adet": "Qty", "Toplam: ₺": "Total: ₺", "Satın Al": "Buy", "Süre doldu!": "Time's up!", "Teklif tamamlandı!": "Offer completed!", "Yeni teklif: ": "New offer: ", "dk": "min", "sn": "sec", "TOPLU SATIŞ TEKLİFİ": "BULK SALE OFFER", "Stokta ürün yok": "No product in stock", "Stok yetersiz": "Insufficient stock" }, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, "Sat", "Sell"), "Bakır: ", "Copper: "), "Silikon: ", "Silicon: "), "Demir: ", "Iron: "), "Çalışan 1", "Worker 1"), "Çalışan 2", "Worker 2"), "Çalışan 3", "Worker 3"), "Çalışan 4", "Worker 4"), "Çalışan 5", "Worker 5"), "T\xFCm Kazan\xE7: +%", "All Earnings: +%"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, "Geri ödeme: ", "Repayment: "), "Borç: ₺", "Debt: ₺"), "MOUSE", "MOUSE"), "Aç\n₺", "Unlock\n₺"), "Y\xFCkselt\n\u20BA", "Upgrade\n₺"), "Mağaza 2 Yükselt\n₺", "Upgrade Store 2\n₺"), "Mağaza Yükselt\n₺", "Upgrade Store\n₺"), "Maden Yükselt\n₺", "Upgrade Mine\n₺"), "Oto Üret: Kapalı\n₺", "Auto Prod: Off\n₺"), "Oto Üret: Açık\n₺", "Auto Prod: On\n₺"), _defineProperty(_defineProperty(_en, "Üretim: ", "Production: "), " sn", " sec")) }; // 2. Translation function function t(key) { var lang = selectedLanguage || "tr"; if (translations[lang] && translations[lang][key] !== undefined) { return translations[lang][key]; } // fallback to Turkish if not found if (translations["tr"][key] !== undefined) return translations["tr"][key]; return key; } // 3. Patch all UI text updates to use t() // --- Patch static UI texts at creation time --- magazaBtnTxt.setText(t("Mağaza")); magazaPanelTitle.setText(t("Mağaza")); magazaPanelText.setText(t("Burada mağaza ile ilgili içerik veya açıklama eklenebilir.")); magazaMuhasebeTitle.setText(t("Muhasebe Bilgileri")); magazaKapatBtnTxt.setText(t("Kapat")); yatirimBtnTxt.setText(t("Yatırım")); yatirimTitle.setText(t("Yatırım - Popüler Coinler")); yatirimKapatBtnTxt.setText(t("Kapat")); bankBtnTxt.setText(t("Banka")); borcOdeBtnTxt.setText(t("Borç Öde")); languagesBtnTxt.setText(t("Languages")); languagesPanelTitle.setText(t("Languages")); languagesPanelText.setText(t("Select your language:")); languagesKapatBtnTxt.setText(t("Kapat")); offerTitle.setText(t("İNTERNET TEKLİFİ")); offerBtnTxt.setText(t("Satın Al")); sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ")); sellBtnTxt.setText(t("Sat")); // Patch language option button texts for (var i = 0; i < languageOptions.length; i++) { languageBtnTxts[i].setText(t(languageOptions[i].label)); } // --- Patch dynamic UI text updates to use t() --- // updateBakiyeDetayTxt fonksiyonu ve çeviri patch'i kaldırıldı. // Patch updateMagazaMuhasebeText var _old_updateMagazaMuhasebeText = updateMagazaMuhasebeText; updateMagazaMuhasebeText = function updateMagazaMuhasebeText() { var toplamSatis = 0; var toplamGelir = 0; for (var i = 0; i < partTypes.length; i++) { toplamSatis += parts[partTypes[i]]; } toplamGelir = money; magazaMuhasebeText.setText(t("Mevcut Stok (adet):") + " " + toplamSatis + "\n" + t("Kasadaki Para:") + " ₺" + toplamGelir + (typeof borc !== "undefined" && borc > 0 ? "\n" + t("Borç:") + " ₺" + borc : "")); }; // Patch updateBorcText var _old_updateBorcText = updateBorcText; updateBorcText = function updateBorcText() { if (borc > 0) { borcTxt.setText(t("Borç: ₺") + borc); if (borcOdemeKalan > 0) { var min = Math.floor(borcOdemeKalan / 60); var sec = borcOdemeKalan % 60; var timeStr = min > 0 ? min + " " + t("dk") + " " + (sec < 10 ? "0" : "") + sec + " " + t("sn") : sec + " " + t("sn"); borcTimeTxt.setText(t("Geri ödeme: ") + timeStr); } else { borcTimeTxt.setText(''); } } else { borcTxt.setText(''); borcTimeTxt.setText(''); } }; // Patch updateRawText var _old_updateRawText = updateRawText; updateRawText = function updateRawText() { if (typeof copperRawTxt !== "undefined" && copperRawTxt) copperRawTxt.setText(t("Bakır: ") + rawMaterials.copper); if (typeof siliconRawTxt !== "undefined" && siliconRawTxt) siliconRawTxt.setText(t("Silikon: ") + rawMaterials.silicon); if (typeof ironRawTxt !== "undefined" && ironRawTxt) ironRawTxt.setText(t("Demir: ") + rawMaterials.iron); }; // Patch updatePartsText var _old_updatePartsText = updatePartsText; updatePartsText = function updatePartsText() { var lines = ['', '', '', '', '']; for (var i = 0; i < partTypes.length; i++) { var label = (i === 0 ? t("MOUSE") : partTypes[i].toUpperCase()) + ':' + parts[partTypes[i]]; var row = i % 5; var col = Math.floor(i / 5); if (col === 0) { lines[row] = label; } else { var maxLabelLen = 13; var left = lines[row]; var right = label; var pad = " "; lines[row] = left + pad + right; } } partsTxt.setText(lines.join('\n')); if (magazaMuhasebeText && magazaMuhasebeText.visible) updateMagazaMuhasebeText(); }; // Patch offer/sell panel static texts offerTitle.setText(t("İNTERNET TEKLİFİ")); offerBtnTxt.setText(t("Satın Al")); sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ")); sellBtnTxt.setText(t("Sat")); // Patch worker label texts for (var i = 0; i < workerImages.length; i++) { if (workerImages[i].label) { workerImages[i].label.setText(t(workerNames[i])); workerImages[i].label.size = 40; workerImages[i].label.lineHeight = 52; } } // --- Language switching logic --- // When language is changed, update all UI texts function updateAllTextsForLanguage() { magazaBtnTxt.setText(t("Mağaza")); magazaPanelTitle.setText(t("Mağaza")); magazaPanelText.setText(t("Burada mağaza ile ilgili içerik veya açıklama eklenebilir.")); magazaMuhasebeTitle.setText(t("Muhasebe Bilgileri")); magazaKapatBtnTxt.setText(t("Kapat")); yatirimBtnTxt.setText(t("Yatırım")); yatirimTitle.setText(t("Yatırım - Popüler Coinler")); yatirimKapatBtnTxt.setText(t("Kapat")); bankBtnTxt.setText(t("Banka")); borcOdeBtnTxt.setText(t("Borç Öde")); languagesBtnTxt.setText(t("Languages")); languagesPanelTitle.setText(t("Languages")); languagesPanelText.setText(t("Select your language:")); languagesKapatBtnTxt.setText(t("Kapat")); offerTitle.setText(t("İNTERNET TEKLİFİ")); offerBtnTxt.setText(t("Satın Al")); sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ")); sellBtnTxt.setText(t("Sat")); // Language option button texts for (var i = 0; i < languageOptions.length; i++) { languageBtnTxts[i].setText(t(languageOptions[i].label)); } // Worker label texts for (var i = 0; i < workerImages.length; i++) { if (workerImages[i].label) { workerImages[i].label.setText(t(workerNames[i])); workerImages[i].label.size = 40; // font büyüklüğü workerImages[i].label.lineHeight = 52; // satır aralığı (madenler paneliyle aynı) } } // Update dynamic texts updateMagazaMuhasebeText(); updateBorcText(); updateRawText(); updatePartsText(); // --- Ava: Patch all static/dynamic UI texts for English --- // Patch all static/dynamic UI texts for English if (selectedLanguage === "en") { // Patch static UI texts for English magazaBtnTxt.setText(t("Mağaza")); magazaPanelTitle.setText(t("Mağaza")); magazaPanelText.setText(t("Burada mağaza ile ilgili içerik veya açıklama eklenebilir.")); magazaMuhasebeTitle.setText(t("Muhasebe Bilgileri")); magazaKapatBtnTxt.setText(t("Kapat")); yatirimBtnTxt.setText(t("Yatırım")); yatirimTitle.setText(t("Yatırım - Popüler Coinler")); yatirimKapatBtnTxt.setText(t("Kapat")); bankBtnTxt.setText(t("Banka")); borcOdeBtnTxt.setText(t("Borç Öde")); languagesBtnTxt.setText(t("Languages")); languagesPanelTitle.setText(t("Languages")); languagesPanelText.setText(t("Select your language:")); languagesKapatBtnTxt.setText(t("Kapat")); offerTitle.setText(t("İNTERNET TEKLİFİ")); offerBtnTxt.setText(t("Satın Al")); sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ")); sellBtnTxt.setText(t("Sat")); // Language option button texts for (var i = 0; i < languageOptions.length; i++) { languageBtnTxts[i].setText(t(languageOptions[i].label)); } // Worker label texts for (var i = 0; i < workerImages.length; i++) { if (workerImages[i].label) { workerImages[i].label.setText(t(workerNames[i])); workerImages[i].label.size = 40; workerImages[i].label.lineHeight = 52; } } // Update dynamic texts updateBakiyeDetayTxt(); updateMagazaMuhasebeText(); updateBorcText(); updateRawText(); updatePartsText(); } } // --- Patch language button logic to update UI on language change --- for (var i = 0; i < languageBtns.length; i++) { (function (idx) { var btn = languageBtns[idx]; btn.down = function (x, y, obj) { tween(btn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(btn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); // Set selected language selectedLanguage = languageOptions[idx].code; // Visual feedback: highlight selected for (var j = 0; j < languageBtns.length; j++) { if (j === idx) { languageBtns[j].tint = 0x83de44; // green highlight } else { languageBtns[j].tint = 0x222222; } } // Update all UI texts updateAllTextsForLanguage(); }; })(i); } }; })(i); } // Kapat butonu // --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli --- var languagesKapatBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 240, // %100 büyüklük (120*2) height: 120, // %100 büyüklük (60*2) x: languagesPanel.x + languagesPanel.width / 2 - 120, y: languagesPanel.y - languagesPanel.height / 2 + 60, color: 0xffffff, borderColor: 0xff2222, borderWidth: 8 }); languagesKapatBtn.visible = false; game.addChild(languagesKapatBtn); // Kapat butonu için X simgesi var languagesKapatBtnIcon = new Text2("\u2716", { size: 54, fill: '#ff2222' }); languagesKapatBtnIcon.anchor.set(1, 0.5); languagesKapatBtnIcon.x = languagesKapatBtn.x - 40; languagesKapatBtnIcon.y = languagesKapatBtn.y; languagesKapatBtnIcon.visible = false; game.addChild(languagesKapatBtnIcon); var languagesKapatBtnTxt = new Text2('Kapat', { size: 64, fill: '#ff2222' }); languagesKapatBtnTxt.anchor.set(0.5, 0.5); languagesKapatBtnTxt.x = languagesKapatBtn.x; languagesKapatBtnTxt.y = languagesKapatBtn.y; languagesKapatBtnTxt.visible = false; game.addChild(languagesKapatBtnTxt); // Languages butonuna tıklanınca paneli aç languagesBtn.down = function (x, y, obj) { if (newPagePanel && newPagePanel.visible) return; tween(languagesBtn, { scaleX: 1.12, scaleY: 1.12 }, { duration: 80, onFinish: function onFinish() { tween(languagesBtn, { scaleX: 1, scaleY: 1 }, { duration: 80 }); } }); // Paneli aç fullscreenOverlay.visible = true; languagesPanel.visible = true; languagesPanelTitle.visible = true; languagesPanelText.visible = true; languagesKapatBtn.visible = true; languagesKapatBtnTxt.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 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 language buttons for (var i = 0; i < languageBtns.length; i++) { languageBtns[i].visible = true; languageBtnTxts[i].visible = true; // Highlight selected if (languageOptions[i].code === selectedLanguage) { languageBtns[i].tint = 0x83de44; } else { languageBtns[i].tint = 0x222222; } } // Paneli en öne getir if (game.setChildIndex) { game.setChildIndex(languagesPanel, game.children.length - 1); game.setChildIndex(languagesPanelTitle, game.children.length - 1); game.setChildIndex(languagesPanelText, game.children.length - 1); game.setChildIndex(languagesKapatBtn, game.children.length - 1); game.setChildIndex(languagesKapatBtnTxt, game.children.length - 1); if (typeof languagesKapatBtnIcon !== "undefined") game.setChildIndex(languagesKapatBtnIcon, game.children.length - 1); // Bring language buttons to front for (var i = 0; i < languageBtns.length; i++) { game.setChildIndex(languageBtns[i], game.children.length - 1); game.setChildIndex(languageBtnTxts[i], game.children.length - 1); } // Ava: Move homepage buttons behind the panel, but only if their parent is game to avoid setChildIndex errors 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 languagesKapatBtn.down = function (x, y, obj) { fullscreenOverlay.visible = false; languagesPanel.visible = false; languagesPanelTitle.visible = false; languagesPanelText.visible = false; languagesKapatBtn.visible = false; languagesKapatBtnTxt.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 languagesBtn !== "undefined") languagesBtn.visible = true; if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true; if (typeof infoBtn !== "undefined") infoBtn.visible = true; if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true; if (typeof howToBtn !== "undefined") howToBtn.visible = true; if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true; // Hide language buttons for (var i = 0; i < languageBtns.length; i++) { languageBtns[i].visible = false; languageBtnTxts[i].visible = false; } }; 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; } borc = 1000; money += 1000; 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 && typeof madenDepoStockTxt.visible === "boolean" && madenDepoStockTxt.visible && typeof madenDepoStockTxt.x !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.x === "number" && typeof updateMadenDepoStockTxt === "function") { 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); 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: 26, fill: '#ffb' }); worker1LevelTxt.anchor.set(0.5, 0); worker1LevelTxt.x = workerImg.x; worker1LevelTxt.y = workerLabel.y + 24; worker1LevelTxt.visible = false; game.addChild(worker1LevelTxt); worker1EarningTxt = new Text2('Kazanç: ₺' + Math.round(worker1EarningBase * Math.pow(1.02, worker1Level - 1)), { size: 26, fill: '#bff' }); worker1EarningTxt.anchor.set(0.5, 0); worker1EarningTxt.x = workerImg.x; worker1EarningTxt.y = worker1LevelTxt.y + 22; worker1EarningTxt.visible = false; game.addChild(worker1EarningTxt); worker1UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, //{iV} // buton genişliği büyütüldü height: 64, //{iW} // buton yüksekliği büyütüldü x: workerImg.x, y: worker1EarningTxt.y + 54 // biraz daha aşağı }); worker1UpgradeBtn.visible = false; game.addChild(worker1UpgradeBtn); worker1UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker1UpgradeCost, { size: 28, //{iZ} // yazı boyutu büyütüldü 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: 26, fill: '#ffb' }); worker2LevelTxt.anchor.set(0.5, 0); worker2LevelTxt.x = workerImg.x; worker2LevelTxt.y = workerLabel.y + 24; worker2LevelTxt.visible = false; game.addChild(worker2LevelTxt); worker2SpeedTxt = new Text2('Üretim Süresi: -%0', { size: 26, fill: '#bff' }); worker2SpeedTxt.anchor.set(0.5, 0); worker2SpeedTxt.x = workerImg.x; worker2SpeedTxt.y = worker2LevelTxt.y + 22; worker2SpeedTxt.visible = false; game.addChild(worker2SpeedTxt); worker2UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, //{jI} // buton genişliği büyütüldü height: 64, //{jJ} // buton yüksekliği büyütüldü x: workerImg.x, y: worker2SpeedTxt.y + 54 }); worker2UpgradeBtn.visible = false; game.addChild(worker2UpgradeBtn); worker2UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker2UpgradeCost, { size: 28, //{jM} // yazı boyutu büyütüldü 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: 26, fill: '#ffb' }); worker3LevelTxt.anchor.set(0.5, 0); worker3LevelTxt.x = workerImg.x; worker3LevelTxt.y = workerLabel.y + 24; worker3LevelTxt.visible = false; game.addChild(worker3LevelTxt); worker3DiscountTxt = new Text2('Fabrika Yükseltme İndirimi: -%0', { size: 26, fill: '#bff' }); worker3DiscountTxt.anchor.set(0.5, 0); worker3DiscountTxt.x = workerImg.x; worker3DiscountTxt.y = worker3LevelTxt.y + 22; worker3DiscountTxt.visible = false; game.addChild(worker3DiscountTxt); worker3UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, //{kv} // buton genişliği büyütüldü height: 64, //{kw} // buton yüksekliği büyütüldü x: workerImg.x, y: worker3DiscountTxt.y + 54 }); worker3UpgradeBtn.visible = false; game.addChild(worker3UpgradeBtn); worker3UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker3UpgradeCost, { size: 28, //{kz} // yazı boyutu büyütüldü 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: 26, fill: '#ffb' }); worker4LevelTxt.anchor.set(0.5, 0); worker4LevelTxt.x = workerImg.x; worker4LevelTxt.y = workerLabel.y + 24; worker4LevelTxt.visible = false; game.addChild(worker4LevelTxt); var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1)); // Kazanç oranını da gösteren metin var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1)); worker4EarningTxt = new Text2('Resmime Tıkla\nTıkla: ₺' + earning, { size: 26, fill: '#bff' }); worker4EarningTxt.anchor.set(0.5, 0); worker4EarningTxt.x = workerImg.x; worker4EarningTxt.y = worker4LevelTxt.y + 22; worker4EarningTxt.visible = false; game.addChild(worker4EarningTxt); worker4UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, //{lj} // buton genişliği büyütüldü height: 64, //{lk} // buton yüksekliği büyütüldü x: workerImg.x, y: worker4EarningTxt.y + 54 }); worker4UpgradeBtn.visible = false; game.addChild(worker4UpgradeBtn); worker4UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker4UpgradeCost, { size: 28, //{ln} // yazı boyutu büyütüldü 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 }); } }); // Alt yazı her zaman 'Resmime Tıkla\nTıkla: ₺...' olarak kalsın, tıklama ile değişmesin. 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: 26, fill: '#ffb' }); worker5LevelTxt.anchor.set(0.5, 0); worker5LevelTxt.x = workerImg.x; worker5LevelTxt.y = workerLabel.y + 24; worker5LevelTxt.visible = false; game.addChild(worker5LevelTxt); var bonusPercent = Math.round(worker5BaseBonus * worker5Level * 100); worker5BonusTxt = new Text2('Tüm Kazanç: +%' + bonusPercent, { size: 26, fill: '#bff' }); worker5BonusTxt.anchor.set(0.5, 0); worker5BonusTxt.x = workerImg.x; worker5BonusTxt.y = worker5LevelTxt.y + 22; worker5BonusTxt.visible = false; game.addChild(worker5BonusTxt); worker5UpgradeBtn = LK.getAsset('button', { anchorX: 0.5, anchorY: 0.5, width: 140, //{mv} // buton genişliği büyütüldü height: 64, //{mw} // buton yüksekliği büyütüldü x: workerImg.x, y: worker5BonusTxt.y + 54 }); worker5UpgradeBtn.visible = false; game.addChild(worker5UpgradeBtn); worker5UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker5UpgradeCost, { size: 28, //{mz} // yazı boyutu büyütüldü 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 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 && typeof worker1EarningTxt.setText === "function" && typeof worker1EarningTxt.x !== "undefined" && typeof worker1EarningTxt.x === "number") { if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt && 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) { newPagePanel.visible = false; newPagePanelTitle.visible = false; newPagePanelText.visible = false; newPageKapatBtn.visible = false; newPageKapatBtnTxt.visible = false; // Çalışanları ve altındaki UI'ları gizle for (var i = 0; i < workerImages.length; i++) { workerImages[i].img.visible = false; workerImages[i].label.visible = false; } if (worker1LevelTxt) worker1LevelTxt.visible = false; if (worker1EarningTxt) worker1EarningTxt.visible = false; if (worker1UpgradeBtn) worker1UpgradeBtn.visible = false; if (worker1UpgradeBtnTxt) worker1UpgradeBtnTxt.visible = false; if (worker2LevelTxt) worker2LevelTxt.visible = false; if (worker2SpeedTxt) worker2SpeedTxt.visible = false; if (worker2UpgradeBtn) worker2UpgradeBtn.visible = false; if (worker2UpgradeBtnTxt) worker2UpgradeBtnTxt.visible = false; if (worker3LevelTxt) worker3LevelTxt.visible = false; if (worker3DiscountTxt) worker3DiscountTxt.visible = false; if (worker3UpgradeBtn) worker3UpgradeBtn.visible = false; if (worker3UpgradeBtnTxt) worker3UpgradeBtnTxt.visible = false; if (worker4LevelTxt) worker4LevelTxt.visible = false; if (worker4EarningTxt) worker4EarningTxt.visible = false; if (worker4UpgradeBtn) worker4UpgradeBtn.visible = false; if (worker4UpgradeBtnTxt) worker4UpgradeBtnTxt.visible = false; if (worker5LevelTxt) worker5LevelTxt.visible = false; if (worker5BonusTxt) worker5BonusTxt.visible = false; if (worker5UpgradeBtn) worker5UpgradeBtn.visible = false; if (worker5UpgradeBtnTxt) worker5UpgradeBtnTxt.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 under Mağaza button on homepage --- // Horizontal layout settings var storeHomeStartX = magazaBtn.x + magazaBtn.width / 2 + 60; // 60px right of Mağaza button var storeHomeY = magazaBtn.y + magazaBtn.height / 2 + 120; // 120px below Mağaza button var storeHomeGapX = 320; // horizontal gap between stores // Store 1 store.x = storeHomeStartX; store.y = storeHomeY; store.scaleX = 0.82; store.scaleY = 0.82; game.addChild(store); // Store 2 var store2Purchased = false; var store2PurchaseCost = 3000; var store2 = new Store(); store2.x = store.x + storeHomeGapX * 1; store2.y = storeHomeY; store2.scaleX = 0.82; store2.scaleY = 0.82; game.addChild(store2); store2.visible = true; // Store 3 var store3Purchased = false; var store3PurchaseCost = 4000; var store3 = new Store(); store3.x = store.x + storeHomeGapX * 2; store3.y = storeHomeY; store3.scaleX = 0.82; store3.scaleY = 0.82; game.addChild(store3); store3.visible = true; // Store 4 var store4Purchased = false; var store4PurchaseCost = 5000; var store4 = new Store(); store4.x = store.x + storeHomeGapX * 3; store4.y = storeHomeY; store4.scaleX = 0.82; store4.scaleY = 0.82; game.addChild(store4); store4.visible = true; // --- Ava: Move purchase buttons and icons under each store, horizontally aligned --- // Store 2 Purchase Button store2PurchaseBtn.x = store2.x; store2PurchaseBtn.y = store2.y + 160; store2PurchaseBtn.visible = !store2Purchased; store2PurchaseBtnTxt.x = store2PurchaseBtn.x; store2PurchaseBtnTxt.y = store2PurchaseBtn.y + 10; store2PurchaseBtnTxt.visible = !store2Purchased; // Store 3 Purchase Button store3PurchaseBtn.x = store3.x; store3PurchaseBtn.y = store3.y + 160; store3PurchaseBtn.visible = !store3Purchased; store3PurchaseBtnTxt.x = store3PurchaseBtn.x; store3PurchaseBtnTxt.y = store3PurchaseBtn.y + 10; store3PurchaseBtnTxt.visible = !store3Purchased; if (typeof store3PurchaseBtnIcon !== "undefined") { store3PurchaseBtnIcon.x = store3PurchaseBtn.x - 80; store3PurchaseBtnIcon.y = store3PurchaseBtn.y; store3PurchaseBtnIcon.visible = !store3Purchased; } // Store 4 Purchase Button store4PurchaseBtn.x = store4.x; store4PurchaseBtn.y = store4.y + 160; store4PurchaseBtn.visible = !store4Purchased; store4PurchaseBtnTxt.x = store4PurchaseBtn.x; store4PurchaseBtnTxt.y = store4PurchaseBtn.y + 10; store4PurchaseBtnTxt.visible = !store4Purchased; if (typeof store4PurchaseBtnIcon !== "undefined") { store4PurchaseBtnIcon.x = store4PurchaseBtn.x - 80; store4PurchaseBtnIcon.y = store4PurchaseBtn.y; store4PurchaseBtnIcon.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; store2PurchaseBtn.visible = !store2Purchased; store2PurchaseBtnTxt.visible = !store2Purchased; store3PurchaseBtn.visible = !store3Purchased; store3PurchaseBtnTxt.visible = !store3Purchased; if (typeof store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased; store4PurchaseBtn.visible = !store4Purchased; store4PurchaseBtnTxt.visible = !store4Purchased; if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased; // --- 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); // Add icon to Store3 purchase button var store3PurchaseBtnIcon = LK.getAsset('store', { anchorX: 1, anchorY: 0.5, width: 48, height: 48, x: store3PurchaseBtn.x - 80, y: store3PurchaseBtn.y }); store3PurchaseBtnIcon.visible = !store3Purchased; game.addChild(store3PurchaseBtnIcon); 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; 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); // Add icon to Store4 purchase button var store4PurchaseBtnIcon = LK.getAsset('store', { anchorX: 1, anchorY: 0.5, width: 48, height: 48, x: store4PurchaseBtn.x - 80, y: store4PurchaseBtn.y }); store4PurchaseBtnIcon.visible = !store4Purchased; game.addChild(store4PurchaseBtnIcon); 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; 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 }); storeBtn.x = magazalarPanel.x + magazalarPanel.width / 3; storeBtn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120; storeBtn.visible = false; 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 = false; 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 }); store2Btn.x = magazalarPanel.x + magazalarPanel.width * 2 / 3; store2Btn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120; 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 = store2Btn.x; store2BtnTxt.y = store2Btn.y + 20; 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 }); store3Btn.x = magazalarPanel.x + magazalarPanel.width * 3 / 4; store3Btn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120; 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 = store3Btn.x; store3BtnTxt.y = store3Btn.y + 20; 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 }); store4Btn.x = magazalarPanel.x + magazalarPanel.width * 7 / 8; store4Btn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120; 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 = store4Btn.x; store4BtnTxt.y = store4Btn.y + 20; 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 magazalarBtn.down = function (x, y, obj) { showMagazalarPanel(); }; magazalarBtnTxt.down = function (x, y, obj) { showMagazalarPanel(); }; // 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; 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 infoBtn !== "undefined") infoBtn.visible = true; if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true; if (typeof howToBtn !== "undefined") howToBtn.visible = true; if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true; 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("Yeni teklif: " + 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("Yeni teklif: " + 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
@@ -4715,9 +4715,11 @@
}
}
updateMoneyText && updateMoneyText();
if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt && typeof worker1EarningTxt.setText === "function" && typeof worker1EarningTxt.x !== "undefined" && typeof worker1EarningTxt.x === "number") {
- worker1EarningTxt.setText('Kazanç: ₺' + earning);
+ if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt && 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) {
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