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