User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtnTxt.visible = !store2Purchased;' Line Number: 6292
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtnTxt.visible = !store2Purchased;' Line Number: 6292
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtn.visible = !store2Purchased;' Line Number: 6286
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible === true && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtn.visible = !store2Purchased;' Line Number: 6283
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'visible')' in or related to this line: 'store2PurchaseBtn.visible = !store2Purchased;' Line Number: 6281
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'store4PurchaseBtn.x = store4.x;' Line Number: 6261
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'store3PurchaseBtn.x = store3.x;' Line Number: 6245
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible === true && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5750
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof store2PurchaseBtn !== "undefined" && store2PurchaseBtn && typeof store2 !== "undefined" && store2) {' Line Number: 6236
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'store2PurchaseBtn.x = store2.x;' Line Number: 6236
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && madenDepoStockTxt.visible && typeof madenDepoStockTxt.x !== "undefined" && madenDepoStockTxt !== null && typeof madenDepoStockTxt.x === "number" && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt && typeof worker1EarningTxt.setText === "function") {' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible && typeof updateMadenDepoStockTxt === "function") {' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5749
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5750
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x === "number" &&' Line Number: 5030
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
User prompt
Please fix the bug: 'Cannot set properties of undefined (setting 'x')' in or related to this line: 'worker1EarningTxt.setText('Kazanç: ₺' + earning);' Line Number: 5751
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Factory class: base for all part factories
var BaseFactory = Container.expand(function () {
var self = Container.call(this);
self.level = 1;
self.production = 1; // per click
self.upgradeCost = 100;
self.partType = null;
// Production time in frames (default 30, halves every 5 levels, min 5)
self.getProductionTime = function () {
// Each 5 levels halves the time, min 5 frames
var base = 30;
var speedup = Math.floor((self.level - 1) / 5);
var prodTime = Math.floor(base / Math.pow(2, speedup));
if (prodTime < 5) {
prodTime = 5;
}
return prodTime;
};
// Use unique factory image for each partType if available
var factoryImageId = 'factory';
if (self.partType) {
if (LK.hasAsset && LK.hasAsset('factory_' + self.partType)) {
factoryImageId = 'factory_' + self.partType;
} else if (LK.getAsset && LK.getAsset('factory_' + self.partType, {
anchorX: 0.5,
anchorY: 0.5
})) {
factoryImageId = 'factory_' + self.partType;
}
}
self.attachAsset(factoryImageId, {
anchorX: 0.5,
anchorY: 0.5
});
// Part icon
var partIcon = null;
if (self.partType) {
partIcon = self.attachAsset('part_' + self.partType, {
anchorX: 0.5,
anchorY: 0.5,
y: -60,
scaleX: 0.7,
scaleY: 0.7
});
}
// Level text
var levelTxt = new Text2('Lv.' + self.level, {
size: 40,
fill: '#fff'
});
levelTxt.anchor.set(0.5, 0);
levelTxt.y = 90;
self.addChild(levelTxt);
self.upgrade = function () {
if (money >= self.upgradeCost) {
money -= self.upgradeCost;
self.level += 1;
self.production += 1;
self.upgradeCost = Math.floor(self.upgradeCost * 3.5);
levelTxt.setText('Lv.' + self.level);
updateMoneyText();
// Reset autoTick so production interval is not skipped after upgrade
self.autoTick = 0;
// --- Reduce production time by 10% after each upgrade, if customProductionTime is present ---
if (typeof self.customProductionTime === "number") {
self.customProductionTime = Math.max(Math.floor(self.customProductionTime * 0.9), 60); // min 1s (60 frames)
}
// Update production time text if present
if (self._prodTimeTxt) {
var prodTime = self.getProductionTime ? self.getProductionTime() : 30;
var prodTimeSec = (prodTime / 60).toFixed(2);
self._prodTimeTxt.setText("Üretim: " + prodTimeSec + " sn");
}
}
};
self.setPartType = function (type) {
self.partType = type;
if (partIcon) {
partIcon.destroy();
}
partIcon = self.attachAsset('part_' + type, {
anchorX: 0.5,
anchorY: 0.5,
y: -60,
scaleX: 0.7,
scaleY: 0.7
});
};
return self;
});
// Create a factory class for each part type
// Mine class: produces raw materials over time
var Mine = Container.expand(function () {
var self = Container.call(this);
self.level = 1;
self.type = 'copper'; // 'copper', 'silicon', 'iron'
self.production = 1; // per tick
self.timer = 0;
self.upgradeCost = 50;
self.attachAsset('mine', {
anchorX: 0.5,
anchorY: 0.5
});
// Ore icon
var oreIcon = self.attachAsset('ore_' + self.type, {
anchorX: 0.5,
anchorY: 0.5,
y: 60,
scaleX: 0.7,
scaleY: 0.7
});
// Level text
var levelTxt = new Text2('Lv.' + self.level, {
size: 40,
fill: '#fff'
});
levelTxt.anchor.set(0.5, 0);
levelTxt.y = 90;
self.addChild(levelTxt);
self.setType = function (type) {
self.type = type;
oreIcon.destroy();
var newOre = self.attachAsset('ore_' + type, {
anchorX: 0.5,
anchorY: 0.5,
y: 60,
scaleX: 0.7,
scaleY: 0.7
});
};
self.upgrade = function () {
if (money >= self.upgradeCost) {
money -= self.upgradeCost;
self.level += 1;
self.production += 1;
self.upgradeCost = Math.floor(self.upgradeCost * 2.975);
levelTxt.setText('Lv.' + self.level);
updateMoneyText();
}
};
self.update = function () {
self.timer++;
// No automatic production
};
return self;
});
// Store class: sells computer parts to customers
var Store = Container.expand(function () {
var self = Container.call(this);
self.level = 1;
self.sellSpeed = 1; // customers per 2s
self.upgradeCost = 120;
self.attachAsset('store', {
anchorX: 0.5,
anchorY: 0.5
});
// Level text
var levelTxt = new Text2('Lv.' + self.level, {
size: 48,
//{1Y} // 40'tan 48'e büyütüldü
fill: '#fff'
});
levelTxt.anchor.set(0.5, 0);
levelTxt.y = 90;
self.addChild(levelTxt);
self.upgrade = function () {
if (money >= self.upgradeCost) {
money -= self.upgradeCost;
self.level += 1;
self.sellSpeed += 1;
self.upgradeCost = Math.floor(self.upgradeCost * 3.85);
levelTxt.setText('Lv.' + self.level);
updateMoneyText();
}
};
// Add auto-sell tick for automatic sales
self.autoSellTick = 0;
self.autoSellInterval = function () {
// Satış aralığı: 120 frame / sellSpeed (daha yüksek seviye daha hızlı)
return Math.max(30, Math.floor(120 / self.sellSpeed));
};
self.tryAutoSell = function () {
self.autoSellTick++;
if (self.autoSellTick >= self.autoSellInterval()) {
// Satılacak ürün bul (stokta olanlardan rastgele seç)
var availableParts = [];
for (var i = 0; i < partTypes.length; i++) {
if (parts[partTypes[i]] > 0) {
availableParts.push(i);
}
}
if (availableParts.length > 0) {
var randIdx = availableParts[Math.floor(Math.random() * availableParts.length)];
var salePrice = 30 + Math.floor(Math.random() * 20);
parts[partTypes[randIdx]] -= 1;
money += salePrice;
if (typeof updateMoneyText === "function") updateMoneyText();
if (typeof updatePartsText === "function") updatePartsText();
// Satış animasyonu (mağaza hafif büyüsün)
tween(self, {
scaleX: 1.08,
scaleY: 1.08
}, {
duration: 80,
onFinish: function onFinish() {
tween(self, {
scaleX: 0.82,
scaleY: 0.82
}, {
duration: 80
});
}
});
// --- Ava: Show sold product image above store for 5 seconds ---
if (typeof self.soldImage !== "undefined" && self.soldImage) {
self.soldImage.destroy();
self.soldImage = undefined;
}
var soldImgId = 'part_' + partTypes[randIdx];
var soldImg = LK.getAsset(soldImgId, {
anchorX: 0.5,
anchorY: 1,
x: self.x,
y: self.y - 120,
scaleX: 1.2,
scaleY: 1.2
});
soldImg.visible = true;
if (typeof game !== "undefined" && game.addChild) game.addChild(soldImg);
self.soldImage = soldImg;
if (typeof game !== "undefined" && game.setChildIndex) game.setChildIndex(soldImg, game.children.length - 1);
LK.setTimeout(function () {
if (soldImg && soldImg.destroy) soldImg.destroy();
if (self) self.soldImage = undefined;
}, 300); // 5 seconds = 300 frames at 60fps
}
self.autoSellTick = 0;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181818
});
/****
* Game Code
****/
// Example: Use COOLER part image as factory image
// Example: Use HDD part image as factory image
// Example: Use FAN part image as factory image
// Example: Use CASE part image as factory image
// Example: Use MB part image as factory image
// Example: Use PSU part image as factory image
// Example: Use SSD part image as factory image
// Example: Use RAM part image as factory image
// Example: Use GPU part image as factory image
// Example: Use existing factory image for mouse
// Unique mine images for each ore type
// Computer parts (10 types)
// Raw materials (3 types)
// Factory, Store, Mine icons
// Customer
// Button
// Create a factory class for each part type
// Her çalışana farklı renkli box tanımla
// kırmızımsı
// mavi
// yeşil
// turuncu
// mor
// Image file for Monitor product (part_monitor) is now registered with id '6842c1a1c660c325a06c2abd'
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function _defineProperty(e, r, t) {
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
function _toPropertyKey(t) {
var i = _toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
function _toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
var partTypes = ['mouse', 'klavye', 'ram', 'ssd', 'psu', 'mb', 'cpu', 'gpu', 'monitor', 'case'];
var oreTypes = ['copper', 'silicon', 'iron', 'silver', 'nikel', 'gold'];
var FactoryClasses = {};
var partProductionTimes = [];
for (var i = 0; i < partTypes.length; i++) {
partProductionTimes[i] = (i + 1) * 2 * 60; // 2,4,6,...,20 saniye (frame cinsinden)
}
for (var i = 0; i < partTypes.length; i++) {
(function (type, idx) {
FactoryClasses[type] = Container.expand(function () {
var self = BaseFactory.call(this);
self.setPartType(type);
self.customProductionTime = partProductionTimes[idx];
self.getProductionTime = function () {
// Use the customProductionTime, which is reduced by 10% on each upgrade
var prodTime = self.customProductionTime;
// Each 5 levels halves the time, min 1s (60 frames)
var speedup = Math.floor((self.level - 1) / 5);
prodTime = Math.floor(prodTime / Math.pow(2, speedup));
if (prodTime < 60) {
prodTime = 60;
}
return prodTime;
};
return self;
});
})(partTypes[i], i);
}
// Inventory
var rawMaterials = {
copper: 10,
silicon: 10,
iron: 10,
silver: 10,
nikel: 10,
gold: 10
};
var parts = {};
for (var i = 0; i < partTypes.length; i++) {
parts[partTypes[i]] = 0;
}
// Money
var money = 5000;
// UI Texts
var moneyTxt = new Text2('₺' + money, {
size: 50,
fill: '#fff'
});
moneyTxt.anchor.set(0.5, 0);
moneyTxt.y = 10;
LK.gui.top.addChild(moneyTxt);
// Bakiye kullanım detayını gösteren text ve ilgili fonksiyonlar kaldırıldı.
// --- Ava: Fullscreen overlay for all popups/panels ---
// Make overlay black and fully opaque, always covers the entire screen
var fullscreenOverlay = LK.getAsset('button', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732,
x: 0,
y: 0,
color: 0x000000 // black overlay
});
fullscreenOverlay.visible = false;
fullscreenOverlay.alpha = 0.65; // Yarı saydam, panel arkasını karartır
fullscreenOverlay.zIndex = 9999;
// Overlay swallows all input
fullscreenOverlay.down = function (x, y, obj) {
return true;
};
fullscreenOverlay.move = function (x, y, obj) {
return true;
};
fullscreenOverlay.up = function (x, y, obj) {
return true;
};
game.addChild(fullscreenOverlay);
// --- Ava: Helper to hide all homepage/anasayfa UI and disable all their input when any panel is open ---
function setHomepageUIEnabled(enabled) {
// List all homepage/anasayfa UI elements (buttons, texts, images)
var homepageUI = [magazaBtn, magazaBtnTxt, yatirimBtn, yatirimBtnTxt, bankBtn, bankBtnTxt, soundBtn, soundBtnTxt, newPageBtn, newPageBtnTxt, madenlerBtn, madenlerBtnTxt, madenlerBtnMineImg, calisanlarBtnImg, infoBtn, infoBtnTxt, howToBtn, howToBtnTxt, languagesBtn, languagesBtnTxt, borcOdeBtn, borcOdeBtnTxt, mevduatBtn, mevduatBtnTxt, magazalarBtn, magazalarBtnTxt];
for (var i = 0; i < homepageUI.length; i++) {
if (typeof homepageUI[i] !== "undefined" && homepageUI[i] && typeof homepageUI[i].visible === "boolean") {
homepageUI[i].visible = !!enabled;
}
// Defensive: also disable input by removing .down/.move/.up handlers if disabled
if (typeof homepageUI[i] !== "undefined" && homepageUI[i]) {
if (!enabled) {
if (homepageUI[i]._origDown === undefined && homepageUI[i].down) homepageUI[i]._origDown = homepageUI[i].down;
if (homepageUI[i]._origMove === undefined && homepageUI[i].move) homepageUI[i]._origMove = homepageUI[i].move;
if (homepageUI[i]._origUp === undefined && homepageUI[i].up) homepageUI[i]._origUp = homepageUI[i].up;
homepageUI[i].down = function () {
return true;
};
homepageUI[i].move = function () {
return true;
};
homepageUI[i].up = function () {
return true;
};
} else {
if (homepageUI[i]._origDown) homepageUI[i].down = homepageUI[i]._origDown;
if (homepageUI[i]._origMove) homepageUI[i].move = homepageUI[i]._origMove;
if (homepageUI[i]._origUp) homepageUI[i].up = homepageUI[i]._origUp;
}
}
}
}
// --- Mağaza Button ---
var magazaBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 180,
height: 70
});
magazaBtn.x = moneyTxt.x - 220;
magazaBtn.y = 40;
LK.gui.top.addChild(magazaBtn);
var magazaBtnTxt = new Text2('Mağaza', {
size: 36,
fill: '#fff'
});
magazaBtnTxt.anchor.set(0.5, 0.5);
magazaBtnTxt.x = magazaBtn.x;
magazaBtnTxt.y = magazaBtn.y;
LK.gui.top.addChild(magazaBtnTxt);
// Mağaza butonuna tıklanınca açılır pencereyi göster
// --- Ava: Resize and center all popup/panel windows to 90% of screen and center them ---
var panelWidth = Math.floor(2048 * 0.9);
var panelHeight = Math.floor(2732 * 0.9);
var panelX = Math.floor(2048 / 2);
var panelY = Math.floor(2732 / 2);
var magazaPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: panelWidth,
height: panelHeight,
x: panelX,
y: panelY
});
magazaPanel.visible = false;
game.addChild(magazaPanel);
var magazaPanelTitle = new Text2('Mağaza', {
size: 40,
//{3f} // Çalışan isimleriyle aynı font büyüklüğü
fill: '#fff'
});
magazaPanelTitle.anchor.set(0.5, 0);
magazaPanelTitle.x = magazaPanel.x;
magazaPanelTitle.y = magazaPanel.y - magazaPanel.height / 2 + 30;
magazaPanelTitle.visible = false;
game.addChild(magazaPanelTitle);
var magazaPanelText = new Text2('Burada mağaza ile ilgili içerik veya açıklama eklenebilir.', {
size: 40,
//{3j} // Çalışan isimleriyle aynı font büyüklüğü
fill: '#fff'
});
magazaPanelText.anchor.set(0.5, 0.5);
magazaPanelText.x = magazaPanel.x;
magazaPanelText.y = magazaPanel.y - 120;
magazaPanelText.visible = false;
game.addChild(magazaPanelText);
// Muhasebe bilgileri başlığı
var magazaMuhasebeTitle = new Text2('Muhasebe Bilgileri', {
size: 40,
//{3n} // Çalışan isimleriyle aynı font büyüklüğü
fill: '#ffb'
});
magazaMuhasebeTitle.anchor.set(0.5, 0);
magazaMuhasebeTitle.x = magazaPanel.x;
magazaMuhasebeTitle.y = magazaPanel.y - 30;
magazaMuhasebeTitle.visible = false;
game.addChild(magazaMuhasebeTitle);
// Muhasebe detayları
var magazaMuhasebeText = new Text2('', {
size: 40,
//{3r} // Çalışan isimleriyle aynı font büyüklüğü
fill: '#fff'
});
magazaMuhasebeText.anchor.set(0.5, 0);
magazaMuhasebeText.x = magazaPanel.x;
magazaMuhasebeText.y = magazaPanel.y + 20;
magazaMuhasebeText.visible = false;
game.addChild(magazaMuhasebeText);
// Muhasebe bilgilerini güncelleyen fonksiyon
function updateMagazaMuhasebeText() {
// Toplam satış adedi ve toplam gelir hesapla
var toplamSatis = 0;
var toplamGelir = 0;
for (var i = 0; i < partTypes.length; i++) {
// Her part için satılan miktarı ve gelirini hesapla
// Satışlar, parts dizisinden değil, toplam üretilen - elde kalan ile bulunabilir
// Basit bir örnek: toplam üretilen ve satılanı takip etmiyorsak, sadece mevcut stoğu göster
// Gelişmiş: Satışları takip etmek için global değişkenler eklenebilir
// Burada örnek olarak sadece mevcut stok ve para gösterelim
// Gelişmiş takip için satılan miktarları ayrıca bir dizi ile tutmak gerekir
// Şimdilik sadece mevcut stok ve para gösterelim
toplamSatis += parts[partTypes[i]];
}
// Toplam gelir olarak mevcut parayı gösterelim (örnek)
toplamGelir = money;
magazaMuhasebeText.setText("Mevcut Stok (adet): " + toplamSatis + "\nKasadaki Para: ₺" + toplamGelir + (typeof borc !== "undefined" && borc > 0 ? "\nBorç: ₺" + borc : ""));
}
// Paneli aç/kapat fonksiyonları
magazaBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
fullscreenOverlay.visible = true;
magazaPanel.visible = true;
magazaPanelTitle.visible = true;
magazaPanelText.visible = true;
magazaKapatBtn.visible = true;
magazaKapatBtnTxt.visible = true;
magazaMuhasebeTitle.visible = true;
magazaMuhasebeText.visible = true;
updateMagazaMuhasebeText();
// Paneli ve tüm içeriğini en öne getir (butonlar dahil)
if (game.setChildIndex) {
game.setChildIndex(fullscreenOverlay, game.children.length - 1);
game.setChildIndex(magazaPanel, game.children.length - 1);
game.setChildIndex(magazaPanelTitle, game.children.length - 1);
game.setChildIndex(magazaPanelText, game.children.length - 1);
game.setChildIndex(magazaKapatBtn, game.children.length - 1);
game.setChildIndex(magazaKapatBtnTxt, game.children.length - 1);
game.setChildIndex(magazaMuhasebeTitle, game.children.length - 1);
game.setChildIndex(magazaMuhasebeText, game.children.length - 1);
// Kapat butonu X simgesini de en öne getir
if (typeof magazaKapatBtnIcon !== "undefined") game.setChildIndex(magazaKapatBtnIcon, game.children.length - 1);
}
// Hide all game children except overlay and panel content
for (var i = 0; i < game.children.length; i++) {
var child = game.children[i];
if (child !== fullscreenOverlay && child !== magazaPanel && child !== magazaPanelTitle && child !== magazaPanelText && child !== magazaKapatBtn && child !== magazaKapatBtnTxt && child !== magazaMuhasebeTitle && child !== magazaMuhasebeText) {
child._oldVisible = child.visible;
child.visible = false;
}
}
};
// Paneli kapatmak için bir kapat butonu ekle
// --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli ---
// Panelin sağ üst köşesine hizala, %100 büyüklükte (240x120)
var magazaKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
// %100 büyüklük (120*2)
height: 120,
// %100 büyüklük (60*2)
x: magazaPanel.x + magazaPanel.width / 2 - 120,
// sağ kenardan 120px içeride
y: magazaPanel.y - magazaPanel.height / 2 + 60,
// üstten 60px aşağıda
color: 0xffffff,
// beyaz zemin
borderColor: 0xff2222,
// kırmızı çerçeve
borderWidth: 8
});
magazaKapatBtn.visible = false;
game.addChild(magazaKapatBtn);
// Kapat butonu için X simgesi (Unicode heavy multiplication X)
var magazaKapatBtnIcon = new Text2("\u2716", {
size: 54,
fill: '#ff2222'
});
magazaKapatBtnIcon.anchor.set(1, 0.5);
magazaKapatBtnIcon.x = magazaKapatBtn.x - 40;
magazaKapatBtnIcon.y = magazaKapatBtn.y;
magazaKapatBtnIcon.visible = false;
game.addChild(magazaKapatBtnIcon);
var magazaKapatBtnTxt = new Text2('Kapat', {
size: 64,
// %100 büyüklük (32*2)
fill: '#ff2222'
});
magazaKapatBtnTxt.anchor.set(0.5, 0.5);
magazaKapatBtnTxt.x = magazaKapatBtn.x;
magazaKapatBtnTxt.y = magazaKapatBtn.y;
magazaKapatBtnTxt.visible = false;
game.addChild(magazaKapatBtnTxt);
magazaKapatBtn.down = function (x, y, obj) {
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
fullscreenOverlay.visible = false;
magazaPanel.visible = false;
magazaPanelTitle.visible = false;
magazaPanelText.visible = false;
magazaKapatBtn.visible = false;
magazaKapatBtnTxt.visible = false;
magazaMuhasebeTitle.visible = false;
magazaMuhasebeText.visible = false;
// Restore all game children visibility except overlay and panel content
for (var i = 0; i < game.children.length; i++) {
var child = game.children[i];
if (child !== fullscreenOverlay && child !== magazaPanel && child !== magazaPanelTitle && child !== magazaPanelText && child !== magazaKapatBtn && child !== magazaKapatBtnTxt && child !== magazaMuhasebeTitle && child !== magazaMuhasebeText) {
if (typeof child._oldVisible !== "undefined") {
child.visible = child._oldVisible;
delete child._oldVisible;
} else {
child.visible = true;
}
}
}
};
// --- Yatırım Button ve Açılır Pencere ---
// Yatırım butonunu mağaza butonunun soluna ekle
var yatirimBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 180,
height: 70
});
yatirimBtn.x = magazaBtn.x - 220;
yatirimBtn.y = magazaBtn.y;
LK.gui.top.addChild(yatirimBtn);
var yatirimBtnTxt = new Text2('Yatırım', {
size: 36,
fill: '#fff'
});
yatirimBtnTxt.anchor.set(0.5, 0.5);
yatirimBtnTxt.x = yatirimBtn.x;
yatirimBtnTxt.y = yatirimBtn.y;
LK.gui.top.addChild(yatirimBtnTxt);
// Açılır pencereyi oluştur (başta görünmez) - EKRANIN EN ÜSTÜNDE
var yatirimPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: panelWidth,
height: panelHeight,
x: panelX,
y: panelY
});
yatirimPanel.visible = false;
// Yatırım panelini ve başlığını en önde göstermek için game üstünde en sona ekle
game.addChild(yatirimPanel);
game.setChildIndex(yatirimPanel, game.children.length - 1);
var yatirimTitle = new Text2('Yatırım - Popüler Coinler', {
size: 44,
fill: '#fff'
});
yatirimTitle.anchor.set(0.5, 0);
yatirimTitle.x = yatirimPanel.x;
yatirimTitle.y = yatirimPanel.y - yatirimPanel.height / 2 + 20; // panelin üstüne hizala
yatirimTitle.visible = false;
game.addChild(yatirimTitle);
game.setChildIndex(yatirimTitle, game.children.length - 1);
// 12 popüler coin listesi
var coinList = [{
name: "Bitcoin",
symbol: "BTC"
}, {
name: "Ethereum",
symbol: "ETH"
}, {
name: "Tether",
symbol: "USDT"
}, {
name: "BNB",
symbol: "BNB"
}, {
name: "Solana",
symbol: "SOL"
}, {
name: "XRP",
symbol: "XRP"
}, {
name: "Dogecoin",
symbol: "DOGE"
}, {
name: "Cardano",
symbol: "ADA"
}, {
name: "Toncoin",
symbol: "TON"
}, {
name: "Shiba Inu",
symbol: "SHIB"
}, {
name: "Avalanche",
symbol: "AVAX"
}, {
name: "Polkadot",
symbol: "DOT"
}];
// Coin fiyatları ve kullanıcı bakiyesi
var coinPrices = [];
var coinHoldings = [];
for (var i = 0; i < coinList.length; i++) {
// Başlangıç fiyatları: BTC 1.000.000, ETH 50.000, diğerleri 10.000-1.000 arası
var base = 1000000;
if (i === 1) base = 50000;else if (i > 1) base = 10000 - i * 900;
coinPrices[i] = base;
coinHoldings[i] = 0;
}
// Coin ortalama maliyetlerini ve toplam harcanan tutarı tutan diziler
var coinTotalCost = [];
var coinAvgCost = [];
for (var i = 0; i < coinList.length; i++) {
coinTotalCost[i] = 0;
coinAvgCost[i] = 0;
}
// Coin fiyatlarını gösterecek ve al/sat butonları
var coinTxts = [];
var coinPriceTxts = [];
var coinHoldingTxts = [];
var coinBuyBtns = [];
var coinSellBtns = [];
var coinBuyBtnTxts = [];
var coinSellBtnTxts = [];
var coinBuyInputTxts = [];
var coinSellInputTxts = [];
var coinBuyAmounts = [];
var coinSellAmounts = [];
for (var i = 0; i < coinList.length; i++) {
// Coin adı (sadece parantez içindekiler, yani symbol)
var coinTxt = new Text2(i + 1 + ". " + coinList[i].symbol, {
size: 32,
fill: '#bff'
});
coinTxt.anchor.set(0, 0);
// Panelin soluna daha yakın hizala (daha sola çek)
coinTxt.x = yatirimPanel.x - yatirimPanel.width / 2 + 30;
coinTxt.y = yatirimPanel.y + 80 + i * 75;
coinTxt.visible = false;
game.addChild(coinTxt);
coinTxts.push(coinTxt);
// Fiyat
var coinPriceTxt = new Text2("₺" + coinPrices[i], {
size: 28,
fill: '#fff'
});
coinPriceTxt.anchor.set(0, 0);
// Panelin soluna daha yakın hizala
coinPriceTxt.x = yatirimPanel.x - yatirimPanel.width / 2 + 210;
coinPriceTxt.y = coinTxt.y;
coinPriceTxt.visible = false;
game.addChild(coinPriceTxt);
coinPriceTxts.push(coinPriceTxt);
// Kullanıcı bakiyesi
var coinHoldingTxt = new Text2("Adet: 0", {
size: 24,
fill: '#ffb'
});
coinHoldingTxt.anchor.set(0, 0);
// Panelin soluna daha yakın hizala
coinHoldingTxt.x = yatirimPanel.x - yatirimPanel.width / 2 + 370;
coinHoldingTxt.y = coinTxt.y;
coinHoldingTxt.visible = false;
game.addChild(coinHoldingTxt);
coinHoldingTxts.push(coinHoldingTxt);
// Al butonu
var buyBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 100,
height: 60,
// Panelin SAĞ kenarına hizala (yeni genişlik: 950)
x: yatirimPanel.x + yatirimPanel.width / 2 - 150,
y: coinTxt.y + 18
});
buyBtn.visible = false;
game.addChild(buyBtn);
coinBuyBtns.push(buyBtn);
var buyBtnTxt = new Text2('Al', {
size: 30,
fill: '#fff'
});
buyBtnTxt.anchor.set(0.5, 0.5);
buyBtnTxt.x = buyBtn.x;
buyBtnTxt.y = buyBtn.y;
buyBtnTxt.visible = false;
game.addChild(buyBtnTxt);
coinBuyBtnTxts.push(buyBtnTxt);
// Sat butonu
var sellBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 100,
height: 60,
// Panelin SAĞ kenarına hizala, buyBtn'in sağında 130px boşluk bırak (yeni genişlik: 950)
x: yatirimPanel.x + yatirimPanel.width / 2 - 50,
y: coinTxt.y + 18
});
sellBtn.visible = false;
game.addChild(sellBtn);
coinSellBtns.push(sellBtn);
var sellBtnTxt = new Text2('Sat', {
size: 30,
fill: '#fff'
});
sellBtnTxt.anchor.set(0.5, 0.5);
sellBtnTxt.x = sellBtn.x;
sellBtnTxt.y = sellBtn.y;
sellBtnTxt.visible = false;
game.addChild(sellBtnTxt);
coinSellBtnTxts.push(sellBtnTxt);
// Alım miktarı (sabit 1, artırmak için input yok, mobilde kolaylık için)
// Aradaki süre/label kaldırıldı
coinBuyAmounts[i] = 1;
coinSellAmounts[i] = 1;
}
// --- Mevduat (Deposit) Section removed from Yatırım panel ---
// Paneli kapatmak için bir kapat butonu ekle
// --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli ---
var yatirimKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
// %100 büyüklük (120*2)
height: 120,
// %100 büyüklük (60*2)
x: yatirimPanel.x + yatirimPanel.width / 2 - 120,
y: yatirimPanel.y - yatirimPanel.height / 2 + 60,
color: 0xffffff,
borderColor: 0xff2222,
borderWidth: 8
});
yatirimKapatBtn.visible = false;
game.addChild(yatirimKapatBtn);
// Kapat butonu için X simgesi
var yatirimKapatBtnIcon = new Text2("\u2716", {
size: 54,
fill: '#ff2222'
});
yatirimKapatBtnIcon.anchor.set(1, 0.5);
yatirimKapatBtnIcon.x = yatirimKapatBtn.x - 40;
yatirimKapatBtnIcon.y = yatirimKapatBtn.y;
yatirimKapatBtnIcon.visible = false;
game.addChild(yatirimKapatBtnIcon);
var yatirimKapatBtnTxt = new Text2('Kapat', {
size: 64,
fill: '#ff2222'
});
yatirimKapatBtnTxt.anchor.set(0.5, 0.5);
yatirimKapatBtnTxt.x = yatirimKapatBtn.x;
yatirimKapatBtnTxt.y = yatirimKapatBtn.y;
yatirimKapatBtnTxt.visible = false;
game.addChild(yatirimKapatBtnTxt);
// Yatırım paneli açıldığında tüm ekranı kaplayan overlay'i oluştur (başta görünmez)
if (typeof yatirimOverlay === "undefined") {
var yatirimOverlay = LK.getAsset('button', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732,
// Tüm ekranı kapla
x: 0,
y: 0 // Ekranın en üstünden başla
});
yatirimOverlay.visible = false;
yatirimOverlay.alpha = 0.65; // Yarı saydam
game.addChild(yatirimOverlay);
}
// Panel açma
yatirimBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
fullscreenOverlay.visible = true;
yatirimPanel.visible = true;
yatirimTitle.visible = true;
yatirimKapatBtn.visible = true;
yatirimKapatBtnTxt.visible = true;
yatirimOverlay.visible = true; // Overlay'i göster
// --- Mevduat paneli ve elemanları Yatırım panelinden tamamen kaldırıldı ---
// Hide all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
// Prevent hiding Store3/Store4 purchase buttons if Mağazalar panel is open
if (magazalarPanel && magazalarPanel.visible) {
if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") {
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
if (typeof store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased;
}
if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") {
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased;
}
}
// Hide Borç Öde and Mevduat buttons when Yatırım panel is open
if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = false;
if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = false;
if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = false;
if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = false;
// Panelin merkezine göre coin paneli elemanlarını hizala
for (var i = 0; i < coinTxts.length; i++) {
// Panelin soluna hizala
coinTxts[i].x = yatirimPanel.x - yatirimPanel.width / 2 + 30;
coinTxts[i].y = yatirimPanel.y - yatirimPanel.height / 2 + 80 + i * 75;
coinPriceTxts[i].x = yatirimPanel.x - yatirimPanel.width / 2 + 210;
coinPriceTxts[i].y = coinTxts[i].y;
coinHoldingTxts[i].x = yatirimPanel.x - yatirimPanel.width / 2 + 370;
coinHoldingTxts[i].y = coinTxts[i].y;
// Al ve Sat butonlarını panelin sağ kenarına hizala (yeni genişlik: 950)
coinBuyBtns[i].x = yatirimPanel.x + yatirimPanel.width / 2 - 180;
coinBuyBtns[i].y = coinTxts[i].y + 18;
coinSellBtns[i].x = yatirimPanel.x + yatirimPanel.width / 2 - 50;
coinSellBtns[i].y = coinTxts[i].y + 18;
coinBuyBtnTxts[i].x = coinBuyBtns[i].x;
coinBuyBtnTxts[i].y = coinBuyBtns[i].y;
coinSellBtnTxts[i].x = coinSellBtns[i].x;
coinSellBtnTxts[i].y = coinSellBtns[i].y;
coinTxts[i].visible = true;
coinPriceTxts[i].visible = true;
coinHoldingTxts[i].visible = true;
coinBuyBtns[i].visible = true;
coinSellBtns[i].visible = true;
coinBuyBtnTxts[i].visible = true;
coinSellBtnTxts[i].visible = true;
}
// Kapat butonunu ve başlığı panelin sağ kenarına hizala
yatirimKapatBtn.x = yatirimPanel.x + yatirimPanel.width / 2 - 70;
yatirimKapatBtn.y = yatirimPanel.y - yatirimPanel.height / 2 + 20;
yatirimKapatBtnTxt.x = yatirimKapatBtn.x;
yatirimKapatBtnTxt.y = yatirimKapatBtn.y;
yatirimTitle.x = yatirimPanel.x;
yatirimTitle.y = yatirimPanel.y - yatirimPanel.height / 2 + 20;
updateCoinPanel();
// Panel ve içeriğini en öne getir
if (game.setChildIndex) {
// Panel ve tüm içeriğini en öne getir (butonlar dahil)
game.setChildIndex(fullscreenOverlay, game.children.length - 1);
game.setChildIndex(yatirimOverlay, game.children.length - 1);
game.setChildIndex(yatirimPanel, game.children.length - 1);
game.setChildIndex(yatirimTitle, game.children.length - 1);
game.setChildIndex(yatirimKapatBtn, game.children.length - 1);
game.setChildIndex(yatirimKapatBtnTxt, game.children.length - 1);
if (typeof yatirimKapatBtnIcon !== "undefined") game.setChildIndex(yatirimKapatBtnIcon, game.children.length - 1);
for (var i = 0; i < coinTxts.length; i++) {
game.setChildIndex(coinTxts[i], game.children.length - 1);
game.setChildIndex(coinPriceTxts[i], game.children.length - 1);
game.setChildIndex(coinHoldingTxts[i], game.children.length - 1);
game.setChildIndex(coinBuyBtns[i], game.children.length - 1);
game.setChildIndex(coinSellBtns[i], game.children.length - 1);
game.setChildIndex(coinBuyBtnTxts[i], game.children.length - 1);
game.setChildIndex(coinSellBtnTxts[i], game.children.length - 1);
}
}
};
// Panel kapama
yatirimKapatBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = false;
yatirimPanel.visible = false;
yatirimTitle.visible = false;
yatirimKapatBtn.visible = false;
yatirimKapatBtnTxt.visible = false;
if (typeof yatirimOverlay !== "undefined") yatirimOverlay.visible = false;
// Show all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = true;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true;
if (typeof bankBtn !== "undefined") bankBtn.visible = true;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true;
if (typeof soundBtn !== "undefined") soundBtn.visible = true;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = true;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = true;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true;
if (typeof infoBtn !== "undefined") infoBtn.visible = true;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true;
if (typeof howToBtn !== "undefined") howToBtn.visible = true;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true;
// Show Borç Öde and Mevduat buttons again when Yatırım panel is closed
if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = true;
if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = true;
if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = true;
if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = true;
for (var i = 0; i < coinTxts.length; i++) {
coinTxts[i].visible = false;
coinPriceTxts[i].visible = false;
coinHoldingTxts[i].visible = false;
coinBuyBtns[i].visible = false;
coinSellBtns[i].visible = false;
coinBuyBtnTxts[i].visible = false;
coinSellBtnTxts[i].visible = false;
}
};
// Coin panelini güncelle
function updateCoinPanel() {
for (var i = 0; i < coinList.length; i++) {
coinPriceTxts[i].setText("₺" + coinPrices[i]);
// Ortalama maliyet gösterimi
if (coinHoldings[i] > 0) {
coinHoldingTxts[i].setText("Adet: " + coinHoldings[i] + "\nMaliyet: ₺" + Math.round(coinAvgCost[i]));
} else {
coinHoldingTxts[i].setText("Adet: 0");
}
}
}
// Bakiye detayları için global değişkenler
var toplamCoinAlim = 0;
var toplamCoinSatisGeliri = 0;
var toplamBorcOdeme = 0;
var toplamYatirimHarcamasi = 0;
var toplamFabrikaYukseltme = 0;
var toplamMadenYukseltme = 0;
var toplamStoreYukseltme = 0;
var toplamInternetTeklifHarcamasi = 0;
var toplamTopluSatisGeliri = 0;
var toplamMusteriSatisGeliri = 0;
// Coin alım-satım butonları
for (var i = 0; i < coinList.length; i++) {
// Al
coinBuyBtns[i].down = function (idx) {
return function (x, y, obj) {
var adet = coinBuyAmounts[idx];
var tutar = coinPrices[idx] * adet;
if (money >= tutar) {
money -= tutar;
toplamCoinAlim += tutar;
// Ortalama maliyet ve toplam maliyet güncelle
coinTotalCost[idx] += tutar;
coinHoldings[idx] += adet;
coinAvgCost[idx] = coinHoldings[idx] > 0 ? coinTotalCost[idx] / coinHoldings[idx] : 0;
updateMoneyText();
updateCoinPanel();
// Buton animasyonu
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
tween(coinBuyBtns[idx], {
scaleX: 1.15,
scaleY: 1.15
}, {
duration: 80,
onFinish: function onFinish() {
tween(coinBuyBtns[idx], {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
} else {
// Yetersiz bakiye animasyonu
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
tween(coinBuyBtns[idx], {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(coinBuyBtns[idx], {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
}(i);
// Sat
coinSellBtns[i].down = function (idx) {
return function (x, y, obj) {
var adet = coinSellAmounts[idx];
// Zararına satış aktif: coinHoldings >= adet ise, maliyet bakılmaksızın satış yapılır
if (coinHoldings[idx] >= adet) {
var tutar = coinPrices[idx] * adet;
toplamCoinSatisGeliri += tutar;
// Satışta ortalama maliyeti azalt (FIFO: en basit haliyle, toplam maliyetten orantılı azalt)
if (coinHoldings[idx] > 0) {
var costPer = coinAvgCost[idx];
coinTotalCost[idx] -= costPer * adet;
if (coinTotalCost[idx] < 0) coinTotalCost[idx] = 0;
}
coinHoldings[idx] -= adet;
if (coinHoldings[idx] > 0) {
coinAvgCost[idx] = coinTotalCost[idx] / coinHoldings[idx];
} else {
coinAvgCost[idx] = 0;
coinTotalCost[idx] = 0;
}
money += tutar;
updateMoneyText();
updateCoinPanel();
// Buton animasyonu
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
tween(coinSellBtns[idx], {
scaleX: 1.15,
scaleY: 1.15
}, {
duration: 80,
onFinish: function onFinish() {
tween(coinSellBtns[idx], {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
// Satış işlemi anında gerçekleşir, bekleme süresi yok.
} else {
// Yetersiz coin animasyonu
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
tween(coinSellBtns[idx], {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(coinSellBtns[idx], {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
}(i);
}
// Coin fiyatları başlangıç fiyatından maksimum %10 yükselip düşebilir, rastgele değişim uygula (her 2 saniyede bir)
var coinBasePrices = [];
for (var i = 0; i < coinList.length; i++) {
// Başlangıç fiyatlarını coinPrices oluşturulurkenki ile aynı şekilde ata
var base = 1000000;
if (i === 1) base = 50000;else if (i > 1) base = 10000 - i * 900;
coinBasePrices[i] = base;
}
// Her 40 saniyede bir coin fiyatlarını güncelle (2 saniyeden 40 saniyeye çıkarıldı, %95 yavaşlatıldı)
LK.setInterval(function () {
for (var i = 0; i < coinPrices.length; i++) {
// Rastgele -%2.5 ile +%2.5 arası değişim uygula
var degisim = 1 + (Math.random() * 0.05 - 0.025);
var yeniFiyat = coinPrices[i] * degisim;
// Sınırları uygula: min %10 düşüş, max %10 artış
var minFiyat = Math.floor(coinBasePrices[i] * 0.9);
var maxFiyat = Math.ceil(coinBasePrices[i] * 1.1);
if (yeniFiyat < minFiyat) yeniFiyat = minFiyat;
if (yeniFiyat > maxFiyat) yeniFiyat = maxFiyat;
coinPrices[i] = Math.floor(yeniFiyat);
}
updateCoinPanel();
}, 2400); // 40 saniye (60fps * 40)
function updateMoneyText() {
moneyTxt.setText('₺' + money);
updateBorcText && updateBorcText();
if (magazaMuhasebeText && magazaMuhasebeText.visible) updateMagazaMuhasebeText();
// Bakiye detaylarını güncelleme kodu kaldırıldı.
}
// --- Banka Button & Borç Logic ---
var bankBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 180,
height: 70
});
bankBtn.x = moneyTxt.x + 220;
bankBtn.y = 40;
LK.gui.top.addChild(bankBtn);
// --- Sound Toggle Icon Button ---
// Use a simple colored box as icon: green for sound on, red for sound off
var soundOnColor = 0x83de44;
var soundOffColor = 0xd83318;
// Sound button is created after languagesBtn to ensure languagesBtn is defined
// Ava: Move soundBtn and soundBtnTxt creation after languagesBtn to fix undefined errors and ensure correct button order
// (Moved below languagesBtn and languagesBtnTxt creation)
var bankBtnTxt = new Text2('Banka', {
size: 36,
fill: '#fff'
});
bankBtnTxt.anchor.set(0.5, 0.5);
bankBtnTxt.x = bankBtn.x;
bankBtnTxt.y = bankBtn.y;
LK.gui.top.addChild(bankBtnTxt);
var borc = 0;
var borcTxt = new Text2('', {
size: 32,
fill: '#ffb'
});
borcTxt.anchor.set(0.5, 0);
borcTxt.x = moneyTxt.x + 420;
borcTxt.y = 10;
LK.gui.top.addChild(borcTxt);
// Borç Öde button
var borcOdeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 54
});
borcOdeBtn.x = borcTxt.x + 180;
borcOdeBtn.y = borcTxt.y + 28;
LK.gui.top.addChild(borcOdeBtn);
var borcOdeBtnTxt = new Text2('Borç Öde', {
size: 28,
fill: '#fff'
});
borcOdeBtnTxt.anchor.set(0.5, 0.5);
borcOdeBtnTxt.x = borcOdeBtn.x;
borcOdeBtnTxt.y = borcOdeBtn.y;
LK.gui.top.addChild(borcOdeBtnTxt);
// --- Mevduat Button below Borç Öde button ---
var mevduatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 54
});
mevduatBtn.x = borcOdeBtn.x;
mevduatBtn.y = borcOdeBtn.y + borcOdeBtn.height / 2 + 20 + 54 / 2;
mevduatBtn.visible = false; // Ava: Hide Mevduat button
//LK.gui.top.addChild(mevduatBtn);
var mevduatBtnTxt = new Text2('Mevduat', {
size: 28,
fill: '#fff'
});
mevduatBtnTxt.anchor.set(0.5, 0.5);
mevduatBtnTxt.x = mevduatBtn.x;
mevduatBtnTxt.y = mevduatBtn.y;
mevduatBtnTxt.visible = false; // Ava: Hide Mevduat button label
//LK.gui.top.addChild(mevduatBtnTxt);
// --- Mağazalar Button below Borç Öde and Mevduat ---
var magazalarBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 54
});
magazalarBtn.x = borcOdeBtn.x;
magazalarBtn.y = mevduatBtn.y + mevduatBtn.height / 2 + 20 + 54 / 2;
magazalarBtn.visible = false; // Ava: Hide Mağazalar panel button by default
LK.gui.top.addChild(magazalarBtn);
var magazalarBtnTxt = new Text2('Mağazalar', {
size: 28,
fill: '#fff'
});
magazalarBtnTxt.anchor.set(0.5, 0.5);
magazalarBtnTxt.x = magazalarBtn.x;
magazalarBtnTxt.y = magazalarBtn.y;
magazalarBtnTxt.visible = false; // Ava: Hide Mağazalar panel label by default
LK.gui.top.addChild(magazalarBtnTxt);
// --- Mağazalar Panel (initially hidden) ---
var magazalarPanelWidth = Math.floor(panelWidth * 0.9);
var magazalarPanelHeight = Math.floor(panelHeight * 0.9);
var magazalarPanelX = Math.floor((2048 - magazalarPanelWidth) / 2);
var magazalarPanelY = Math.floor((2732 - magazalarPanelHeight) / 2);
var magazalarPanel = LK.getAsset('button', {
anchorX: 0,
anchorY: 0,
width: magazalarPanelWidth,
height: magazalarPanelHeight,
x: magazalarPanelX,
y: magazalarPanelY
});
magazalarPanel.visible = false;
game.addChild(magazalarPanel);
var magazalarPanelTitle = new Text2('Mağazalar', {
size: 64,
fill: '#fff'
});
magazalarPanelTitle.anchor.set(0.5, 0);
magazalarPanelTitle.x = 2048 / 2;
magazalarPanelTitle.y = magazalarPanelY + 40;
magazalarPanelTitle.visible = false;
game.addChild(magazalarPanelTitle);
var magazalarPanelText = new Text2('Tüm mağazalar ve müşteriler burada görüntülenir.', {
size: 40,
fill: '#bff',
lineHeight: 52
});
magazalarPanelText.anchor.set(0.5, 0);
magazalarPanelText.x = 2048 / 2;
magazalarPanelText.y = magazalarPanelTitle.y + magazalarPanelTitle.height + 10;
magazalarPanelText.visible = false;
game.addChild(magazalarPanelText);
// Kapat butonu
var magazalarKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
height: 120,
x: magazalarPanel.x + magazalarPanelWidth - 120,
y: magazalarPanel.y + 60,
color: 0xffffff,
borderColor: 0xff2222,
borderWidth: 8
});
magazalarKapatBtn.visible = false;
game.addChild(magazalarKapatBtn);
var magazalarKapatBtnIcon = new Text2("\u2716", {
size: 54,
fill: '#ff2222'
});
magazalarKapatBtnIcon.anchor.set(1, 0.5);
magazalarKapatBtnIcon.x = magazalarKapatBtn.x - 40;
magazalarKapatBtnIcon.y = magazalarKapatBtn.y;
magazalarKapatBtnIcon.visible = false;
game.addChild(magazalarKapatBtnIcon);
var magazalarKapatBtnTxt = new Text2('Kapat', {
size: 64,
fill: '#ff2222'
});
magazalarKapatBtnTxt.anchor.set(0.5, 0.5);
magazalarKapatBtnTxt.x = magazalarKapatBtn.x;
magazalarKapatBtnTxt.y = magazalarKapatBtn.y;
magazalarKapatBtnTxt.visible = false;
game.addChild(magazalarKapatBtnTxt);
// --- Move both stores and their customers to the Mağazalar panel ---
function showMagazalarPanel() {
magazalarPanel.visible = true;
magazalarPanelTitle.visible = true;
magazalarPanelText.visible = true;
magazalarKapatBtn.visible = true;
magazalarKapatBtnIcon.visible = true;
magazalarKapatBtnTxt.visible = true;
// Hide all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof magazalarBtn !== "undefined") magazalarBtn.visible = false;
if (typeof magazalarBtnTxt !== "undefined") magazalarBtnTxt.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = false;
if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = false;
if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = false;
if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = false;
// Prevent hiding store purchase buttons on homepage when Mağazalar panel opens
if (typeof store2PurchaseBtn !== "undefined") store2PurchaseBtn.visible = !store2Purchased;
if (typeof store2PurchaseBtnTxt !== "undefined") store2PurchaseBtnTxt.visible = !store2Purchased;
if (typeof store3PurchaseBtn !== "undefined") store3PurchaseBtn.visible = !store3Purchased;
if (typeof store3PurchaseBtnTxt !== "undefined") store3PurchaseBtnTxt.visible = !store3Purchased;
if (typeof store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased;
if (typeof store4PurchaseBtn !== "undefined") store4PurchaseBtn.visible = !store4Purchased;
if (typeof store4PurchaseBtnTxt !== "undefined") store4PurchaseBtnTxt.visible = !store4Purchased;
if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased;
// Show all store purchase buttons (store2, store3, store4) and bring them to front when Mağazalar panel opens
if (typeof store2PurchaseBtn !== "undefined" && typeof store2PurchaseBtnTxt !== "undefined") {
store2PurchaseBtn.visible = !store2Purchased;
store2PurchaseBtnTxt.visible = !store2Purchased;
if (game.setChildIndex) {
game.setChildIndex(store2PurchaseBtn, game.children.length - 1);
game.setChildIndex(store2PurchaseBtnTxt, game.children.length - 1);
}
}
if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") {
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
if (typeof store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased;
// Ensure button and text are brought to front
if (game.setChildIndex) {
game.setChildIndex(store3PurchaseBtn, game.children.length - 1);
game.setChildIndex(store3PurchaseBtnTxt, game.children.length - 1);
if (typeof store3PurchaseBtnIcon !== "undefined") game.setChildIndex(store3PurchaseBtnIcon, game.children.length - 1);
}
}
if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") {
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased;
// Ensure button and text are brought to front
if (game.setChildIndex) {
game.setChildIndex(store4PurchaseBtn, game.children.length - 1);
game.setChildIndex(store4PurchaseBtnTxt, game.children.length - 1);
if (typeof store4PurchaseBtnIcon !== "undefined") game.setChildIndex(store4PurchaseBtnIcon, game.children.length - 1);
}
}
// --- Mağazalar panelinde 2'li sıra halinde alt alta ve ortalı hizalama ---
// Grid ayarları
var storeCols = 2;
var storeRows = 2;
var storeCellWidth = magazalarPanel.width / storeCols;
var storeCellHeight = magazalarPanel.height / 3.5; // 3.5 ile daha sıkışık, 4 ile daha geniş
var storeStartX = magazalarPanel.x + storeCellWidth / 2;
var storeStartY = magazalarPanelText.y + magazalarPanelText.height + 60 + storeCellHeight; // Başlık ve açıklama altı, 1 satır aşağı kaydırıldı
// Mağazaları ve butonları gridde sırala
var storeList = [store, store2, store3, store4];
var storeBtnList = [storeBtn, store2Btn, store3Btn, store4Btn];
var storeBtnTxtList = [storeBtnTxt, store2BtnTxt, store3BtnTxt, store4BtnTxt];
var storePurchaseBtnList = [null, store2PurchaseBtn, store3PurchaseBtn, store4PurchaseBtn];
var storePurchaseBtnTxtList = [null, store2PurchaseBtnTxt, store3PurchaseBtnTxt, store4PurchaseBtnTxt];
var storePurchasedList = [true, store2Purchased, store3Purchased, store4Purchased];
for (var i = 0; i < 4; i++) {
var row = Math.floor(i / storeCols);
var col = i % storeCols;
var cx = storeStartX + col * storeCellWidth;
var cy = storeStartY + row * storeCellHeight;
// Mağaza görseli
if (typeof storeList[i] !== "undefined") {
storeList[i].x = cx;
storeList[i].y = cy;
storeList[i].visible = true;
game.setChildIndex(storeList[i], game.children.length - 1);
}
// Yükseltme butonu (her mağaza için)
if (typeof storeBtnList[i] !== "undefined") {
storeBtnList[i].x = cx;
storeBtnList[i].y = cy + 160;
// Sadece satın alındıysa göster
storeBtnList[i].visible = i === 0 ? true : !!storePurchasedList[i];
if (game.setChildIndex) game.setChildIndex(storeBtnList[i], game.children.length - 1);
}
if (typeof storeBtnTxtList[i] !== "undefined") {
storeBtnTxtList[i].x = cx;
storeBtnTxtList[i].y = cy + 180;
storeBtnTxtList[i].visible = i === 0 ? true : !!storePurchasedList[i];
if (game.setChildIndex) game.setChildIndex(storeBtnTxtList[i], game.children.length - 1);
}
// Satın al butonu (store2, store3, store4) -- SEVİYENİN ALTINA ALINDI
if (i > 0 && typeof storePurchaseBtnList[i] !== "undefined" && typeof storePurchaseBtnTxtList[i] !== "undefined") {
storePurchaseBtnList[i].x = cx;
storePurchaseBtnList[i].y = cy + 220;
storePurchaseBtnTxtList[i].x = cx;
storePurchaseBtnTxtList[i].y = cy + 240;
// Defensive: always set visible based on purchase state
if (i === 2) {
// Store3
storePurchaseBtnList[i].visible = !store3Purchased;
storePurchaseBtnTxtList[i].visible = !store3Purchased;
if (typeof store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased;
} else if (i === 3) {
// Store4
storePurchaseBtnList[i].visible = !store4Purchased;
storePurchaseBtnTxtList[i].visible = !store4Purchased;
if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased;
} else {
storePurchaseBtnList[i].visible = !storePurchasedList[i];
storePurchaseBtnTxtList[i].visible = !storePurchasedList[i];
}
if (game.setChildIndex) {
game.setChildIndex(storePurchaseBtnList[i], game.children.length - 1);
game.setChildIndex(storePurchaseBtnTxtList[i], game.children.length - 1);
}
}
}
// --- Ava: Bring Store3 and Store4 purchase buttons and icons to the very front above overlay and panel when Mağazalar panel opens ---
if (game.setChildIndex) {
// First, bring overlay and panel to front
game.setChildIndex(fullscreenOverlay, game.children.length - 1);
game.setChildIndex(magazalarPanel, game.children.length - 1);
// Then, bring Store3 and Store4 purchase buttons, their texts, and icons to the very front
if (typeof store3PurchaseBtn !== "undefined") game.setChildIndex(store3PurchaseBtn, game.children.length - 1);
if (typeof store3PurchaseBtnIcon !== "undefined") game.setChildIndex(store3PurchaseBtnIcon, game.children.length - 1);
if (typeof store3PurchaseBtnTxt !== "undefined") game.setChildIndex(store3PurchaseBtnTxt, game.children.length - 1);
if (typeof store4PurchaseBtn !== "undefined") game.setChildIndex(store4PurchaseBtn, game.children.length - 1);
if (typeof store4PurchaseBtnIcon !== "undefined") game.setChildIndex(store4PurchaseBtnIcon, game.children.length - 1);
if (typeof store4PurchaseBtnTxt !== "undefined") game.setChildIndex(store4PurchaseBtnTxt, game.children.length - 1);
}
// Bring panel and its content to front
if (game.setChildIndex) {
game.setChildIndex(fullscreenOverlay, game.children.length - 1);
game.setChildIndex(magazalarPanel, game.children.length - 1);
game.setChildIndex(magazalarPanelTitle, game.children.length - 1);
game.setChildIndex(magazalarPanelText, game.children.length - 1);
game.setChildIndex(magazalarKapatBtn, game.children.length - 1);
game.setChildIndex(magazalarKapatBtnIcon, game.children.length - 1);
game.setChildIndex(magazalarKapatBtnTxt, game.children.length - 1);
if (typeof store !== "undefined") game.setChildIndex(store, game.children.length - 1);
if (typeof store2 !== "undefined") game.setChildIndex(store2, game.children.length - 1);
if (typeof store3 !== "undefined") game.setChildIndex(store3, game.children.length - 1);
if (typeof store4 !== "undefined") game.setChildIndex(store4, game.children.length - 1);
if (typeof storeBtn !== "undefined") game.setChildIndex(storeBtn, game.children.length - 1);
if (typeof storeBtnTxt !== "undefined") game.setChildIndex(storeBtnTxt, game.children.length - 1);
if (typeof store2Btn !== "undefined") game.setChildIndex(store2Btn, game.children.length - 1);
if (typeof store2BtnTxt !== "undefined") game.setChildIndex(store2BtnTxt, game.children.length - 1);
if (typeof store2PurchaseBtn !== "undefined") game.setChildIndex(store2PurchaseBtn, game.children.length - 1);
if (typeof store2PurchaseBtnTxt !== "undefined") game.setChildIndex(store2PurchaseBtnTxt, game.children.length - 1);
if (typeof store3Btn !== "undefined") game.setChildIndex(store3Btn, game.children.length - 1);
if (typeof store3BtnTxt !== "undefined") game.setChildIndex(store3BtnTxt, game.children.length - 1);
if (typeof store4Btn !== "undefined") game.setChildIndex(store4Btn, game.children.length - 1);
if (typeof store4BtnTxt !== "undefined") game.setChildIndex(store4BtnTxt, game.children.length - 1);
// Customer logic removed: no customers to bring to front.
}
}
// Show panel on button press
magazalarBtn.down = function (x, y, obj) {
showMagazalarPanel();
};
magazalarBtnTxt.down = function (x, y, obj) {
showMagazalarPanel();
};
// Kapat butonu logic
magazalarKapatBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = false;
magazalarPanel.visible = false;
magazalarPanelTitle.visible = false;
magazalarPanelText.visible = false;
magazalarKapatBtn.visible = false;
magazalarKapatBtnIcon.visible = false;
magazalarKapatBtnTxt.visible = false;
// Restore all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = true;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true;
if (typeof bankBtn !== "undefined") bankBtn.visible = true;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true;
if (typeof soundBtn !== "undefined") soundBtn.visible = true;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = true;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true;
if (typeof magazalarBtn !== "undefined") magazalarBtn.visible = true;
if (typeof magazalarBtnTxt !== "undefined") magazalarBtnTxt.visible = true;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = true;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true;
if (typeof infoBtn !== "undefined") infoBtn.visible = true;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true;
if (typeof howToBtn !== "undefined") howToBtn.visible = true;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true;
if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = true;
if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = true;
if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = true;
if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = true;
// Move stores and customers back to their original positions
if (typeof store !== "undefined") {
store.x = 1850;
store.y = 600;
store.visible = true; // Anasayfa'da mağazaları göster
store2.visible = true; // Anasayfa'da mağazaları göster
store3.visible = true; // Anasayfa'da mağazaları göster
store4.visible = true; // Anasayfa'da mağazaları göster
store2.visible = true;
store3.visible = true;
if (typeof store4 !== "undefined") store4.visible = true;
}
if (typeof store2 !== "undefined") {
store2.x = 1850;
store2.y = 950;
store2.visible = true;
}
if (typeof store !== "undefined") {
store.x = 1850;
store.y = 600;
store.visible = true;
}
if (typeof store3 !== "undefined") {
store3.x = 1850;
store3.y = 1300;
store3.visible = true;
}
if (typeof store4 !== "undefined") {
store4.x = 1850;
store4.y = 1650;
store4.visible = true;
}
// Customer logic removed: no customers to reposition on Mağazalar panel close.
};
var mevduatPopupPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: panelWidth,
height: panelHeight,
x: panelX,
y: panelY
});
mevduatPopupPanel.visible = false;
game.addChild(mevduatPopupPanel);
var mevduatPopupTitle = new Text2('Mevduat', {
size: 60,
fill: '#fff'
});
mevduatPopupTitle.anchor.set(0.5, 0);
mevduatPopupTitle.x = mevduatPopupPanel.x;
mevduatPopupTitle.y = mevduatPopupPanel.y - mevduatPopupPanel.height / 2 + 30;
mevduatPopupTitle.visible = false;
game.addChild(mevduatPopupTitle);
var mevduatKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
height: 120,
x: mevduatPopupPanel.x + mevduatPopupPanel.width / 2 - 120,
y: mevduatPopupPanel.y - mevduatPopupPanel.height / 2 + 60,
color: 0xffffff,
borderColor: 0xff2222,
borderWidth: 8
});
mevduatKapatBtn.visible = false;
game.addChild(mevduatKapatBtn);
var mevduatKapatBtnTxt = new Text2('Kapat', {
size: 64,
fill: '#ff2222'
});
mevduatKapatBtnTxt.anchor.set(0.5, 0.5);
mevduatKapatBtnTxt.x = mevduatKapatBtn.x;
mevduatKapatBtnTxt.y = mevduatKapatBtn.y;
mevduatKapatBtnTxt.visible = false;
game.addChild(mevduatKapatBtnTxt);
// --- Ava: Define mevduatPanel and related UI elements to fix 'mevduatPanel is not defined' bug ---
// Mevduat panel ana paneli (popup panelin içine yerleştirilecek)
var mevduatPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: Math.floor(panelWidth * 0.7),
height: Math.floor(panelHeight * 0.45),
x: mevduatPopupPanel.x,
y: mevduatPopupPanel.y - 60,
color: 0x181818
});
mevduatPanel.visible = false;
game.addChild(mevduatPanel);
// Mevduat başlığı
var mevduatTitle = new Text2('Mevduat', {
size: 90,
fill: '#fff'
});
mevduatTitle.anchor.set(0.5, 0);
mevduatTitle.x = mevduatPanel.x;
mevduatTitle.y = mevduatPanel.y + 10;
mevduatTitle.visible = false;
game.addChild(mevduatTitle);
// Mevduat tutar yazısı
var mevduatTutar = 0;
var mevduatTutarTxt = new Text2('Mevduat: ₺0', {
size: 72,
fill: '#ffb'
});
mevduatTutarTxt.anchor.set(0.5, 0);
mevduatTutarTxt.x = mevduatPanel.x;
mevduatTutarTxt.y = mevduatTitle.y + mevduatTitle.height + 8;
mevduatTutarTxt.visible = false;
game.addChild(mevduatTutarTxt);
// Mevduat yatır butonu
var mevduatYatirBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 220,
height: 90,
x: mevduatPanel.x - 100,
y: mevduatPanel.y + mevduatPanel.height - 40
});
mevduatYatirBtn.visible = false;
game.addChild(mevduatYatirBtn);
var mevduatYatirBtnTxt = new Text2('Yatır', {
size: 54,
fill: '#fff'
});
mevduatYatirBtnTxt.anchor.set(0.5, 0.5);
mevduatYatirBtnTxt.x = mevduatYatirBtn.x;
mevduatYatirBtnTxt.y = mevduatYatirBtn.y;
mevduatYatirBtnTxt.visible = false;
game.addChild(mevduatYatirBtnTxt);
// Mevduat çek butonu
var mevduatCekBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 220,
height: 90,
x: mevduatPanel.x + 100,
y: mevduatPanel.y + mevduatPanel.height - 40
});
mevduatCekBtn.visible = false;
game.addChild(mevduatCekBtn);
var mevduatCekBtnTxt = new Text2('Çek', {
size: 54,
fill: '#fff'
});
mevduatCekBtnTxt.anchor.set(0.5, 0.5);
mevduatCekBtnTxt.x = mevduatCekBtn.x;
mevduatCekBtnTxt.y = mevduatCekBtn.y;
mevduatCekBtnTxt.visible = false;
game.addChild(mevduatCekBtnTxt);
// Mevduat panelindeki mevcut mevduatPanel ve elemanlarını popup panelin içine taşı
mevduatPanel.x = mevduatPopupPanel.x;
mevduatPanel.y = mevduatPopupPanel.y - 60;
mevduatTitle.x = mevduatPanel.x;
mevduatTitle.y = mevduatPanel.y + 10;
mevduatTutarTxt.x = mevduatPanel.x;
mevduatTutarTxt.y = mevduatTitle.y + mevduatTitle.height + 8;
mevduatYatirBtn.x = mevduatPanel.x - 100;
mevduatYatirBtn.y = mevduatPanel.y + mevduatPanel.height - 40;
mevduatYatirBtnTxt.x = mevduatYatirBtn.x;
mevduatYatirBtnTxt.y = mevduatYatirBtn.y;
mevduatCekBtn.x = mevduatPanel.x + 100;
mevduatCekBtn.y = mevduatPanel.y + mevduatPanel.height - 40;
mevduatCekBtnTxt.x = mevduatCekBtn.x;
mevduatCekBtnTxt.y = mevduatCekBtn.y;
// Mevduat butonuna tıklanınca paneli aç
mevduatBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
if (isSoundOn && LK.getSound) {
var clickSound = LK.getSound('ClickSesi');
if (clickSound) clickSound.play();
}
fullscreenOverlay.visible = true;
mevduatPopupPanel.visible = true;
mevduatPopupTitle.visible = true;
mevduatKapatBtn.visible = true;
mevduatKapatBtnTxt.visible = true;
// Mevduat paneli ve elemanlarını göster
mevduatPanel.visible = true;
mevduatTitle.visible = true;
mevduatTutarTxt.visible = true;
mevduatYatirBtn.visible = true;
mevduatYatirBtnTxt.visible = true;
mevduatCekBtn.visible = true;
mevduatCekBtnTxt.visible = true;
// --- Ava: Mevduat info ve faiz tablosunu göster ---
if (typeof mevduatInfoTxt !== "undefined") mevduatInfoTxt.visible = true;
if (typeof mevduatTabloBaslik !== "undefined") mevduatTabloBaslik.visible = true;
if (typeof mevduatTabloSatirlar !== "undefined") {
for (var i = 0; i < mevduatTabloSatirlar.length; i++) {
mevduatTabloSatirlar[i].visible = true;
}
}
if (typeof updateMevduatTxt === "function") updateMevduatTxt();
// Hide all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
// Prevent hiding Store3/Store4 purchase buttons if Mağazalar panel is open
if (magazalarPanel && magazalarPanel.visible) {
if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") {
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
}
if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") {
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
}
}
// Hide Borç Öde and Mevduat buttons when Mevduat panel is open
if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = false;
if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = false;
if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = false;
if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = false;
// Panel ve içeriğini en öne getir
if (game.setChildIndex) {
game.setChildIndex(fullscreenOverlay, game.children.length - 1);
game.setChildIndex(mevduatPopupPanel, game.children.length - 1);
game.setChildIndex(mevduatPopupTitle, game.children.length - 1);
game.setChildIndex(mevduatKapatBtn, game.children.length - 1);
game.setChildIndex(mevduatKapatBtnTxt, game.children.length - 1);
if (typeof mevduatKapatBtnIcon !== "undefined") game.setChildIndex(mevduatKapatBtnIcon, game.children.length - 1);
game.setChildIndex(mevduatPanel, game.children.length - 1);
game.setChildIndex(mevduatTitle, game.children.length - 1);
game.setChildIndex(mevduatTutarTxt, game.children.length - 1);
game.setChildIndex(mevduatYatirBtn, game.children.length - 1);
game.setChildIndex(mevduatYatirBtnTxt, game.children.length - 1);
game.setChildIndex(mevduatCekBtn, game.children.length - 1);
game.setChildIndex(mevduatCekBtnTxt, game.children.length - 1);
}
};
// Paneli kapatmak için kapat butonu
mevduatKapatBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = false;
mevduatPopupPanel.visible = false;
mevduatPopupTitle.visible = false;
mevduatKapatBtn.visible = false;
mevduatKapatBtnTxt.visible = false;
// Mevduat paneli ve elemanlarını gizle
mevduatPanel.visible = false;
mevduatTitle.visible = false;
mevduatTutarTxt.visible = false;
mevduatYatirBtn.visible = false;
mevduatYatirBtnTxt.visible = false;
mevduatCekBtn.visible = false;
mevduatCekBtnTxt.visible = false;
// --- Ava: Mevduat info ve faiz tablosunu gizle ---
if (typeof mevduatInfoTxt !== "undefined") mevduatInfoTxt.visible = false;
if (typeof mevduatTabloBaslik !== "undefined") mevduatTabloBaslik.visible = false;
if (typeof mevduatTabloSatirlar !== "undefined") {
for (var i = 0; i < mevduatTabloSatirlar.length; i++) {
mevduatTabloSatirlar[i].visible = false;
}
}
// Show all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = true;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true;
if (typeof bankBtn !== "undefined") bankBtn.visible = true;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true;
if (typeof soundBtn !== "undefined") soundBtn.visible = true;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = true;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = true;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true;
if (typeof infoBtn !== "undefined") infoBtn.visible = true;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true;
if (typeof howToBtn !== "undefined") howToBtn.visible = true;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true;
// Show Borç Öde and Mevduat buttons again when Mevduat panel is closed
if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = true;
if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = true;
if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = true;
if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = true;
};
// --- New Page Button below Banka button ---
var newPageBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 54
});
// Move Çalışanlar butonu 5 satır aşağı ve 2 satır sola
// Each row: height + 20px gap, each column: -(width + 20px) left
var calisanlarRowOffset = 5;
var calisanlarColOffset = -2;
var calisanlarRowGap = 20;
var calisanlarColGap = 20;
newPageBtn.x = bankBtn.x + calisanlarColOffset * (newPageBtn.width + calisanlarColGap);
newPageBtn.y = bankBtn.y + calisanlarRowOffset * (bankBtn.height + calisanlarRowGap);
LK.gui.top.addChild(newPageBtn);
var newPageBtnTxt = new Text2('Çalışanlar', {
size: 28,
fill: '#fff'
});
newPageBtnTxt.anchor.set(0.5, 0.5);
newPageBtnTxt.x = newPageBtn.x;
newPageBtnTxt.y = newPageBtn.y;
LK.gui.top.addChild(newPageBtnTxt);
// --- Add new image below the Çalışanlar button ---
var calisanlarBtnImg = LK.getAsset('worker2', {
anchorX: 0.5,
anchorY: 0,
width: 125,
height: 125,
x: newPageBtn.x,
y: newPageBtn.y + newPageBtn.height / 2 + 10 // 10px gap below button
});
LK.gui.top.addChild(calisanlarBtnImg);
// Clicking the image opens the Çalışanlar panel (same as newPageBtn.down)
calisanlarBtnImg.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
fullscreenOverlay.visible = true;
newPageOverlay.visible = true;
newPagePanel.visible = true;
newPagePanelTitle.visible = true;
newPagePanelText.visible = true;
newPageKapatBtn.visible = true;
newPageKapatBtnTxt.visible = true;
// Çalışanları ve altındaki UI'ları göster ve panelde 3'lü sıra halinde alt alta ortala
for (var i = 0; i < workerImages.length; i++) {
var pos = getWorkerPanelPos(i);
workerImages[i].img.x = pos.x;
workerImages[i].img.y = pos.y;
workerImages[i].img.visible = true;
workerImages[i].label.x = pos.x;
workerImages[i].label.y = pos.y + 80;
workerImages[i].label.visible = true;
// Alt açıklama yazılarını alt alta ve hizalı şekilde göster
var baseY = workerImages[i].label.y + workerImages[i].label.height + 8; // label'ın altından 8px boşluk
var lineGap = 8; // satırlar arası boşluk
if (i === 0) {
var y = baseY;
if (worker1LevelTxt) {
worker1LevelTxt.x = pos.x;
worker1LevelTxt.y = y;
worker1LevelTxt.visible = true;
y += worker1LevelTxt.height + lineGap;
}
if (worker1EarningTxt) {
worker1EarningTxt.x = pos.x;
worker1EarningTxt.y = y;
worker1EarningTxt.visible = true;
y += worker1EarningTxt.height + lineGap;
}
if (worker1UpgradeBtn) {
worker1UpgradeBtn.x = pos.x;
worker1UpgradeBtn.y = y + worker1UpgradeBtn.height / 2;
worker1UpgradeBtn.visible = true;
}
if (worker1UpgradeBtnTxt) {
worker1UpgradeBtnTxt.x = pos.x;
worker1UpgradeBtnTxt.y = worker1UpgradeBtn.y;
worker1UpgradeBtnTxt.visible = true;
}
}
if (i === 1) {
var y = baseY;
if (worker2LevelTxt) {
worker2LevelTxt.x = pos.x;
worker2LevelTxt.y = y;
worker2LevelTxt.visible = true;
y += worker2LevelTxt.height + lineGap;
}
if (worker2SpeedTxt) {
worker2SpeedTxt.x = pos.x;
worker2SpeedTxt.y = y;
worker2SpeedTxt.visible = true;
y += worker2SpeedTxt.height + lineGap;
}
if (worker2UpgradeBtn) {
worker2UpgradeBtn.x = pos.x;
worker2UpgradeBtn.y = y + worker2UpgradeBtn.height / 2;
worker2UpgradeBtn.visible = true;
}
if (worker2UpgradeBtnTxt) {
worker2UpgradeBtnTxt.x = pos.x;
worker2UpgradeBtnTxt.y = worker2UpgradeBtn.y;
worker2UpgradeBtnTxt.visible = true;
}
}
if (i === 2) {
var y = baseY;
if (worker3LevelTxt) {
worker3LevelTxt.x = pos.x;
worker3LevelTxt.y = y;
worker3LevelTxt.visible = true;
y += worker3LevelTxt.height + lineGap;
}
if (worker3DiscountTxt) {
worker3DiscountTxt.x = pos.x;
worker3DiscountTxt.y = y;
worker3DiscountTxt.visible = true;
y += worker3DiscountTxt.height + lineGap;
}
if (worker3UpgradeBtn) {
worker3UpgradeBtn.x = pos.x;
worker3UpgradeBtn.y = y + worker3UpgradeBtn.height / 2;
worker3UpgradeBtn.visible = true;
}
if (worker3UpgradeBtnTxt) {
worker3UpgradeBtnTxt.x = pos.x;
worker3UpgradeBtnTxt.y = worker3UpgradeBtn.y;
worker3UpgradeBtnTxt.visible = true;
}
}
if (i === 3) {
var y = baseY;
if (worker4LevelTxt) {
worker4LevelTxt.x = pos.x;
worker4LevelTxt.y = y;
worker4LevelTxt.visible = true;
y += worker4LevelTxt.height + lineGap;
}
if (worker4EarningTxt) {
worker4EarningTxt.x = pos.x;
worker4EarningTxt.y = y;
worker4EarningTxt.visible = true;
y += worker4EarningTxt.height + lineGap;
}
if (worker4UpgradeBtn) {
worker4UpgradeBtn.x = pos.x;
worker4UpgradeBtn.y = y + worker4UpgradeBtn.height / 2;
worker4UpgradeBtn.visible = true;
}
if (worker4UpgradeBtnTxt) {
worker4UpgradeBtnTxt.x = pos.x;
worker4UpgradeBtnTxt.y = worker4UpgradeBtn.y;
worker4UpgradeBtnTxt.visible = true;
}
}
if (i === 4) {
var y = baseY;
if (worker5LevelTxt) {
worker5LevelTxt.x = pos.x;
worker5LevelTxt.y = y;
worker5LevelTxt.visible = true;
y += worker5LevelTxt.height + lineGap;
}
if (worker5BonusTxt) {
worker5BonusTxt.x = pos.x;
worker5BonusTxt.y = y;
worker5BonusTxt.visible = true;
y += worker5BonusTxt.height + lineGap;
}
if (worker5UpgradeBtn) {
worker5UpgradeBtn.x = pos.x;
worker5UpgradeBtn.y = y + worker5UpgradeBtn.height / 2;
worker5UpgradeBtn.visible = true;
}
if (worker5UpgradeBtnTxt) {
worker5UpgradeBtnTxt.x = pos.x;
worker5UpgradeBtnTxt.y = worker5UpgradeBtn.y;
worker5UpgradeBtnTxt.visible = true;
}
}
}
// Paneli en öne getir
if (game.setChildIndex) {
game.setChildIndex(newPagePanel, game.children.length - 1);
game.setChildIndex(newPagePanelTitle, game.children.length - 1);
game.setChildIndex(newPagePanelText, game.children.length - 1);
game.setChildIndex(newPageKapatBtn, game.children.length - 1);
game.setChildIndex(newPageKapatBtnTxt, game.children.length - 1);
for (var i = 0; i < workerImages.length; i++) {
game.setChildIndex(workerImages[i].img, game.children.length - 1);
game.setChildIndex(workerImages[i].label, game.children.length - 1);
}
if (worker1LevelTxt) game.setChildIndex(worker1LevelTxt, game.children.length - 1);
if (worker1EarningTxt) game.setChildIndex(worker1EarningTxt, game.children.length - 1);
if (worker1UpgradeBtn) game.setChildIndex(worker1UpgradeBtn, game.children.length - 1);
if (worker1UpgradeBtnTxt) game.setChildIndex(worker1UpgradeBtnTxt, game.children.length - 1);
if (worker2LevelTxt) game.setChildIndex(worker2LevelTxt, game.children.length - 1);
if (worker2SpeedTxt) game.setChildIndex(worker2SpeedTxt, game.children.length - 1);
if (worker2UpgradeBtn) game.setChildIndex(worker2UpgradeBtn, game.children.length - 1);
if (worker2UpgradeBtnTxt) game.setChildIndex(worker2UpgradeBtnTxt, game.children.length - 1);
if (worker3LevelTxt) game.setChildIndex(worker3LevelTxt, game.children.length - 1);
if (worker3DiscountTxt) game.setChildIndex(worker3DiscountTxt, game.children.length - 1);
if (worker3UpgradeBtn) game.setChildIndex(worker3UpgradeBtn, game.children.length - 1);
if (worker3UpgradeBtnTxt) game.setChildIndex(worker3UpgradeBtnTxt, game.children.length - 1);
if (worker4LevelTxt) game.setChildIndex(worker4LevelTxt, game.children.length - 1);
if (worker4EarningTxt) game.setChildIndex(worker4EarningTxt, game.children.length - 1);
if (worker4UpgradeBtn) game.setChildIndex(worker4UpgradeBtn, game.children.length - 1);
if (worker4UpgradeBtnTxt) game.setChildIndex(worker4UpgradeBtnTxt, game.children.length - 1);
if (worker5LevelTxt) game.setChildIndex(worker5LevelTxt, game.children.length - 1);
if (worker5BonusTxt) game.setChildIndex(worker5BonusTxt, game.children.length - 1);
if (worker5UpgradeBtn) game.setChildIndex(worker5UpgradeBtn, game.children.length - 1);
if (worker5UpgradeBtnTxt) game.setChildIndex(worker5UpgradeBtnTxt, game.children.length - 1);
}
};
// --- Madenler Button below Çalışanlar button ---
var madenlerBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 54
});
// Move 0 rows down and 3 columns left relative to newPageBtn (3 rows up)
// Each row: height + 20px gap, each column: -(width + 20px) left
var rowOffset = 0;
var colOffset = -3;
var rowGap = 20;
var colGap = 20;
madenlerBtn.x = newPageBtn.x + colOffset * (madenlerBtn.width + colGap);
madenlerBtn.y = newPageBtn.y + rowOffset * (newPageBtn.height + rowGap);
LK.gui.top.addChild(madenlerBtn);
var madenlerBtnTxt = new Text2('Madenler', {
size: 28,
fill: '#fff'
});
madenlerBtnTxt.anchor.set(0.5, 0.5);
madenlerBtnTxt.x = madenlerBtn.x;
madenlerBtnTxt.y = madenlerBtn.y;
LK.gui.top.addChild(madenlerBtnTxt);
// --- Add mine image below the Madenler button ---
var madenlerBtnMineImg = LK.getAsset('mine', {
anchorX: 0.5,
anchorY: 0,
width: 125,
//{cx} // 100 * 1.25 = 125
height: 125,
//{cy} // 100 * 1.25 = 125
x: madenlerBtn.x,
y: madenlerBtn.y + madenlerBtn.height / 2 + 10 // 10px gap below button
});
LK.gui.top.addChild(madenlerBtnMineImg);
// Clicking the image opens the Madenler panel (same as madenlerBtn.down)
madenlerBtnMineImg.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
fullscreenOverlay.visible = true;
madenlerPanel.visible = true;
madenlerPanelTitle.visible = true;
madenlerPanelText.visible = true;
madenlerKapatBtn.visible = true;
madenlerKapatBtnIcon.visible = true;
madenlerKapatBtnTxt.visible = true;
// Ava: Show and update maden depo stock area
madenDepoPanel.visible = true;
madenDepoStockTxt.visible = true;
updateMadenDepoStockTxt();
// Hide all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof madenlerBtnMineImg !== "undefined") madenlerBtnMineImg.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
// Show all mine UIs
for (var i = 0; i < 6; i++) {
if (!mines || !mines[i]) continue;
madenlerMineImages[i].visible = true;
madenlerMineLabels[i].visible = true;
madenlerMineLevelTxts[i].visible = true;
madenlerMineProdTxts[i].visible = false;
madenlerMineUpgradeBtns[i].visible = true;
madenlerMineUpgradeBtnTxts[i].visible = true;
if (window.madenlerMineStockTxts && window.madenlerMineStockTxts[i]) {
window.madenlerMineStockTxts[i].visible = true;
var oreType = oreTypes[i];
window.madenlerMineStockTxts[i].setText('' + rawMaterials[oreType]);
}
if (madenlerMineAutoBtns[i]) madenlerMineAutoBtns[i].visible = true;
if (madenlerMineAutoTxts[i]) {
if (mineAutoProduce[i]) {
madenlerMineAutoTxts[i].setText('Oto Üret: Açık');
} else {
var autoMineCost = (i + 1) * 500;
madenlerMineAutoTxts[i].setText('Oto Üret: Kapalı\n₺' + autoMineCost);
}
madenlerMineAutoTxts[i].visible = true;
madenlerMineAutoTxts[i].lineHeight = 52;
madenlerMineAutoTxts[i].y = madenlerMineAutoBtns[i].y + 10;
}
madenlerMineLevelTxts[i].setText('Seviye: ' + mines[i].level);
madenlerMineProdTxts[i].setText('Üretim: ' + mines[i].production);
madenlerMineUpgradeBtnTxts[i].setText('Yükselt\n₺' + mines[i].upgradeCost);
}
// Paneli en öne getir
if (game.setChildIndex) {
game.setChildIndex(madenlerPanel, game.children.length - 1);
game.setChildIndex(madenlerPanelTitle, game.children.length - 1);
game.setChildIndex(madenlerPanelText, game.children.length - 1);
game.setChildIndex(madenlerKapatBtn, game.children.length - 1);
game.setChildIndex(madenlerKapatBtnTxt, game.children.length - 1);
if (typeof madenlerKapatBtnIcon !== "undefined") game.setChildIndex(madenlerKapatBtnIcon, game.children.length - 1);
game.setChildIndex(madenDepoPanel, game.children.length - 1);
game.setChildIndex(madenDepoStockTxt, game.children.length - 1);
for (var i = 0; i < 6; i++) {
if (!mines || !mines[i]) continue;
game.setChildIndex(madenlerMineImages[i], game.children.length - 1);
game.setChildIndex(madenlerMineLabels[i], game.children.length - 1);
game.setChildIndex(madenlerMineLevelTxts[i], game.children.length - 1);
game.setChildIndex(madenlerMineProdTxts[i], game.children.length - 1);
game.setChildIndex(madenlerMineUpgradeBtns[i], game.children.length - 1);
game.setChildIndex(madenlerMineUpgradeBtnTxts[i], game.children.length - 1);
if (madenlerMineAutoBtns[i]) game.setChildIndex(madenlerMineAutoBtns[i], game.children.length - 1);
if (madenlerMineAutoTxts[i]) game.setChildIndex(madenlerMineAutoTxts[i], game.children.length - 1);
}
if (typeof magazaBtn !== "undefined" && magazaBtn.parent === game) game.setChildIndex(magazaBtn, 0);
if (typeof magazaBtnTxt !== "undefined" && magazaBtnTxt.parent === game) game.setChildIndex(magazaBtnTxt, 0);
if (typeof yatirimBtn !== "undefined" && yatirimBtn.parent === game) game.setChildIndex(yatirimBtn, 0);
if (typeof yatirimBtnTxt !== "undefined" && yatirimBtnTxt.parent === game) game.setChildIndex(yatirimBtnTxt, 0);
if (typeof bankBtn !== "undefined" && bankBtn.parent === game) game.setChildIndex(bankBtn, 0);
if (typeof bankBtnTxt !== "undefined" && bankBtnTxt.parent === game) game.setChildIndex(bankBtnTxt, 0);
if (typeof soundBtn !== "undefined" && soundBtn.parent === game) game.setChildIndex(soundBtn, 0);
if (typeof soundBtnTxt !== "undefined" && soundBtnTxt.parent === game) game.setChildIndex(soundBtnTxt, 0);
if (typeof newPageBtn !== "undefined" && newPageBtn.parent === game) game.setChildIndex(newPageBtn, 0);
if (typeof newPageBtnTxt !== "undefined" && newPageBtnTxt.parent === game) game.setChildIndex(newPageBtnTxt, 0);
if (typeof madenlerBtn !== "undefined" && madenlerBtn.parent === game) game.setChildIndex(madenlerBtn, 0);
if (typeof madenlerBtnTxt !== "undefined" && madenlerBtnTxt.parent === game) game.setChildIndex(madenlerBtnTxt, 0);
if (typeof madenlerBtnMineImg !== "undefined" && madenlerBtnMineImg.parent === game) game.setChildIndex(madenlerBtnMineImg, 0);
if (typeof languagesBtn !== "undefined" && languagesBtn.parent === game) game.setChildIndex(languagesBtn, 0);
if (typeof languagesBtnTxt !== "undefined" && languagesBtnTxt.parent === game) game.setChildIndex(languagesBtnTxt, 0);
if (typeof infoBtn !== "undefined" && infoBtn.parent === game) game.setChildIndex(infoBtn, 0);
if (typeof infoBtnTxt !== "undefined" && infoBtnTxt.parent === game) game.setChildIndex(infoBtnTxt, 0);
if (typeof howToBtn !== "undefined" && howToBtn.parent === game) game.setChildIndex(howToBtn, 0);
if (typeof howToBtnTxt !== "undefined" && howToBtnTxt.parent === game) game.setChildIndex(howToBtnTxt, 0);
}
};
// --- New Page Panel (initially hidden) ---
// --- New Page Panel (initially hidden) ---
var newPagePanelWidth = panelWidth;
var newPagePanelHeight = panelHeight;
var newPagePanelX = Math.floor((2048 - newPagePanelWidth) / 2);
var newPagePanelY = Math.floor((2732 - newPagePanelHeight) / 2);
// Çalışanlar paneli açıldığında tüm butonları devre dışı bırakacak overlay (başta görünmez)
var newPageOverlay = LK.getAsset('button', {
anchorX: 0,
anchorY: 0,
width: 2048,
height: 2732,
x: 0,
y: 0
});
newPageOverlay.visible = false;
newPageOverlay.alpha = 0.65; // Yarı saydam
game.addChild(newPageOverlay);
var newPagePanel = LK.getAsset('button', {
anchorX: 0,
anchorY: 0,
width: newPagePanelWidth,
height: newPagePanelHeight,
x: newPagePanelX,
y: newPagePanelY
});
newPagePanel.visible = false;
game.addChild(newPagePanel);
// Title at top center
var newPagePanelTitle = new Text2('Çalışanlar', {
size: 64,
fill: '#fff'
});
newPagePanelTitle.anchor.set(0.5, 0);
newPagePanelTitle.x = 2048 / 2;
newPagePanelTitle.y = newPagePanelY + 40;
newPagePanelTitle.visible = false;
game.addChild(newPagePanelTitle);
// Remove old panel text, add a subtle subtitle at top center under title
var newPagePanelText = new Text2('Çalışanlar', {
size: 40,
fill: '#bff',
lineHeight: 52 // madenlerPanelText ile aynı satır aralığı
});
newPagePanelText.anchor.set(0.5, 0);
newPagePanelText.x = 2048 / 2;
newPagePanelText.y = newPagePanelTitle.y + newPagePanelTitle.height + 10;
newPagePanelText.visible = false;
game.addChild(newPagePanelText);
// Kapat butonu
// --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli ---
var newPageKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
// %100 büyüklük (120*2)
height: 120,
// %100 büyüklük (60*2)
x: newPagePanel.x + newPagePanelWidth - 120,
y: newPagePanel.y + 60,
color: 0xffffff,
borderColor: 0xff2222,
borderWidth: 8
});
newPageKapatBtn.visible = false;
game.addChild(newPageKapatBtn);
// Kapat butonu için X simgesi
var newPageKapatBtnIcon = new Text2("\u2716", {
size: 54,
fill: '#ff2222'
});
newPageKapatBtnIcon.anchor.set(1, 0.5);
newPageKapatBtnIcon.x = newPageKapatBtn.x - 40;
newPageKapatBtnIcon.y = newPageKapatBtn.y;
newPageKapatBtnIcon.visible = false;
game.addChild(newPageKapatBtnIcon);
var newPageKapatBtnTxt = new Text2('Kapat', {
size: 64,
fill: '#ff2222'
});
newPageKapatBtnTxt.anchor.set(0.5, 0.5);
newPageKapatBtnTxt.x = newPageKapatBtn.x;
newPageKapatBtnTxt.y = newPageKapatBtn.y;
newPageKapatBtnTxt.visible = false;
game.addChild(newPageKapatBtnTxt);
// --- Madenler Panel (initially hidden, same size as newPagePanel) ---
var madenlerPanel = LK.getAsset('button', {
anchorX: 0,
anchorY: 0,
width: panelWidth,
height: panelHeight,
x: Math.floor((2048 - panelWidth) / 2),
y: Math.floor((2732 - panelHeight) / 2)
});
madenlerPanel.visible = false;
game.addChild(madenlerPanel);
// Title at top center
var madenlerPanelTitle = new Text2('Madenler', {
size: 64,
fill: '#fff'
});
madenlerPanelTitle.anchor.set(0.5, 0);
madenlerPanelTitle.x = 2048 / 2;
madenlerPanelTitle.y = newPagePanelY + 40;
madenlerPanelTitle.visible = false;
game.addChild(madenlerPanelTitle);
// Subtitle
var madenlerPanelText = new Text2('Madenler', {
size: 40,
fill: '#bff'
});
madenlerPanelText.anchor.set(0.5, 0);
madenlerPanelText.x = 2048 / 2;
madenlerPanelText.y = madenlerPanelTitle.y + madenlerPanelTitle.height + 10;
madenlerPanelText.visible = false;
game.addChild(madenlerPanelText);
// Kapat butonu
// --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli ---
var madenlerKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
height: 120,
x: madenlerPanel.x + madenlerPanel.width - 120,
y: madenlerPanel.y + 60,
color: 0xffffff,
borderColor: 0xff2222,
borderWidth: 8
});
madenlerKapatBtn.visible = false;
game.addChild(madenlerKapatBtn);
// Add an icon (Unicode heavy multiplication X) to the left of the text
var madenlerKapatBtnIcon = new Text2("\u2716", {
size: 54,
fill: '#ff2222'
});
madenlerKapatBtnIcon.anchor.set(1, 0.5);
madenlerKapatBtnIcon.x = madenlerKapatBtn.x - 40;
madenlerKapatBtnIcon.y = madenlerKapatBtn.y;
madenlerKapatBtnIcon.visible = false;
game.addChild(madenlerKapatBtnIcon);
var madenlerKapatBtnTxt = new Text2('Kapat', {
size: 64,
fill: '#ff2222'
});
madenlerKapatBtnTxt.anchor.set(0.5, 0.5);
madenlerKapatBtnTxt.x = madenlerKapatBtn.x;
madenlerKapatBtnTxt.y = madenlerKapatBtn.y;
madenlerKapatBtnTxt.visible = false;
game.addChild(madenlerKapatBtnTxt);
// --- Madenler Panel: Show mines and their info ---
var madenlerMineImages = [];
var madenlerMineLabels = [];
var madenlerMineLevelTxts = [];
var madenlerMineProdTxts = [];
var madenlerMineUpgradeBtns = [];
var madenlerMineUpgradeBtnTxts = [];
// Ava: Add auto-produce buttons and texts for Madenler panel
var madenlerMineAutoBtns = [];
var madenlerMineAutoTxts = [];
// --- Ava: Add maden depo stock area to Madenler panel ---
var madenDepoPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0,
width: 420,
height: 90,
x: madenlerPanel.x + madenlerPanel.width / 2,
y: madenlerPanelText.y + madenlerPanelText.height + 10
});
madenDepoPanel.visible = false;
game.addChild(madenDepoPanel);
var madenDepoStockTxt = new Text2('', {
size: 36,
fill: '#ffb'
});
madenDepoStockTxt.anchor.set(0.5, 0.5);
madenDepoStockTxt.x = madenDepoPanel.x;
madenDepoStockTxt.y = madenDepoPanel.y + madenDepoPanel.height / 2;
madenDepoStockTxt.visible = false;
game.addChild(madenDepoStockTxt);
// Helper to update maden depo stock text
function updateMadenDepoStockTxt() {
madenDepoStockTxt.setText('Bakır: ' + rawMaterials.copper + ' | Silikon: ' + rawMaterials.silicon + ' | Demir: ' + rawMaterials.iron + ' | Gümüş: ' + rawMaterials.silver + ' | Nikel: ' + rawMaterials.nikel + ' | Altın: ' + rawMaterials.gold);
}
// Wait until 'mines' is defined and has at least 6 elements before creating Madenler panel UI
LK.setTimeout(function () {
if (!mines || !Array.isArray(mines) || mines.length < 6 || !mines[0] || !mines[1] || !mines[2] || !mines[3] || !mines[4] || !mines[5]) {
// Try again next frame if mines are not ready or not an array or not enough elements or any mine is missing
LK.setTimeout(arguments.callee, 1);
return;
}
for (var i = 0; i < 6; i++) {
// Defensive: skip this iteration if mines is not defined or mines[i] is not defined
if (!mines || !Array.isArray(mines) || !mines[i]) continue;
// --- Ava: 3'lü sıra ve ortalı, hizalı layout için yeni grid hesaplama ---
// 3 sütun, 2 satır, ortalı ve eşit aralıklı
var colCount = 3;
var rowCount = 2;
var col = i % colCount;
var row = Math.floor(i / colCount);
// Panelin kullanılabilir genişliği ve yüksekliği
var usableWidth = newPagePanelWidth;
var usableHeight = newPagePanelHeight - (madenDepoPanel.y + madenDepoPanel.height + 32 - newPagePanelY) - 60; // depo panelinden aşağısı
var gridStartY = madenDepoPanel.y + madenDepoPanel.height + 32;
var cellWidth = usableWidth / colCount;
var cellHeight = usableHeight / rowCount;
// Her hücrenin ortası
var mx = madenlerPanel.x + cellWidth * (col + 0.5);
var baseY = gridStartY + cellHeight * row + 20; // 20px üst boşluk
var y = baseY;
var lineGap = 10;
var elemGap = 16;
var oreType = oreTypes[i];
// Label (top, above mine image)
var label = new Text2(oreType.charAt(0).toUpperCase() + oreType.slice(1), {
size: 48,
fill: '#fff'
});
label.anchor.set(0.5, 0);
label.x = mx;
label.y = y;
label.visible = false;
game.addChild(label);
madenlerMineLabels.push(label);
y += label.height + 4;
// --- Ava: Show mine stock count directly above the mine image ---
var stockTxt = new Text2('' + rawMaterials[oreType], {
size: 38,
fill: '#ffb'
});
stockTxt.anchor.set(0.5, 1); // center horizontally, bottom aligned
stockTxt.x = mx;
stockTxt.y = y + 8; // 8px below label
stockTxt.visible = false;
game.addChild(stockTxt);
if (!window.madenlerMineStockTxts) window.madenlerMineStockTxts = [];
window.madenlerMineStockTxts[i] = stockTxt;
y += 8 + 8; // 8px gap below stockTxt
// Mine image (unique for each ore type)
var mineImg = LK.getAsset('mine_' + oreType, {
anchorX: 0.5,
anchorY: 0.5,
width: 180,
height: 180,
x: mx,
y: y + 90 // center mine image at y
});
mineImg.visible = false;
game.addChild(mineImg);
madenlerMineImages.push(mineImg);
// Ava: Maden resmine tıklayınca maden üretimi yap
(function (idx, mineImgRef) {
mineImgRef.down = function (x, y, obj) {
if (!madenlerPanel.visible) return;
if (!mines || !mines[idx]) return;
if (yatirimPanel && yatirimPanel.visible) return;
var m = mines[idx];
rawMaterials[m.type] += m.production;
if (typeof updateRawText === "function") updateRawText();
tween(mineImgRef, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(mineImgRef, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
};
})(i, mineImg);
y = mineImg.y + 90 + elemGap; // bottom of mine image + gap
// Ore icon (below mine image)
var oreImg = LK.getAsset('ore_' + oreType, {
anchorX: 0.5,
anchorY: 0.5,
width: 80,
height: 80,
x: mx,
y: y
});
oreImg.visible = false;
game.addChild(oreImg);
y += 40 + elemGap; // half ore icon + gap
// Level text
var levelTxt = new Text2('Seviye: ' + mines[i].level, {
size: 38,
fill: '#ffb'
});
levelTxt.anchor.set(0.5, 0);
levelTxt.x = mx;
levelTxt.y = y;
levelTxt.visible = false;
game.addChild(levelTxt);
madenlerMineLevelTxts.push(levelTxt);
y += levelTxt.height + lineGap;
// Production text (hidden, but kept for layout consistency)
var prodTxt = new Text2('', {
size: 38,
fill: '#bff',
lineHeight: 18 // Satır boşluğunu azalt, görünmez olduğu için küçük tut
});
prodTxt.anchor.set(0.5, 0);
prodTxt.x = mx;
prodTxt.y = y;
prodTxt.visible = false; // Her zaman görünmez
game.addChild(prodTxt);
madenlerMineProdTxts.push(prodTxt);
y += 18 + elemGap; // Satır boşluğunu azalt
// Upgrade button
var upgradeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 180,
height: 70,
x: mx,
y: y + 35 // center button
});
upgradeBtn.visible = false;
game.addChild(upgradeBtn);
var upgradeBtnTxt = new Text2('Yükselt\n₺' + mines[i].upgradeCost, {
size: 36,
fill: '#fff'
});
upgradeBtnTxt.anchor.set(0.5, 0.5);
upgradeBtnTxt.x = mx;
upgradeBtnTxt.y = upgradeBtn.y;
upgradeBtnTxt.visible = false;
game.addChild(upgradeBtnTxt);
madenlerMineUpgradeBtns.push(upgradeBtn);
madenlerMineUpgradeBtnTxts.push(upgradeBtnTxt);
// Move Oto Üret button 1 row (1x lineGap + 1x elemGap + 1x 38px) further down below the upgrade button
y = upgradeBtn.y + upgradeBtn.height / 2 + elemGap + 10;
y += (levelTxt.height + lineGap) * 1 + elemGap * 1; // 1 satır aşağıya çıkar
// Auto-produce button
var autoBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 180,
height: 70,
x: mx,
y: y
});
autoBtn.visible = false;
game.addChild(autoBtn);
var autoMineCost = (i + 1) * 500;
var autoTxt = new Text2('Oto Üret: Kapalı\n₺' + autoMineCost, {
size: 36,
fill: '#fff',
lineHeight: 52 // Satır aralığını artır (default 36, 52 ile daha fazla boşluk)
});
autoTxt.anchor.set(0.5, 0.5);
autoTxt.x = mx;
autoTxt.y = autoBtn.y + 10; // 10px aşağı kaydır
autoTxt.visible = false;
game.addChild(autoTxt);
madenlerMineAutoBtns.push(autoBtn);
madenlerMineAutoTxts.push(autoTxt);
// Closure for correct index
(function (idx, autoBtn, autoTxt, autoMineCost) {
autoBtn.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
if (!mineAutoProduce[idx]) {
if (money >= autoMineCost) {
money -= autoMineCost;
updateMoneyText && updateMoneyText();
mineAutoProduce[idx] = true;
autoTxt.setText('Oto Üret: Açık');
} else {
tween(autoBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(autoBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
}
// Do not allow disabling after purchase
};
})(i, autoBtn, autoTxt, autoMineCost);
// Upgrade logic
(function (idx) {
upgradeBtn.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
var m = mines[idx];
if (money >= m.upgradeCost) {
money -= m.upgradeCost;
m.upgrade();
madenlerMineLevelTxts[idx].setText('Seviye: ' + m.level);
madenlerMineProdTxts[idx].setText('Üretim: ' + m.production);
madenlerMineUpgradeBtnTxts[idx].setText('Yükselt\n₺' + m.upgradeCost);
updateMoneyText && updateMoneyText();
} else {
tween(upgradeBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(upgradeBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
})(i);
}
}, 1);
// Yeni sayfa butonuna tıklanınca paneli aç
if (typeof newPageBtn !== "undefined" && newPageBtn) {
newPageBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = true;
newPageOverlay.visible = true;
newPagePanel.visible = true;
newPagePanelTitle.visible = true;
newPagePanelText.visible = true;
newPageKapatBtn.visible = true;
newPageKapatBtnTxt.visible = true;
// Panel arkasındaki overlay'i göstererek tüm ekranı devre dışı bırak
fullscreenOverlay.visible = true;
// Hide all homepage buttons/UI (same as Madenler panel logic)
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
// Prevent hiding Store3/Store4 purchase buttons if Mağazalar panel is open
if (magazalarPanel && magazalarPanel.visible) {
if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") {
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
}
if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") {
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
}
}
// Paneli en öne getir, overlay'i panelden hemen arkaya al
if (game.setChildIndex) {
game.setChildIndex(fullscreenOverlay, game.children.length - 1);
game.setChildIndex(newPageOverlay, game.children.length - 1);
game.setChildIndex(newPagePanel, game.children.length - 1);
game.setChildIndex(newPagePanelTitle, game.children.length - 1);
game.setChildIndex(newPagePanelText, game.children.length - 1);
game.setChildIndex(newPageKapatBtn, game.children.length - 1);
game.setChildIndex(newPageKapatBtnTxt, game.children.length - 1);
if (typeof newPageKapatBtnIcon !== "undefined") game.setChildIndex(newPageKapatBtnIcon, game.children.length - 1);
}
// Hide all game children except overlay and panel content (like Madenler panel)
for (var i = 0; i < game.children.length; i++) {
var child = game.children[i];
if (child !== fullscreenOverlay && child !== newPageOverlay && child !== newPagePanel && child !== newPagePanelTitle && child !== newPagePanelText && child !== newPageKapatBtn && child !== newPageKapatBtnTxt) {
child._oldVisible = child.visible;
child.visible = false;
}
}
};
}
// Madenler butonuna tıklanınca paneli aç
madenlerBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
fullscreenOverlay.visible = true;
madenlerPanel.visible = true;
madenlerPanelTitle.visible = true;
madenlerPanelText.visible = true;
madenlerKapatBtn.visible = true;
madenlerKapatBtnIcon.visible = true;
madenlerKapatBtnTxt.visible = true;
// Panel arkasındaki overlay'i göstererek tüm ekranı devre dışı bırak
fullscreenOverlay.visible = true;
// Ava: Show and update maden depo stock area
madenDepoPanel.visible = true;
madenDepoStockTxt.visible = true;
updateMadenDepoStockTxt();
// Hide all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
// Prevent hiding Store3/Store4 purchase buttons if Mağazalar panel is open
if (magazalarPanel && magazalarPanel.visible) {
if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") {
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
}
if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") {
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
}
}
// Show all mine UIs
for (var i = 0; i < 6; i++) {
// Defensive: skip if mines or mines[i] is not defined
if (!mines || !mines[i]) continue;
madenlerMineImages[i].visible = true;
madenlerMineLabels[i].visible = true;
madenlerMineLevelTxts[i].visible = true;
// Hide production amount text
madenlerMineProdTxts[i].visible = false;
madenlerMineUpgradeBtns[i].visible = true;
madenlerMineUpgradeBtnTxts[i].visible = true;
// Ava: Show stock count text above each mine image
if (window.madenlerMineStockTxts && window.madenlerMineStockTxts[i]) {
window.madenlerMineStockTxts[i].visible = true;
// Update stock count
var oreType = oreTypes[i];
window.madenlerMineStockTxts[i].setText('' + rawMaterials[oreType]);
}
// Ava: Show auto-produce button and text for each mine
if (madenlerMineAutoBtns[i]) madenlerMineAutoBtns[i].visible = true;
if (madenlerMineAutoTxts[i]) {
// Update text to reflect current state
if (mineAutoProduce[i]) {
madenlerMineAutoTxts[i].setText('Oto Üret: Açık');
} else {
var autoMineCost = (i + 1) * 500;
madenlerMineAutoTxts[i].setText('Oto Üret: Kapalı\n₺' + autoMineCost);
}
madenlerMineAutoTxts[i].visible = true;
// Satır aralığını ve konumunu tekrar ayarla
madenlerMineAutoTxts[i].lineHeight = 52;
madenlerMineAutoTxts[i].y = madenlerMineAutoBtns[i].y + 10;
}
// Update texts in case level/production changed
madenlerMineLevelTxts[i].setText('Seviye: ' + mines[i].level);
madenlerMineProdTxts[i].setText('Üretim: ' + mines[i].production);
madenlerMineUpgradeBtnTxts[i].setText('Yükselt\n₺' + mines[i].upgradeCost);
}
// Paneli en öne getir
if (game.setChildIndex) {
game.setChildIndex(madenlerPanel, game.children.length - 1);
game.setChildIndex(madenlerPanelTitle, game.children.length - 1);
game.setChildIndex(madenlerPanelText, game.children.length - 1);
game.setChildIndex(madenlerKapatBtn, game.children.length - 1);
game.setChildIndex(madenlerKapatBtnTxt, game.children.length - 1);
if (typeof madenlerKapatBtnIcon !== "undefined") game.setChildIndex(madenlerKapatBtnIcon, game.children.length - 1);
// Ava: Bring maden depo panel and text to front
game.setChildIndex(madenDepoPanel, game.children.length - 1);
game.setChildIndex(madenDepoStockTxt, game.children.length - 1);
for (var i = 0; i < 6; i++) {
if (!mines || !mines[i]) continue;
game.setChildIndex(madenlerMineImages[i], game.children.length - 1);
game.setChildIndex(madenlerMineLabels[i], game.children.length - 1);
game.setChildIndex(madenlerMineLevelTxts[i], game.children.length - 1);
game.setChildIndex(madenlerMineProdTxts[i], game.children.length - 1);
game.setChildIndex(madenlerMineUpgradeBtns[i], game.children.length - 1);
game.setChildIndex(madenlerMineUpgradeBtnTxts[i], game.children.length - 1);
// Ava: Bring auto-produce button and text to front
if (madenlerMineAutoBtns[i]) game.setChildIndex(madenlerMineAutoBtns[i], game.children.length - 1);
if (madenlerMineAutoTxts[i]) game.setChildIndex(madenlerMineAutoTxts[i], game.children.length - 1);
}
// Ava: Move homepage buttons behind the panel
if (typeof magazaBtn !== "undefined" && magazaBtn.parent === game) game.setChildIndex(magazaBtn, 0);
if (typeof magazaBtnTxt !== "undefined" && magazaBtnTxt.parent === game) game.setChildIndex(magazaBtnTxt, 0);
if (typeof yatirimBtn !== "undefined" && yatirimBtn.parent === game) game.setChildIndex(yatirimBtn, 0);
if (typeof yatirimBtnTxt !== "undefined" && yatirimBtnTxt.parent === game) game.setChildIndex(yatirimBtnTxt, 0);
if (typeof bankBtn !== "undefined" && bankBtn.parent === game) game.setChildIndex(bankBtn, 0);
if (typeof bankBtnTxt !== "undefined" && bankBtnTxt.parent === game) game.setChildIndex(bankBtnTxt, 0);
if (typeof soundBtn !== "undefined" && soundBtn.parent === game) game.setChildIndex(soundBtn, 0);
if (typeof soundBtnTxt !== "undefined" && soundBtnTxt.parent === game) game.setChildIndex(soundBtnTxt, 0);
if (typeof newPageBtn !== "undefined" && newPageBtn.parent === game) game.setChildIndex(newPageBtn, 0);
if (typeof newPageBtnTxt !== "undefined" && newPageBtnTxt.parent === game) game.setChildIndex(newPageBtnTxt, 0);
if (typeof madenlerBtn !== "undefined" && madenlerBtn.parent === game) game.setChildIndex(madenlerBtn, 0);
if (typeof madenlerBtnTxt !== "undefined" && madenlerBtnTxt.parent === game) game.setChildIndex(madenlerBtnTxt, 0);
if (typeof languagesBtn !== "undefined" && languagesBtn.parent === game) game.setChildIndex(languagesBtn, 0);
if (typeof languagesBtnTxt !== "undefined" && languagesBtnTxt.parent === game) game.setChildIndex(languagesBtnTxt, 0);
if (typeof infoBtn !== "undefined" && infoBtn.parent === game) game.setChildIndex(infoBtn, 0);
if (typeof infoBtnTxt !== "undefined" && infoBtnTxt.parent === game) game.setChildIndex(infoBtnTxt, 0);
if (typeof howToBtn !== "undefined" && howToBtn.parent === game) game.setChildIndex(howToBtn, 0);
if (typeof howToBtnTxt !== "undefined" && howToBtnTxt.parent === game) game.setChildIndex(howToBtnTxt, 0);
}
};
// Paneli kapatmak için kapat butonu
newPageKapatBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = false;
newPageOverlay.visible = false;
newPagePanel.visible = false;
newPagePanelTitle.visible = false;
newPagePanelText.visible = false;
newPageKapatBtn.visible = false;
newPageKapatBtnTxt.visible = false;
// Panel arkasındaki overlay'i gizle
fullscreenOverlay.visible = false;
// Restore all game children visibility except overlay and panel content (like Madenler panel)
for (var i = 0; i < game.children.length; i++) {
var child = game.children[i];
if (child !== fullscreenOverlay && child !== newPageOverlay && child !== newPagePanel && child !== newPagePanelTitle && child !== newPagePanelText && child !== newPageKapatBtn && child !== newPageKapatBtnTxt) {
if (typeof child._oldVisible !== "undefined") {
child.visible = child._oldVisible;
delete child._oldVisible;
} else {
child.visible = true;
}
}
}
};
// Madenler panelini kapatmak için kapat butonu
madenlerKapatBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = false;
madenlerPanel.visible = false;
madenlerPanelTitle.visible = false;
madenlerPanelText.visible = false;
madenlerKapatBtn.visible = false;
madenlerKapatBtnIcon.visible = false;
madenlerKapatBtnTxt.visible = false;
// Panel arkasındaki overlay'i gizle
fullscreenOverlay.visible = false;
// Ava: Hide maden depo stock area
madenDepoPanel.visible = false;
madenDepoStockTxt.visible = false;
// Show all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = true;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true;
if (typeof bankBtn !== "undefined") bankBtn.visible = true;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true;
if (typeof soundBtn !== "undefined") soundBtn.visible = true;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = true;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true;
if (typeof madenlerBtnMineImg !== "undefined") madenlerBtnMineImg.visible = true;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = true;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true;
if (typeof infoBtn !== "undefined") infoBtn.visible = true;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true;
if (typeof howToBtn !== "undefined") howToBtn.visible = true;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true;
for (var i = 0; i < 6; i++) {
// Defensive: skip if mines or mines[i] is not defined
if (!mines || !mines[i]) continue;
madenlerMineImages[i].visible = false;
madenlerMineLabels[i].visible = false;
madenlerMineLevelTxts[i].visible = false;
madenlerMineProdTxts[i].visible = false;
madenlerMineUpgradeBtns[i].visible = false;
madenlerMineUpgradeBtnTxts[i].visible = false;
// Ava: Hide stock count text above each mine image
if (window.madenlerMineStockTxts && window.madenlerMineStockTxts[i]) window.madenlerMineStockTxts[i].visible = false;
// Ava: Hide auto-produce button and text for each mine
if (madenlerMineAutoBtns[i]) madenlerMineAutoBtns[i].visible = false;
if (madenlerMineAutoTxts[i]) madenlerMineAutoTxts[i].visible = false;
}
};
// INFO butonunu Yatırım butonunun altına ekle
var infoBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 54
});
infoBtn.x = yatirimBtn.x;
infoBtn.y = yatirimBtn.y + 70;
LK.gui.top.addChild(infoBtn);
var infoBtnTxt = new Text2('INFO', {
size: 28,
fill: '#fff'
});
infoBtnTxt.anchor.set(0.5, 0.5);
infoBtnTxt.x = infoBtn.x;
infoBtnTxt.y = infoBtn.y;
LK.gui.top.addChild(infoBtnTxt);
// "Nasıl Oynanır" butonunu INFO butonunun ALTINA ekle
var howToBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 220,
height: 54
});
howToBtn.x = infoBtn.x;
howToBtn.y = infoBtn.y + infoBtn.height / 2 + howToBtn.height / 2 + 20;
LK.gui.top.addChild(howToBtn);
var howToBtnTxt = new Text2('Nasıl Oynanır', {
size: 28,
fill: '#fff'
});
howToBtnTxt.anchor.set(0.5, 0.5);
howToBtnTxt.x = howToBtn.x;
howToBtnTxt.y = howToBtn.y;
LK.gui.top.addChild(howToBtnTxt);
// Languages butonunu "Nasıl Oynanır" butonunun altına ekle
var languagesBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 54
});
languagesBtn.x = howToBtn.x;
languagesBtn.y = howToBtn.y + howToBtn.height / 2 + languagesBtn.height / 2 + 20;
LK.gui.top.addChild(languagesBtn);
var languagesBtnTxt = new Text2('Languages', {
size: 28,
fill: '#fff'
});
languagesBtnTxt.anchor.set(0.5, 0.5);
languagesBtnTxt.x = languagesBtn.x;
languagesBtnTxt.y = languagesBtn.y;
LK.gui.top.addChild(languagesBtnTxt);
// --- Sound Toggle Icon Button ---
// Use a simple colored box as icon: green for sound on, red for sound off
var soundOnColor = 0x83de44;
var soundOffColor = 0xd83318;
// Sound button is created after languagesBtn to ensure languagesBtn is defined
var soundBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 70,
height: 70
});
soundBtn.x = languagesBtn.x - languagesBtn.width / 2 - 70 / 2 - 20;
soundBtn.y = languagesBtn.y;
LK.gui.top.addChild(soundBtn);
// Sound icon state
var isSoundOn = true;
soundBtn.tint = soundOnColor;
// Optional: Add a speaker icon text
var soundBtnTxt = new Text2("\uD83D\uDD0A", {
size: 38,
fill: '#fff'
});
soundBtnTxt.anchor.set(0.5, 0.5);
soundBtnTxt.x = soundBtn.x;
soundBtnTxt.y = soundBtn.y;
LK.gui.top.addChild(soundBtnTxt);
// Sound toggle logic
soundBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
isSoundOn = !isSoundOn;
if (isSoundOn) {
soundBtn.tint = soundOnColor;
soundBtnTxt.setText("\uD83D\uDD0A"); // Speaker
// Resume music
LK.playMusic('ArkaplanMuzik', {
fade: {
start: 0,
end: 1,
duration: 300
}
});
} else {
soundBtn.tint = soundOffColor;
soundBtnTxt.setText("\uD83D\uDD07"); // Muted speaker
// Stop music
LK.stopMusic();
}
// Animate for feedback
tween(soundBtn, {
scaleX: 1.15,
scaleY: 1.15
}, {
duration: 80,
onFinish: function onFinish() {
tween(soundBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
};
// "Nasıl Oynanır" butonuna tıklanınca info panelini aç
howToBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
// Butona animasyon ekle
tween(howToBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(howToBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
fullscreenOverlay.visible = true;
infoPanel.visible = true;
infoPanelTitle.visible = true;
infoPanelText.visible = true;
infoKapatBtn.visible = true;
infoKapatBtnTxt.visible = true;
// Hide all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
// Prevent hiding Store3/Store4 purchase buttons if Mağazalar panel is open
if (magazalarPanel && magazalarPanel.visible) {
if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") {
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
}
if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") {
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
}
}
// Paneli en öne getir
if (game.setChildIndex) {
game.setChildIndex(fullscreenOverlay, game.children.length - 1);
game.setChildIndex(infoPanel, game.children.length - 1);
game.setChildIndex(infoPanelTitle, game.children.length - 1);
game.setChildIndex(infoPanelText, game.children.length - 1);
game.setChildIndex(infoKapatBtn, game.children.length - 1);
game.setChildIndex(infoKapatBtnTxt, game.children.length - 1);
if (typeof infoKapatBtnIcon !== "undefined") game.setChildIndex(infoKapatBtnIcon, game.children.length - 1);
}
};
// INFO panel (açılır pencere) ekle
// Create the infoPanelText first to measure its width
var infoPanelText = new Text2('Bu oyunda amacınız fabrikalar kurarak bilgisayar parçaları üretmek ve mağazada satarak para kazanmaktır.\n\n' + '- Madenlerden ham madde üretin.\n' + '- Fabrikalarda bilgisayar parçaları üretin.\n' + '- Mağazada ve internetten satış yapın.\n' + '- Yatırım ve banka özelliklerini kullanın.\n\n' + 'İyi oyunlar!', {
size: 40,
fill: '#fff'
});
infoPanelText.anchor.set(0.5, 0.5);
// Calculate width based on text width, add padding
var infoPanelTextWidth = infoPanelText.width;
var infoPanelTextHeight = infoPanelText.height;
var infoPanelWidth = Math.max(700, infoPanelTextWidth + 120); // min 700, 60px padding each side
var infoPanelHeight = Math.max(500, infoPanelTextHeight + 120); // min 500, 60px padding top/bottom
// Sol üstteki ayar/menu butonunun altına hizala
// Sol üstte platform menüsü 100x100 px alanı kaplar, bu alanın hemen altına hizala
var infoPanelX = 60 + infoPanelWidth / 2; // 60px padding from left
var infoPanelY = 100 + 40 + infoPanelHeight / 2; // 100px platform menu + 40px padding
var infoPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: panelWidth,
height: panelHeight,
x: panelX,
y: panelY
});
infoPanel.visible = false;
game.addChild(infoPanel);
var infoPanelTitle = new Text2('INFO', {
size: 40,
fill: '#fff'
});
infoPanelTitle.anchor.set(0.5, 0);
// Panelin üst kenarına hizala
infoPanelTitle.x = infoPanel.x;
infoPanelTitle.y = infoPanel.y - infoPanel.height / 2 + 30;
infoPanelTitle.visible = false;
game.addChild(infoPanelTitle);
// Reposition infoPanelText to center in the new panel
infoPanelText.x = infoPanel.x;
infoPanelText.y = infoPanel.y + 10;
infoPanelText.visible = false;
game.addChild(infoPanelText);
// INFO panel kapat butonu
// --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli ---
var infoKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
// %100 büyüklük (120*2)
height: 120,
// %100 büyüklük (60*2)
x: infoPanel.x + infoPanel.width / 2 - 120,
y: infoPanel.y - infoPanel.height / 2 + 60,
color: 0xffffff,
borderColor: 0xff2222,
borderWidth: 8
});
infoKapatBtn.visible = false;
game.addChild(infoKapatBtn);
// Kapat butonu için X simgesi
var infoKapatBtnIcon = new Text2("\u2716", {
size: 54,
fill: '#ff2222'
});
infoKapatBtnIcon.anchor.set(1, 0.5);
infoKapatBtnIcon.x = infoKapatBtn.x - 40;
infoKapatBtnIcon.y = infoKapatBtn.y;
infoKapatBtnIcon.visible = false;
game.addChild(infoKapatBtnIcon);
var infoKapatBtnTxt = new Text2('Kapat', {
size: 64,
fill: '#ff2222'
});
infoKapatBtnTxt.anchor.set(0.5, 0.5);
infoKapatBtnTxt.x = infoKapatBtn.x;
infoKapatBtnTxt.y = infoKapatBtn.y;
infoKapatBtnTxt.visible = false;
game.addChild(infoKapatBtnTxt);
// INFO butonuna tıklanınca paneli aç
infoBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
tween(infoBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(infoBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
infoPanel.visible = true;
infoPanelTitle.visible = true;
infoPanelText.visible = true;
infoKapatBtn.visible = true;
infoKapatBtnTxt.visible = true;
// Paneli en öne getir
if (game.setChildIndex) {
game.setChildIndex(infoPanel, game.children.length - 1);
game.setChildIndex(infoPanelTitle, game.children.length - 1);
game.setChildIndex(infoPanelText, game.children.length - 1);
game.setChildIndex(infoKapatBtn, game.children.length - 1);
game.setChildIndex(infoKapatBtnTxt, game.children.length - 1);
}
};
// INFO panel kapat butonu
infoKapatBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = false;
infoPanel.visible = false;
infoPanelTitle.visible = false;
infoPanelText.visible = false;
infoKapatBtn.visible = false;
infoKapatBtnTxt.visible = false;
// Show all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = true;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true;
if (typeof bankBtn !== "undefined") bankBtn.visible = true;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true;
if (typeof soundBtn !== "undefined") soundBtn.visible = true;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = true;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = true;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true;
if (typeof infoBtn !== "undefined") infoBtn.visible = true;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true;
if (typeof howToBtn !== "undefined") howToBtn.visible = true;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true;
};
// Languages panel (açılır pencere) ekle
var languagesPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: panelWidth,
height: panelHeight,
x: panelX,
y: panelY
});
languagesPanel.visible = false;
game.addChild(languagesPanel);
var languagesPanelTitle = new Text2('Languages', {
size: 40,
fill: '#fff'
});
languagesPanelTitle.anchor.set(0.5, 0);
languagesPanelTitle.x = languagesPanel.x;
languagesPanelTitle.y = languagesPanel.y - languagesPanel.height / 2 + 30;
languagesPanelTitle.visible = false;
game.addChild(languagesPanelTitle);
var languagesPanelText = new Text2('Select your language:', {
size: 32,
fill: '#fff'
});
languagesPanelText.anchor.set(0.5, 0.5);
languagesPanelText.x = languagesPanel.x;
languagesPanelText.y = languagesPanel.y - 60;
languagesPanelText.visible = false;
game.addChild(languagesPanelText);
// Language options
var languageOptions = [{
code: "tr",
label: "Türkçe"
}, {
code: "en",
label: "English"
}];
var languageBtns = [];
var languageBtnTxts = [];
var selectedLanguage = "tr"; // default
for (var i = 0; i < languageOptions.length; i++) {
var btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 220,
height: 60,
x: languagesPanel.x,
y: languagesPanel.y - 10 + i * 70
});
btn.visible = false;
game.addChild(btn);
languageBtns.push(btn);
var btnTxt = new Text2(languageOptions[i].label, {
size: 32,
fill: '#fff'
});
btnTxt.anchor.set(0.5, 0.5);
btnTxt.x = btn.x;
btnTxt.y = btn.y;
btnTxt.visible = false;
game.addChild(btnTxt);
languageBtnTxts.push(btnTxt);
// Closure for correct index
(function (idx) {
btn.down = function (x, y, obj) {
var _tr, _en;
// Animate button
tween(btn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(btn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
// Set selected language
selectedLanguage = languageOptions[idx].code;
// Visual feedback: highlight selected
for (var j = 0; j < languageBtns.length; j++) {
if (j === idx) {
languageBtns[j].tint = 0x83de44; // green highlight
} else {
languageBtns[j].tint = 0x222222;
}
}
// Optionally, update UI text to reflect language (demo only)
// You can add more logic here to actually change game language
// --- TRANSLATION INFRASTRUCTURE ---
// Ava: Add translation infrastructure and English translations for all game texts
// 1. Translation dictionary
var translations = {
tr: (_tr = {
"Mağaza": "Mağaza",
"Burada mağaza ile ilgili içerik veya açıklama eklenebilir.": "Burada mağaza ile ilgili içerik veya açıklama eklenebilir.",
"Muhasebe Bilgileri": "Muhasebe Bilgileri",
"Mevcut Stok (adet):": "Mevcut Stok (adet):",
"Kasadaki Para:": "Kasadaki Para:",
"Borç:": "Borç:",
"Kapat": "Kapat",
"Yatırım": "Yatırım",
"Yatırım - Popüler Coinler": "Yatırım - Popüler Coinler",
"Adet:": "Adet:",
"Maliyet:": "Maliyet:",
"Al": "Al",
"Sat": "Sat",
"Banka": "Banka",
"Borç Öde": "Borç Öde",
"Languages": "Languages",
"Select your language:": "Dilinizi seçin:",
"Türkçe": "Türkçe",
"English": "İngilizce",
"Deutsch": "Almanca",
"Français": "Fransızca",
"Español": "İspanyolca",
"Bakiye kullanım detayları yok": "Bakiye kullanım detayları yok",
"Coin Alım: -₺": "Coin Alım: -₺",
"Coin Satış: +₺": "Coin Satış: +₺",
"Borç Ödeme: -₺": "Borç Ödeme: -₺",
"Yatırım Harcama: -₺": "Yatırım Harcama: -₺",
"Fabrika Yükseltme: -₺": "Fabrika Yükseltme: -₺",
"Maden Yükseltme: -₺": "Maden Yükseltme: -₺",
"Mağaza Yükseltme: -₺": "Mağaza Yükseltme: -₺",
"İnternet Teklifi: -₺": "İnternet Teklifi: -₺",
"Toplu Satış: +₺": "Toplu Satış: +₺",
"Seviye:": "Seviye:",
"Kazanç: ₺": "Kazanç: ₺",
"Yükselt": "Yükselt",
"Üretim Süresi: -%": "Üretim Süresi: -%",
"Fabrika Yükseltme İndirimi: -%": "Fabrika Yükseltme İndirimi: -%",
"Tıkla: ₺": "Tıkla: ₺",
"Tüm Kazanç: +%": "Tüm Kazanç: +%",
"Oto Üret: Kapalı": "Oto Üret: Kapalı",
"Oto Üret: Açık": "Oto Üret: Açık",
"Maden Yükselt": "Maden Yükselt",
"ÜRET": "ÜRET",
"Aç": "Aç",
"Yükselt\n₺": "Yükselt\n₺",
"Mağaza Yükselt": "Mağaza Yükselt",
"Mağaza 2 Yükselt": "Mağaza 2 Yükselt",
"İNTERNET TEKLİFİ": "İNTERNET TEKLİFİ",
"Adet": "Adet",
"Toplam: ₺": "Toplam: ₺",
"Satın Al": "Satın Al",
"Süre doldu!": "Süre doldu!",
"Teklif tamamlandı!": "Teklif tamamlandı!",
"Yeni teklif: ": "Yeni teklif: ",
"dk": "dk",
"sn": "sn",
"TOPLU SATIŞ TEKLİFİ": "TOPLU SATIŞ TEKLİFİ",
"Stokta ürün yok": "Stokta ürün yok",
"Stok yetersiz": "Stok yetersiz"
}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_tr, "Sat", "Sat"), "Bakır: ", "Bakır: "), "Silikon: ", "Silikon: "), "Demir: ", "Demir: "), "Çalışan 1", "Çalışan 1"), "Çalışan 2", "Çalışan 2"), "Çalışan 3", "Çalışan 3"), "Çalışan 4", "Çalışan 4"), "Çalışan 5", "Çalışan 5"), "T\xFCm Kazan\xE7: +%", "Tüm Kazanç: +%"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_tr, "Geri ödeme: ", "Geri ödeme: "), "Borç: ₺", "Borç: ₺"), "MOUSE", "MOUSE"), "Aç\n₺", "Aç\n₺"), "Y\xFCkselt\n\u20BA", "Yükselt\n₺"), "Mağaza 2 Yükselt\n₺", "Mağaza 2 Yükselt\n₺"), "Mağaza Yükselt\n₺", "Mağaza Yükselt\n₺"), "Maden Yükselt\n₺", "Maden Yükselt\n₺"), "Oto Üret: Kapalı\n₺", "Oto Üret: Kapalı\n₺"), "Oto Üret: Açık\n₺", "Oto Üret: Açık\n₺"), _defineProperty(_defineProperty(_tr, "Üretim: ", "Üretim: "), " sn", " sn")),
en: (_en = {
"Mağaza": "Store",
"Burada mağaza ile ilgili içerik veya açıklama eklenebilir.": "You can add store-related content or description here.",
"Muhasebe Bilgileri": "Accounting Info",
"Mevcut Stok (adet):": "Current Stock (qty):",
"Kasadaki Para:": "Cash in Register:",
"Borç:": "Debt:",
"Kapat": "Close",
"Yatırım": "Investment",
"Yatırım - Popüler Coinler": "Investment - Popular Coins",
"Adet:": "Qty:",
"Maliyet:": "Cost:",
"Al": "Buy",
"Sat": "Sell",
"Banka": "Bank",
"Borç Öde": "Pay Debt",
"Languages": "Languages",
"Select your language:": "Select your language:",
"Türkçe": "Turkish",
"English": "English",
"Deutsch": "German",
"Français": "French",
"Español": "Spanish",
"Bakiye kullanım detayları yok": "No balance usage details",
"Coin Alım: -₺": "Coin Purchase: -₺",
"Coin Satış: +₺": "Coin Sale: +₺",
"Borç Ödeme: -₺": "Debt Payment: -₺",
"Yatırım Harcama: -₺": "Investment Expense: -₺",
"Fabrika Yükseltme: -₺": "Factory Upgrade: -₺",
"Maden Yükseltme: -₺": "Mine Upgrade: -₺",
"Mağaza Yükseltme: -₺": "Store Upgrade: -₺",
"İnternet Teklifi: -₺": "Internet Offer: -₺",
"Toplu Satış: +₺": "Bulk Sale: +₺",
"Seviye:": "Level:",
"Kazanç: ₺": "Earning: ₺",
"Yükselt": "Upgrade",
"Üretim Süresi: -%": "Production Time: -%",
"Fabrika Yükseltme İndirimi: -%": "Factory Upgrade Discount: -%",
"Tıkla: ₺": "Click: ₺",
"Tüm Kazanç: +%": "All Earnings: +%",
"Oto Üret: Kapalı": "Auto Prod: Off",
"Oto Üret: Açık": "Auto Prod: On",
"Maden Yükselt": "Upgrade Mine",
"ÜRET": "PRODUCE",
"Aç": "Unlock",
"Yükselt\n₺": "Upgrade\n₺",
"Mağaza Yükselt": "Upgrade Store",
"Mağaza 2 Yükselt": "Upgrade Store 2",
"İNTERNET TEKLİFİ": "INTERNET OFFER",
"Adet": "Qty",
"Toplam: ₺": "Total: ₺",
"Satın Al": "Buy",
"Süre doldu!": "Time's up!",
"Teklif tamamlandı!": "Offer completed!",
"Yeni teklif: ": "New offer: ",
"dk": "min",
"sn": "sec",
"TOPLU SATIŞ TEKLİFİ": "BULK SALE OFFER",
"Stokta ürün yok": "No product in stock",
"Stok yetersiz": "Insufficient stock"
}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, "Sat", "Sell"), "Bakır: ", "Copper: "), "Silikon: ", "Silicon: "), "Demir: ", "Iron: "), "Çalışan 1", "Worker 1"), "Çalışan 2", "Worker 2"), "Çalışan 3", "Worker 3"), "Çalışan 4", "Worker 4"), "Çalışan 5", "Worker 5"), "T\xFCm Kazan\xE7: +%", "All Earnings: +%"), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_en, "Geri ödeme: ", "Repayment: "), "Borç: ₺", "Debt: ₺"), "MOUSE", "MOUSE"), "Aç\n₺", "Unlock\n₺"), "Y\xFCkselt\n\u20BA", "Upgrade\n₺"), "Mağaza 2 Yükselt\n₺", "Upgrade Store 2\n₺"), "Mağaza Yükselt\n₺", "Upgrade Store\n₺"), "Maden Yükselt\n₺", "Upgrade Mine\n₺"), "Oto Üret: Kapalı\n₺", "Auto Prod: Off\n₺"), "Oto Üret: Açık\n₺", "Auto Prod: On\n₺"), _defineProperty(_defineProperty(_en, "Üretim: ", "Production: "), " sn", " sec"))
};
// 2. Translation function
function t(key) {
var lang = selectedLanguage || "tr";
if (translations[lang] && translations[lang][key] !== undefined) {
return translations[lang][key];
}
// fallback to Turkish if not found
if (translations["tr"][key] !== undefined) return translations["tr"][key];
return key;
}
// 3. Patch all UI text updates to use t()
// --- Patch static UI texts at creation time ---
magazaBtnTxt.setText(t("Mağaza"));
magazaPanelTitle.setText(t("Mağaza"));
magazaPanelText.setText(t("Burada mağaza ile ilgili içerik veya açıklama eklenebilir."));
magazaMuhasebeTitle.setText(t("Muhasebe Bilgileri"));
magazaKapatBtnTxt.setText(t("Kapat"));
yatirimBtnTxt.setText(t("Yatırım"));
yatirimTitle.setText(t("Yatırım - Popüler Coinler"));
yatirimKapatBtnTxt.setText(t("Kapat"));
bankBtnTxt.setText(t("Banka"));
borcOdeBtnTxt.setText(t("Borç Öde"));
languagesBtnTxt.setText(t("Languages"));
languagesPanelTitle.setText(t("Languages"));
languagesPanelText.setText(t("Select your language:"));
languagesKapatBtnTxt.setText(t("Kapat"));
offerTitle.setText(t("İNTERNET TEKLİFİ"));
offerBtnTxt.setText(t("Satın Al"));
sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ"));
sellBtnTxt.setText(t("Sat"));
// Patch language option button texts
for (var i = 0; i < languageOptions.length; i++) {
languageBtnTxts[i].setText(t(languageOptions[i].label));
}
// --- Patch dynamic UI text updates to use t() ---
// updateBakiyeDetayTxt fonksiyonu ve çeviri patch'i kaldırıldı.
// Patch updateMagazaMuhasebeText
var _old_updateMagazaMuhasebeText = updateMagazaMuhasebeText;
updateMagazaMuhasebeText = function updateMagazaMuhasebeText() {
var toplamSatis = 0;
var toplamGelir = 0;
for (var i = 0; i < partTypes.length; i++) {
toplamSatis += parts[partTypes[i]];
}
toplamGelir = money;
magazaMuhasebeText.setText(t("Mevcut Stok (adet):") + " " + toplamSatis + "\n" + t("Kasadaki Para:") + " ₺" + toplamGelir + (typeof borc !== "undefined" && borc > 0 ? "\n" + t("Borç:") + " ₺" + borc : ""));
};
// Patch updateBorcText
var _old_updateBorcText = updateBorcText;
updateBorcText = function updateBorcText() {
if (borc > 0) {
borcTxt.setText(t("Borç: ₺") + borc);
if (borcOdemeKalan > 0) {
var min = Math.floor(borcOdemeKalan / 60);
var sec = borcOdemeKalan % 60;
var timeStr = min > 0 ? min + " " + t("dk") + " " + (sec < 10 ? "0" : "") + sec + " " + t("sn") : sec + " " + t("sn");
borcTimeTxt.setText(t("Geri ödeme: ") + timeStr);
} else {
borcTimeTxt.setText('');
}
} else {
borcTxt.setText('');
borcTimeTxt.setText('');
}
};
// Patch updateRawText
var _old_updateRawText = updateRawText;
updateRawText = function updateRawText() {
if (typeof copperRawTxt !== "undefined" && copperRawTxt) copperRawTxt.setText(t("Bakır: ") + rawMaterials.copper);
if (typeof siliconRawTxt !== "undefined" && siliconRawTxt) siliconRawTxt.setText(t("Silikon: ") + rawMaterials.silicon);
if (typeof ironRawTxt !== "undefined" && ironRawTxt) ironRawTxt.setText(t("Demir: ") + rawMaterials.iron);
};
// Patch updatePartsText
var _old_updatePartsText = updatePartsText;
updatePartsText = function updatePartsText() {
var lines = ['', '', '', '', ''];
for (var i = 0; i < partTypes.length; i++) {
var label = (i === 0 ? t("MOUSE") : partTypes[i].toUpperCase()) + ':' + parts[partTypes[i]];
var row = i % 5;
var col = Math.floor(i / 5);
if (col === 0) {
lines[row] = label;
} else {
var maxLabelLen = 13;
var left = lines[row];
var right = label;
var pad = " ";
lines[row] = left + pad + right;
}
}
partsTxt.setText(lines.join('\n'));
if (magazaMuhasebeText && magazaMuhasebeText.visible) updateMagazaMuhasebeText();
};
// Patch offer/sell panel static texts
offerTitle.setText(t("İNTERNET TEKLİFİ"));
offerBtnTxt.setText(t("Satın Al"));
sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ"));
sellBtnTxt.setText(t("Sat"));
// Patch worker label texts
for (var i = 0; i < workerImages.length; i++) {
if (workerImages[i].label) {
workerImages[i].label.setText(t(workerNames[i]));
workerImages[i].label.size = 40;
workerImages[i].label.lineHeight = 52;
}
}
// --- Language switching logic ---
// When language is changed, update all UI texts
function updateAllTextsForLanguage() {
magazaBtnTxt.setText(t("Mağaza"));
magazaPanelTitle.setText(t("Mağaza"));
magazaPanelText.setText(t("Burada mağaza ile ilgili içerik veya açıklama eklenebilir."));
magazaMuhasebeTitle.setText(t("Muhasebe Bilgileri"));
magazaKapatBtnTxt.setText(t("Kapat"));
yatirimBtnTxt.setText(t("Yatırım"));
yatirimTitle.setText(t("Yatırım - Popüler Coinler"));
yatirimKapatBtnTxt.setText(t("Kapat"));
bankBtnTxt.setText(t("Banka"));
borcOdeBtnTxt.setText(t("Borç Öde"));
languagesBtnTxt.setText(t("Languages"));
languagesPanelTitle.setText(t("Languages"));
languagesPanelText.setText(t("Select your language:"));
languagesKapatBtnTxt.setText(t("Kapat"));
offerTitle.setText(t("İNTERNET TEKLİFİ"));
offerBtnTxt.setText(t("Satın Al"));
sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ"));
sellBtnTxt.setText(t("Sat"));
// Language option button texts
for (var i = 0; i < languageOptions.length; i++) {
languageBtnTxts[i].setText(t(languageOptions[i].label));
}
// Worker label texts
for (var i = 0; i < workerImages.length; i++) {
if (workerImages[i].label) {
workerImages[i].label.setText(t(workerNames[i]));
workerImages[i].label.size = 40; // font büyüklüğü
workerImages[i].label.lineHeight = 52; // satır aralığı (madenler paneliyle aynı)
}
}
// Update dynamic texts
updateMagazaMuhasebeText();
updateBorcText();
updateRawText();
updatePartsText();
// --- Ava: Patch all static/dynamic UI texts for English ---
// Patch all static/dynamic UI texts for English
if (selectedLanguage === "en") {
// Patch static UI texts for English
magazaBtnTxt.setText(t("Mağaza"));
magazaPanelTitle.setText(t("Mağaza"));
magazaPanelText.setText(t("Burada mağaza ile ilgili içerik veya açıklama eklenebilir."));
magazaMuhasebeTitle.setText(t("Muhasebe Bilgileri"));
magazaKapatBtnTxt.setText(t("Kapat"));
yatirimBtnTxt.setText(t("Yatırım"));
yatirimTitle.setText(t("Yatırım - Popüler Coinler"));
yatirimKapatBtnTxt.setText(t("Kapat"));
bankBtnTxt.setText(t("Banka"));
borcOdeBtnTxt.setText(t("Borç Öde"));
languagesBtnTxt.setText(t("Languages"));
languagesPanelTitle.setText(t("Languages"));
languagesPanelText.setText(t("Select your language:"));
languagesKapatBtnTxt.setText(t("Kapat"));
offerTitle.setText(t("İNTERNET TEKLİFİ"));
offerBtnTxt.setText(t("Satın Al"));
sellTitle.setText(t("TOPLU SATIŞ TEKLİFİ"));
sellBtnTxt.setText(t("Sat"));
// Language option button texts
for (var i = 0; i < languageOptions.length; i++) {
languageBtnTxts[i].setText(t(languageOptions[i].label));
}
// Worker label texts
for (var i = 0; i < workerImages.length; i++) {
if (workerImages[i].label) {
workerImages[i].label.setText(t(workerNames[i]));
workerImages[i].label.size = 40;
workerImages[i].label.lineHeight = 52;
}
}
// Update dynamic texts
updateBakiyeDetayTxt();
updateMagazaMuhasebeText();
updateBorcText();
updateRawText();
updatePartsText();
}
}
// --- Patch language button logic to update UI on language change ---
for (var i = 0; i < languageBtns.length; i++) {
(function (idx) {
var btn = languageBtns[idx];
btn.down = function (x, y, obj) {
tween(btn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(btn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
// Set selected language
selectedLanguage = languageOptions[idx].code;
// Visual feedback: highlight selected
for (var j = 0; j < languageBtns.length; j++) {
if (j === idx) {
languageBtns[j].tint = 0x83de44; // green highlight
} else {
languageBtns[j].tint = 0x222222;
}
}
// Update all UI texts
updateAllTextsForLanguage();
};
})(i);
}
};
})(i);
}
// Kapat butonu
// --- Kapat butonu: sağ üstte, %100 büyüklükte, kırmızı çerçeveli ---
var languagesKapatBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 240,
// %100 büyüklük (120*2)
height: 120,
// %100 büyüklük (60*2)
x: languagesPanel.x + languagesPanel.width / 2 - 120,
y: languagesPanel.y - languagesPanel.height / 2 + 60,
color: 0xffffff,
borderColor: 0xff2222,
borderWidth: 8
});
languagesKapatBtn.visible = false;
game.addChild(languagesKapatBtn);
// Kapat butonu için X simgesi
var languagesKapatBtnIcon = new Text2("\u2716", {
size: 54,
fill: '#ff2222'
});
languagesKapatBtnIcon.anchor.set(1, 0.5);
languagesKapatBtnIcon.x = languagesKapatBtn.x - 40;
languagesKapatBtnIcon.y = languagesKapatBtn.y;
languagesKapatBtnIcon.visible = false;
game.addChild(languagesKapatBtnIcon);
var languagesKapatBtnTxt = new Text2('Kapat', {
size: 64,
fill: '#ff2222'
});
languagesKapatBtnTxt.anchor.set(0.5, 0.5);
languagesKapatBtnTxt.x = languagesKapatBtn.x;
languagesKapatBtnTxt.y = languagesKapatBtn.y;
languagesKapatBtnTxt.visible = false;
game.addChild(languagesKapatBtnTxt);
// Languages butonuna tıklanınca paneli aç
languagesBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
tween(languagesBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(languagesBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
// Paneli aç
fullscreenOverlay.visible = true;
languagesPanel.visible = true;
languagesPanelTitle.visible = true;
languagesPanelText.visible = true;
languagesKapatBtn.visible = true;
languagesKapatBtnTxt.visible = true;
// Hide all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = false;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = false;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = false;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = false;
if (typeof bankBtn !== "undefined") bankBtn.visible = false;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = false;
if (typeof soundBtn !== "undefined") soundBtn.visible = false;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = false;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = false;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = false;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = false;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = false;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = false;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = false;
if (typeof infoBtn !== "undefined") infoBtn.visible = false;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = false;
if (typeof howToBtn !== "undefined") howToBtn.visible = false;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = false;
// Prevent hiding Store3/Store4 purchase buttons if Mağazalar panel is open
if (magazalarPanel && magazalarPanel.visible) {
if (typeof store3PurchaseBtn !== "undefined" && typeof store3PurchaseBtnTxt !== "undefined") {
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
}
if (typeof store4PurchaseBtn !== "undefined" && typeof store4PurchaseBtnTxt !== "undefined") {
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
}
}
// Show language buttons
for (var i = 0; i < languageBtns.length; i++) {
languageBtns[i].visible = true;
languageBtnTxts[i].visible = true;
// Highlight selected
if (languageOptions[i].code === selectedLanguage) {
languageBtns[i].tint = 0x83de44;
} else {
languageBtns[i].tint = 0x222222;
}
}
// Paneli en öne getir
if (game.setChildIndex) {
game.setChildIndex(languagesPanel, game.children.length - 1);
game.setChildIndex(languagesPanelTitle, game.children.length - 1);
game.setChildIndex(languagesPanelText, game.children.length - 1);
game.setChildIndex(languagesKapatBtn, game.children.length - 1);
game.setChildIndex(languagesKapatBtnTxt, game.children.length - 1);
if (typeof languagesKapatBtnIcon !== "undefined") game.setChildIndex(languagesKapatBtnIcon, game.children.length - 1);
// Bring language buttons to front
for (var i = 0; i < languageBtns.length; i++) {
game.setChildIndex(languageBtns[i], game.children.length - 1);
game.setChildIndex(languageBtnTxts[i], game.children.length - 1);
}
// Ava: Move homepage buttons behind the panel, but only if their parent is game to avoid setChildIndex errors
if (typeof magazaBtn !== "undefined" && magazaBtn.parent === game) game.setChildIndex(magazaBtn, 0);
if (typeof magazaBtnTxt !== "undefined" && magazaBtnTxt.parent === game) game.setChildIndex(magazaBtnTxt, 0);
if (typeof yatirimBtn !== "undefined" && yatirimBtn.parent === game) game.setChildIndex(yatirimBtn, 0);
if (typeof yatirimBtnTxt !== "undefined" && yatirimBtnTxt.parent === game) game.setChildIndex(yatirimBtnTxt, 0);
if (typeof bankBtn !== "undefined" && bankBtn.parent === game) game.setChildIndex(bankBtn, 0);
if (typeof bankBtnTxt !== "undefined" && bankBtnTxt.parent === game) game.setChildIndex(bankBtnTxt, 0);
if (typeof soundBtn !== "undefined" && soundBtn.parent === game) game.setChildIndex(soundBtn, 0);
if (typeof soundBtnTxt !== "undefined" && soundBtnTxt.parent === game) game.setChildIndex(soundBtnTxt, 0);
if (typeof newPageBtn !== "undefined" && newPageBtn.parent === game) game.setChildIndex(newPageBtn, 0);
if (typeof newPageBtnTxt !== "undefined" && newPageBtnTxt.parent === game) game.setChildIndex(newPageBtnTxt, 0);
if (typeof madenlerBtn !== "undefined" && madenlerBtn.parent === game) game.setChildIndex(madenlerBtn, 0);
if (typeof madenlerBtnTxt !== "undefined" && madenlerBtnTxt.parent === game) game.setChildIndex(madenlerBtnTxt, 0);
if (typeof languagesBtn !== "undefined" && languagesBtn.parent === game) game.setChildIndex(languagesBtn, 0);
if (typeof languagesBtnTxt !== "undefined" && languagesBtnTxt.parent === game) game.setChildIndex(languagesBtnTxt, 0);
if (typeof infoBtn !== "undefined" && infoBtn.parent === game) game.setChildIndex(infoBtn, 0);
if (typeof infoBtnTxt !== "undefined" && infoBtnTxt.parent === game) game.setChildIndex(infoBtnTxt, 0);
if (typeof howToBtn !== "undefined" && howToBtn.parent === game) game.setChildIndex(howToBtn, 0);
if (typeof howToBtnTxt !== "undefined" && howToBtnTxt.parent === game) game.setChildIndex(howToBtnTxt, 0);
}
};
// Paneli kapatmak için kapat butonu
languagesKapatBtn.down = function (x, y, obj) {
fullscreenOverlay.visible = false;
languagesPanel.visible = false;
languagesPanelTitle.visible = false;
languagesPanelText.visible = false;
languagesKapatBtn.visible = false;
languagesKapatBtnTxt.visible = false;
// Show all homepage buttons/UI
if (typeof magazaBtn !== "undefined") magazaBtn.visible = true;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true;
if (typeof bankBtn !== "undefined") bankBtn.visible = true;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true;
if (typeof soundBtn !== "undefined") soundBtn.visible = true;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = true;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = true;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true;
if (typeof infoBtn !== "undefined") infoBtn.visible = true;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true;
if (typeof howToBtn !== "undefined") howToBtn.visible = true;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true;
// Hide language buttons
for (var i = 0; i < languageBtns.length; i++) {
languageBtns[i].visible = false;
languageBtnTxts[i].visible = false;
}
};
borcOdeBtn.down = function (x, y, obj) {
if (borc > 0) {
var odeme = Math.min(money, borc);
if (odeme > 0) {
money -= odeme;
toplamBorcOdeme += odeme;
borc -= odeme;
if (borc < 0) {
borc = 0;
}
updateMoneyText();
updateBorcText();
}
// If borç is now 0, clear timers
if (borc <= 0) {
borc = 0;
updateBorcText();
if (typeof borcOdemeTimer !== "undefined" && borcOdemeTimer) {
LK.clearInterval(borcOdemeTimer);
borcOdemeTimer = null;
}
if (typeof borcOdemeTimeTimer !== "undefined" && borcOdemeTimeTimer) {
LK.clearInterval(borcOdemeTimeTimer);
borcOdemeTimeTimer = null;
}
}
} else {
// Flash button red if no debt
tween(borcOdeBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(borcOdeBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
// Repayment time text
var borcTimeTxt = new Text2('', {
size: 28,
fill: '#ffb'
});
borcTimeTxt.anchor.set(0.5, 0);
borcTimeTxt.x = borcTxt.x;
borcTimeTxt.y = borcTxt.y + 28;
LK.gui.top.addChild(borcTimeTxt);
var borcOdemeKalan = 0; // seconds left to next repayment
var borcOdemeTimeTimer = null;
function updateBorcText() {
if (borc > 0) {
borcTxt.setText('Borç: ₺' + borc);
if (borcOdemeKalan > 0) {
var min = Math.floor(borcOdemeKalan / 60);
var sec = borcOdemeKalan % 60;
var timeStr = min > 0 ? min + " dk " + (sec < 10 ? "0" : "") + sec + " sn" : sec + " sn";
borcTimeTxt.setText("Geri ödeme: " + timeStr);
} else {
borcTimeTxt.setText('');
}
} else {
borcTxt.setText('');
borcTimeTxt.setText('');
}
}
updateBorcText();
var borcOdemeTimer = null;
bankBtn.down = function (x, y, obj) {
if (newPagePanel && newPagePanel.visible) return;
// Only allow one active loan at a time
if (borc > 0) {
// Flash button red to indicate already borrowed
tween(bankBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(bankBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
return;
}
borc = 1000;
money += 1000;
updateMoneyText();
updateBorcText();
// Start repayment every 10 minutes (600s = 36000 frames)
if (borcOdemeTimer) {
LK.clearInterval(borcOdemeTimer);
}
if (borcOdemeTimeTimer) {
LK.clearInterval(borcOdemeTimeTimer);
}
borcOdemeKalan = 600; // seconds to next repayment (10 minutes)
updateBorcText();
// Repayment time countdown, updates every 1 second
borcOdemeTimeTimer = LK.setInterval(function () {
if (borc > 0) {
borcOdemeKalan--;
if (borcOdemeKalan < 0) {
borcOdemeKalan = 0;
}
updateBorcText();
} else {
borcOdemeKalan = 0;
updateBorcText();
if (borcOdemeTimeTimer) {
LK.clearInterval(borcOdemeTimeTimer);
borcOdemeTimeTimer = null;
}
}
}, 60); // 1 second at 60fps
borcOdemeTimer = LK.setInterval(function () {
if (borc > 0) {
var odeme = Math.ceil(borc * 0.25);
if (money >= odeme) {
money -= odeme;
borc -= odeme;
if (borc < 0) {
borc = 0;
}
updateMoneyText();
updateBorcText();
} else {
// Not enough money, take all money and reduce borc accordingly
borc -= money;
money = 0;
if (borc < 0) {
borc = 0;
}
updateMoneyText();
updateBorcText();
}
if (borc <= 0) {
borc = 0;
updateBorcText();
if (borcOdemeTimer) {
LK.clearInterval(borcOdemeTimer);
borcOdemeTimer = null;
}
if (borcOdemeTimeTimer) {
LK.clearInterval(borcOdemeTimeTimer);
borcOdemeTimeTimer = null;
}
}
borcOdemeKalan = 600; // reset repayment time for next cycle (10 minutes)
updateBorcText();
}
}, 36000); // 10 minutes at 60fps
};
// --- Madenlerin stok yazılarını maden resimlerinin tam üstüne ve ortasına yerleştir ---
// Madenler oluşturulmadan önce tanımlanıyor, mines dizisi aşağıda dolacak
var copperRawTxt, siliconRawTxt, ironRawTxt;
// Global function to update raw material texts
function updateRawText() {
if (typeof copperRawTxt !== "undefined" && copperRawTxt) copperRawTxt.setText('Bakır: ' + rawMaterials.copper);
if (typeof siliconRawTxt !== "undefined" && siliconRawTxt) siliconRawTxt.setText('Silikon: ' + rawMaterials.silicon);
if (typeof ironRawTxt !== "undefined" && ironRawTxt) ironRawTxt.setText('Demir: ' + rawMaterials.iron);
// Ava: Update stock count text in Madenler panel if visible
if (window.madenlerMineStockTxts) {
for (var i = 0; i < 6; i++) {
if (window.madenlerMineStockTxts[i]) {
var oreType = oreTypes[i];
// Defensive: check rawMaterials[oreType] exists
var stock = rawMaterials && typeof rawMaterials[oreType] !== "undefined" ? rawMaterials[oreType] : 0;
window.madenlerMineStockTxts[i].setText('' + stock);
}
}
}
// Ava: Update maden depo stock area if visible
if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible && typeof updateMadenDepoStockTxt === "function") {
updateMadenDepoStockTxt();
}
}
// Defensive: updateRawText should not assume mines[i] exists when called elsewhere
// Madenler oluşturulduktan sonra, mines dizisi dolduktan sonra konumlandır
LK.setTimeout(function () {
// Güvenli kontrol: mines ve her mine var mı
if (mines && mines.length >= 6 && mines[0] && mines[1] && mines[2]) {
// Bakır
copperRawTxt = new Text2('', {
size: 40,
fill: '#ffb',
fontWeight: 'bold'
});
copperRawTxt.anchor.set(0.5, 0.5);
if (mines[0] && typeof mines[0].x === "number" && typeof mines[0].y === "number") {
copperRawTxt.x = mines[0].x;
copperRawTxt.y = mines[0].y;
} else {
copperRawTxt.x = 0;
copperRawTxt.y = 0;
}
game.addChild(copperRawTxt);
// Silikon
siliconRawTxt = new Text2('', {
size: 40,
fill: '#ffb',
fontWeight: 'bold'
});
siliconRawTxt.anchor.set(0.5, 0.5);
if (mines[1] && typeof mines[1].x === "number" && typeof mines[1].y === "number") {
siliconRawTxt.x = mines[1].x;
siliconRawTxt.y = mines[1].y;
} else {
siliconRawTxt.x = 0;
siliconRawTxt.y = 0;
}
game.addChild(siliconRawTxt);
// Demir
ironRawTxt = new Text2('', {
size: 40,
fill: '#ffb',
fontWeight: 'bold'
});
ironRawTxt.anchor.set(0.5, 0.5);
if (mines[2] && typeof mines[2].x === "number" && typeof mines[2].y === "number") {
ironRawTxt.x = mines[2].x;
ironRawTxt.y = mines[2].y;
} else {
ironRawTxt.x = 0;
ironRawTxt.y = 0;
}
game.addChild(ironRawTxt);
// Gümüş
// (Optional: add silverRawTxt if needed in future)
// Nikel
// (Optional: add nikelRawTxt if needed in future)
// Altın
// (Optional: add goldRawTxt if needed in future)
updateRawText();
}
}, 1); // mines dizisinin dolmasını bekle (1 frame sonra çalıştır)
// Panel for parts count, placed below the sales offers (below sellPanel)
// Ensure sellPanel is defined before using its x/y
var partsPanelX = 120; // default fallback
var partsPanelY = 1366 + 400 + 340 / 2 + 60; // biraz daha aşağı (ekstra +30px)
if (typeof sellPanel !== "undefined" && sellPanel && typeof sellPanel.x === "number" && typeof sellPanel.y === "number" && typeof sellPanel.height === "number") {
partsPanelX = sellPanel.x;
partsPanelY = sellPanel.y + sellPanel.height / 2 + 60; // biraz daha aşağı (ekstra +30px)
}
// Panel boyutunu yazı boyutuna göre ayarla (2 sütun, 5 satır, her label max 13 karakter, font size 32, padding 24px)
// Paneli üstteki sellPanel ile aynı genişlikte ve hizada yap
// Panel genişliğini sağdan biraz daha küçült (ör: 1 kademe = 24px azalt)
var partsPanelWidth = (typeof sellPanel !== "undefined" && sellPanel ? sellPanel.width : 2 * 13 * 18 + 48) - 72; // 72px azaltıldı (3 kademe)
var partsPanelHeight = 5 * 38 + 36; // 5 satır * satır yüksekliği + padding
var partsPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0,
width: partsPanelWidth,
height: partsPanelHeight,
x: partsPanelX,
y: partsPanelY // sellPanel'den biraz daha aşağı
});
game.addChild(partsPanel);
var partsTxt = new Text2('', {
size: 32,
fill: '#bff'
});
// Yazıları panelin sağ kenarına hizala
partsTxt.anchor.set(1, 0.5);
partsTxt.x = partsPanel.x + partsPanel.width / 2 - 16; // sağdan 16px padding bırak (panel küçüldüğü için padding azaltıldı)
partsTxt.y = partsPanel.y + partsPanel.height / 2;
game.addChild(partsTxt);
function updatePartsText() {
// 2 sütun, 5 satır olacak şekilde ürünleri aşağı doğru sırala
// Her satırda iki sütun olacak şekilde, sağa hizalı
var lines = ['', '', '', '', ''];
for (var i = 0; i < partTypes.length; i++) {
var label = (i === 0 ? "MOUSE" : i === 1 ? "KLAVYE" : i === 6 ? "CPU" : i === 7 ? "GPU" : i === 8 ? "MONITOR" : i === 9 ? "KASA" : partTypes[i].toUpperCase()) + ':' + parts[partTypes[i]];
var row = i % 5;
var col = Math.floor(i / 5);
if (col === 0) {
lines[row] = label;
} else {
// Sola boşluk ekle, sağa hizalı olması için iki sütun arası boşluk artırıldı
var maxLabelLen = 13;
var left = lines[row];
var right = label;
// Her iki sütunu da sağa hizalamak için, satırın toplam uzunluğunu panel genişliğine göre ayarla
// 2 sütun arası 8 boşluk bırak
var pad = " ";
lines[row] = left + pad + right;
}
}
partsTxt.setText(lines.join('\n'));
if (magazaMuhasebeText && magazaMuhasebeText.visible) updateMagazaMuhasebeText();
}
updatePartsText();
// Arkaplan müziğini başlat
LK.playMusic('ArkaplanMuzik');
// --- Workers moved to new page panel ---
var workerImages = [];
// Her çalışana farklı bir resim atanacak şekilde image id'leri belirle
var workerImageIds = ['6830b806dc6f2ae53a448901', '6830b6cfdc6f2ae53a4488d7', '6830b789dc6f2ae53a4488e8', '6830c278dc6f2ae53a4489a4', '6830ba15dc6f2ae53a448943'];
var workerNames = ['Çalışan 1', 'Çalışan 2', 'Çalışan 3', 'Çalışan 4', 'Çalışan 5'];
// Çalışanlar yeni sayfa panelinde gösterilecek
var workerCount = 5;
// --- 3'lü sıra halinde alt alta dizilim için yeni konumlandırma ---
// 3 sütun, 2 satır (son satırda 2 çalışan olacak şekilde)
var workerRows = 2;
var workerCols = 3;
var workerPanelMarginTop = 60; // başlık ve "Çalışanlar" yazısı için üstte daha fazla boşluk bırak
var workerPanelMarginBottom = 80;
var workerPanelHeight = newPagePanelHeight - workerPanelMarginTop - workerPanelMarginBottom;
var workerPanelWidth = newPagePanelWidth;
var workerCellWidth = Math.floor(workerPanelWidth / workerCols);
var workerCellHeight = Math.floor(workerPanelHeight / workerRows);
// "Çalışanlar" başlığının altına hizalamak için Y başlangıcı
var workerGridStartY = newPagePanelText.y + newPagePanelText.height + 40; // başlığın altından 40px boşluk
// Her çalışanın paneldeki X ve Y koordinatlarını hesapla
function getWorkerPanelPos(idx) {
// 0,1,2 üst satır; 3,4 alt satır
var row = Math.floor(idx / workerCols);
var col = idx % workerCols;
// Son satırda çalışan sayısı 2 ise ortala
if (row === 1 && workerCount === 5) {
// 2 çalışanı ortalamak için col: 0 ve 1 için X ayarla
var colInRow = idx - workerCols; // 3->0, 4->1
var x = newPagePanel.x + workerCellWidth * (colInRow + 1);
var y = workerGridStartY + workerCellHeight * row + workerCellHeight / 2;
return {
x: x,
y: y
};
} else {
// Üst satırda 3 çalışanı eşit aralıklı dağıt
var x = newPagePanel.x + workerCellWidth * (col + 0.5);
var y = workerGridStartY + workerCellHeight * row + workerCellHeight / 2;
return {
x: x,
y: y
};
}
}
// Çalışan 1 için seviye, kazanç oranı ve butonlar
var worker1Level = 1;
var worker1EarningBase = 10;
var worker1UpgradeCost = 200;
var worker1EarningTxt = null;
var worker1LevelTxt = null;
var worker1UpgradeBtn = null;
var worker1UpgradeBtnTxt = null;
// Çalışan 2 için seviye, üretim süresi azaltma ve butonlar
var worker2Level = 1;
var worker2UpgradeCost = 250;
var worker2LevelTxt = null;
var worker2SpeedTxt = null;
var worker2UpgradeBtn = null;
var worker2UpgradeBtnTxt = null;
// Çalışan 3 için seviye, fabrika yükseltme maliyeti indirim oranı ve butonlar
var worker3Level = 1;
var worker3UpgradeCost = 300;
var worker3LevelTxt = null;
var worker3DiscountTxt = null;
var worker3UpgradeBtn = null;
var worker3UpgradeBtnTxt = null;
// Çalışan 4 için seviye, tıklama kazancı ve butonlar
var worker4Level = 1;
var worker4BaseEarning = 50;
var worker4UpgradeCost = 1000;
var worker4EarningTxt = null;
var worker4LevelTxt = null;
var worker4UpgradeBtn = null;
var worker4UpgradeBtnTxt = null;
// Çalışan 5 için seviye, bonus ve butonlar
var worker5Level = 1;
var worker5BaseBonus = 0.05;
var worker5UpgradeCost = 2000;
var worker5BonusTxt = null;
var worker5LevelTxt = null;
var worker5UpgradeBtn = null;
var worker5UpgradeBtnTxt = null;
// Çalışan UI'larını panelde oluştur, başta görünmez
// --- Ava: workerGapX ve workerY'yi tanımla (panelin genişliğine ve grid'e göre) ---
var workerGapX = newPagePanelWidth / 6; // 3 sütun için 6 aralık (kenarlarda boşluk)
var workerY = newPagePanelY + newPagePanelHeight / 2; // Panelin ortası (varsayılan, grid ile override edilir)
for (var i = 0; i < 5; i++) {
// Dağılımı tam ekran panelde ortala
var workerX = workerGapX * (i + 1);
var workerImg = LK.getAsset('worker' + (i + 1), {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
height: 140,
x: workerX,
y: workerY
});
workerImg.visible = false;
game.addChild(workerImg);
var workerLabel = new Text2(workerNames[i], {
size: 40,
fill: '#fff',
lineHeight: 52 // madenler panelindeki gibi 52 px satır aralığı
});
workerLabel.anchor.set(0.5, 0);
// Resmin alt kenarına ve ortasına hizala
workerLabel.x = workerImg.x;
workerLabel.y = workerImg.y + workerImg.height / 2 + 10; // 10px aşağı boşluk bırak
workerLabel.visible = false;
game.addChild(workerLabel);
// Çalışan alt açıklama yazılarını (seviye, kazanç, bonus, vs) alt alta hizalı şekilde ayarlamak için
// Her çalışan için alt açıklama yazıları bir diziye alınacak ve alt alta sıralanacak
// (Aşağıda ilgili UI'lar eklenirken y konumları bu düzene göre ayarlanacak)
// Çalışan 1 için seviye, kazanç ve buton ekle
if (i === 0) {
worker1LevelTxt = new Text2('Seviye: ' + worker1Level, {
size: 26,
fill: '#ffb'
});
worker1LevelTxt.anchor.set(0.5, 0);
worker1LevelTxt.x = workerImg.x;
worker1LevelTxt.y = workerLabel.y + 24;
worker1LevelTxt.visible = false;
game.addChild(worker1LevelTxt);
worker1EarningTxt = new Text2('Kazanç: ₺' + Math.round(worker1EarningBase * Math.pow(1.02, worker1Level - 1)), {
size: 26,
fill: '#bff'
});
worker1EarningTxt.anchor.set(0.5, 0);
worker1EarningTxt.x = workerImg.x;
worker1EarningTxt.y = worker1LevelTxt.y + 22;
worker1EarningTxt.visible = false;
game.addChild(worker1EarningTxt);
worker1UpgradeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
//{iV} // buton genişliği büyütüldü
height: 64,
//{iW} // buton yüksekliği büyütüldü
x: workerImg.x,
y: worker1EarningTxt.y + 54 // biraz daha aşağı
});
worker1UpgradeBtn.visible = false;
game.addChild(worker1UpgradeBtn);
worker1UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker1UpgradeCost, {
size: 28,
//{iZ} // yazı boyutu büyütüldü
fill: '#fff'
});
worker1UpgradeBtnTxt.anchor.set(0.5, 0.5);
worker1UpgradeBtnTxt.x = worker1UpgradeBtn.x;
worker1UpgradeBtnTxt.y = worker1UpgradeBtn.y;
worker1UpgradeBtnTxt.visible = false;
game.addChild(worker1UpgradeBtnTxt);
worker1UpgradeBtn.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
if (money >= worker1UpgradeCost) {
money -= worker1UpgradeCost;
worker1Level += 1;
worker1UpgradeCost = Math.floor(worker1UpgradeCost * 2.2);
updateMoneyText();
worker1LevelTxt.setText('Seviye: ' + worker1Level);
worker1EarningTxt.setText('Kazanç: ₺' + Math.round(worker1EarningBase * Math.pow(1.02, worker1Level - 1)));
worker1UpgradeBtnTxt.setText('Yükselt\n₺' + worker1UpgradeCost);
tween(worker1UpgradeBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(worker1UpgradeBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
} else {
tween(worker1UpgradeBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(worker1UpgradeBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
}
// Çalışan 2 için seviye, üretim süresi azaltma ve buton ekle
if (i === 1) {
worker2LevelTxt = new Text2('Seviye: ' + worker2Level, {
size: 26,
fill: '#ffb'
});
worker2LevelTxt.anchor.set(0.5, 0);
worker2LevelTxt.x = workerImg.x;
worker2LevelTxt.y = workerLabel.y + 24;
worker2LevelTxt.visible = false;
game.addChild(worker2LevelTxt);
worker2SpeedTxt = new Text2('Üretim Süresi: -%0', {
size: 26,
fill: '#bff'
});
worker2SpeedTxt.anchor.set(0.5, 0);
worker2SpeedTxt.x = workerImg.x;
worker2SpeedTxt.y = worker2LevelTxt.y + 22;
worker2SpeedTxt.visible = false;
game.addChild(worker2SpeedTxt);
worker2UpgradeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
//{jI} // buton genişliği büyütüldü
height: 64,
//{jJ} // buton yüksekliği büyütüldü
x: workerImg.x,
y: worker2SpeedTxt.y + 54
});
worker2UpgradeBtn.visible = false;
game.addChild(worker2UpgradeBtn);
worker2UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker2UpgradeCost, {
size: 28,
//{jM} // yazı boyutu büyütüldü
fill: '#fff'
});
worker2UpgradeBtnTxt.anchor.set(0.5, 0.5);
worker2UpgradeBtnTxt.x = worker2UpgradeBtn.x;
worker2UpgradeBtnTxt.y = worker2UpgradeBtn.y;
worker2UpgradeBtnTxt.visible = false;
game.addChild(worker2UpgradeBtnTxt);
worker2UpgradeBtn.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
if (money >= worker2UpgradeCost) {
money -= worker2UpgradeCost;
worker2Level += 1;
worker2UpgradeCost = Math.floor(worker2UpgradeCost * 2.2);
updateMoneyText();
worker2LevelTxt.setText('Seviye: ' + worker2Level);
worker2SpeedTxt.setText('Üretim Süresi: -%' + (worker2Level - 1) * 2);
worker2UpgradeBtnTxt.setText('Yükselt\n₺' + worker2UpgradeCost);
tween(worker2UpgradeBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(worker2UpgradeBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
} else {
tween(worker2UpgradeBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(worker2UpgradeBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
}
// Çalışan 3 için seviye, fabrika yükseltme maliyeti indirim oranı ve buton ekle
if (i === 2) {
worker3LevelTxt = new Text2('Seviye: ' + worker3Level, {
size: 26,
fill: '#ffb'
});
worker3LevelTxt.anchor.set(0.5, 0);
worker3LevelTxt.x = workerImg.x;
worker3LevelTxt.y = workerLabel.y + 24;
worker3LevelTxt.visible = false;
game.addChild(worker3LevelTxt);
worker3DiscountTxt = new Text2('Fabrika Yükseltme İndirimi: -%0', {
size: 26,
fill: '#bff'
});
worker3DiscountTxt.anchor.set(0.5, 0);
worker3DiscountTxt.x = workerImg.x;
worker3DiscountTxt.y = worker3LevelTxt.y + 22;
worker3DiscountTxt.visible = false;
game.addChild(worker3DiscountTxt);
worker3UpgradeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
//{kv} // buton genişliği büyütüldü
height: 64,
//{kw} // buton yüksekliği büyütüldü
x: workerImg.x,
y: worker3DiscountTxt.y + 54
});
worker3UpgradeBtn.visible = false;
game.addChild(worker3UpgradeBtn);
worker3UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker3UpgradeCost, {
size: 28,
//{kz} // yazı boyutu büyütüldü
fill: '#fff'
});
worker3UpgradeBtnTxt.anchor.set(0.5, 0.5);
worker3UpgradeBtnTxt.x = worker3UpgradeBtn.x;
worker3UpgradeBtnTxt.y = worker3UpgradeBtn.y;
worker3UpgradeBtnTxt.visible = false;
game.addChild(worker3UpgradeBtnTxt);
worker3UpgradeBtn.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
if (money >= worker3UpgradeCost) {
money -= worker3UpgradeCost;
worker3Level += 1;
worker3UpgradeCost = Math.floor(worker3UpgradeCost * 2.2);
updateMoneyText && updateMoneyText();
worker3LevelTxt.setText('Seviye: ' + worker3Level);
worker3DiscountTxt.setText('Fabrika Yükseltme İndirimi: -%' + (worker3Level - 1) * 2);
worker3UpgradeBtnTxt.setText('Yükselt\n₺' + worker3UpgradeCost);
tween(worker3UpgradeBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(worker3UpgradeBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
} else {
tween(worker3UpgradeBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(worker3UpgradeBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
}
// Çalışan 4 için seviye, tıklama kazancı ve yükseltme butonu ekle
if (i === 3) {
worker4LevelTxt = new Text2('Seviye: ' + worker4Level, {
size: 26,
fill: '#ffb'
});
worker4LevelTxt.anchor.set(0.5, 0);
worker4LevelTxt.x = workerImg.x;
worker4LevelTxt.y = workerLabel.y + 24;
worker4LevelTxt.visible = false;
game.addChild(worker4LevelTxt);
var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1));
// Kazanç oranını da gösteren metin
var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1));
worker4EarningTxt = new Text2('Resmime Tıkla\nTıkla: ₺' + earning, {
size: 26,
fill: '#bff'
});
worker4EarningTxt.anchor.set(0.5, 0);
worker4EarningTxt.x = workerImg.x;
worker4EarningTxt.y = worker4LevelTxt.y + 22;
worker4EarningTxt.visible = false;
game.addChild(worker4EarningTxt);
worker4UpgradeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
//{lj} // buton genişliği büyütüldü
height: 64,
//{lk} // buton yüksekliği büyütüldü
x: workerImg.x,
y: worker4EarningTxt.y + 54
});
worker4UpgradeBtn.visible = false;
game.addChild(worker4UpgradeBtn);
worker4UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker4UpgradeCost, {
size: 28,
//{ln} // yazı boyutu büyütüldü
fill: '#fff'
});
worker4UpgradeBtnTxt.anchor.set(0.5, 0.5);
worker4UpgradeBtnTxt.x = worker4UpgradeBtn.x;
worker4UpgradeBtnTxt.y = worker4UpgradeBtn.y;
worker4UpgradeBtnTxt.visible = false;
game.addChild(worker4UpgradeBtnTxt);
workerImg.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1));
money += earning;
updateMoneyText && updateMoneyText();
tween(workerImg, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(workerImg, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
// Alt yazı her zaman 'Resmime Tıkla\nTıkla: ₺...' olarak kalsın, tıklama ile değişmesin.
worker4EarningTxt.setText('Resmime Tıkla\nTıkla: ₺' + earning);
};
worker4UpgradeBtn.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
if (money >= worker4UpgradeCost) {
money -= worker4UpgradeCost;
worker4Level += 1;
worker4UpgradeCost = Math.floor(worker4UpgradeCost * 2.5);
updateMoneyText && updateMoneyText();
worker4LevelTxt.setText('Seviye: ' + worker4Level);
var earning = Math.round(worker4BaseEarning * Math.pow(1.25, worker4Level - 1));
worker4EarningTxt.setText('Resmime Tıkla\nTıkla: ₺' + earning);
worker4UpgradeBtnTxt.setText('Yükselt\n₺' + worker4UpgradeCost);
tween(worker4UpgradeBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(worker4UpgradeBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
} else {
tween(worker4UpgradeBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(worker4UpgradeBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
}
// Çalışan 5 için seviye, bonus ve yükseltme butonu ekle
if (i === 4) {
worker5LevelTxt = new Text2('Seviye: ' + worker5Level, {
size: 26,
fill: '#ffb'
});
worker5LevelTxt.anchor.set(0.5, 0);
worker5LevelTxt.x = workerImg.x;
worker5LevelTxt.y = workerLabel.y + 24;
worker5LevelTxt.visible = false;
game.addChild(worker5LevelTxt);
var bonusPercent = Math.round(worker5BaseBonus * worker5Level * 100);
worker5BonusTxt = new Text2('Tüm Kazanç: +%' + bonusPercent, {
size: 26,
fill: '#bff'
});
worker5BonusTxt.anchor.set(0.5, 0);
worker5BonusTxt.x = workerImg.x;
worker5BonusTxt.y = worker5LevelTxt.y + 22;
worker5BonusTxt.visible = false;
game.addChild(worker5BonusTxt);
worker5UpgradeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 140,
//{mv} // buton genişliği büyütüldü
height: 64,
//{mw} // buton yüksekliği büyütüldü
x: workerImg.x,
y: worker5BonusTxt.y + 54
});
worker5UpgradeBtn.visible = false;
game.addChild(worker5UpgradeBtn);
worker5UpgradeBtnTxt = new Text2('Yükselt\n₺' + worker5UpgradeCost, {
size: 28,
//{mz} // yazı boyutu büyütüldü
fill: '#fff'
});
worker5UpgradeBtnTxt.anchor.set(0.5, 0.5);
worker5UpgradeBtnTxt.x = worker5UpgradeBtn.x;
worker5UpgradeBtnTxt.y = worker5UpgradeBtn.y;
worker5UpgradeBtnTxt.visible = false;
game.addChild(worker5UpgradeBtnTxt);
worker5UpgradeBtn.down = function (x, y, obj) {
if (yatirimPanel && yatirimPanel.visible) return;
if (money >= worker5UpgradeCost) {
money -= worker5UpgradeCost;
worker5Level += 1;
worker5UpgradeCost = Math.floor(worker5UpgradeCost * 2.5);
updateMoneyText && updateMoneyText();
worker5LevelTxt.setText('Seviye: ' + worker5Level);
var bonusPercent = Math.round(worker5BaseBonus * worker5Level * 100);
worker5BonusTxt.setText('Tüm Kazanç: +%' + bonusPercent);
worker5UpgradeBtnTxt.setText('Yükselt\n₺' + worker5UpgradeCost);
tween(worker5UpgradeBtn, {
scaleX: 1.12,
scaleY: 1.12
}, {
duration: 80,
onFinish: function onFinish() {
tween(worker5UpgradeBtn, {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
} else {
tween(worker5UpgradeBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(worker5UpgradeBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
}
workerImages.push({
img: workerImg,
label: workerLabel
});
}
// Çalışan 1 kazancını her 10 saniyede bir ekle
LK.setInterval(function () {
var earning = Math.round(worker1EarningBase * Math.pow(1.02, worker1Level - 1));
money += earning;
// --- Mevduat faizi: %2 yıllık, 10 saniyede bir işlesin (yıllık faiz, 10 saniyeye bölünür) ---
// Yıllık faiz oranı
var mevduatFaizYillik = 0.02;
// 1 yılda 365*24*60*60/10 = 315360 kez 10 saniyelik periyot var
var faizPeriyotSayisi = 365 * 24 * 60 * 60 / 10;
// Her 10 saniyede işlenecek faiz oranı
var mevduatFaizOrani = Math.pow(1 + mevduatFaizYillik, 1 / faizPeriyotSayisi) - 1;
// Mevduat faizi ekle
if (mevduatTutar > 0) {
var faizKazanc = mevduatTutar * mevduatFaizOrani;
// En az 1 kuruş (0.01) birikirse ekle, küsuratı biriktir
if (typeof mevduatFaizKalan === "undefined") window.mevduatFaizKalan = 0;
window.mevduatFaizKalan += faizKazanc;
if (window.mevduatFaizKalan >= 0.01) {
var eklenecek = Math.floor(window.mevduatFaizKalan * 100) / 100;
mevduatTutar += eklenecek;
window.mevduatFaizKalan -= eklenecek;
updateMevduatTxt && updateMevduatTxt();
}
}
updateMoneyText && updateMoneyText();
if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt && typeof worker1EarningTxt.setText === "function") {
if (typeof worker1EarningTxt !== "undefined" && worker1EarningTxt && typeof worker1EarningTxt.setText === "function") {
worker1EarningTxt.setText('Kazanç: ₺' + earning);
}
}
}, 600); // 10 saniye (60fps * 10)
// Panel açıldığında çalışanları göster
newPageBtn.down = function (x, y, obj) {
newPagePanel.visible = true;
newPagePanelTitle.visible = true;
newPagePanelText.visible = true;
newPageKapatBtn.visible = true;
newPageKapatBtnTxt.visible = true;
// Çalışanları ve altındaki UI'ları göster ve panelde 3'lü sıra halinde alt alta ortala
for (var i = 0; i < workerImages.length; i++) {
var pos = getWorkerPanelPos(i);
workerImages[i].img.x = pos.x;
workerImages[i].img.y = pos.y;
workerImages[i].img.visible = true;
workerImages[i].label.x = pos.x;
workerImages[i].label.y = pos.y + 80;
workerImages[i].label.visible = true;
// Alt açıklama yazılarını alt alta ve hizalı şekilde göster
var baseY = workerImages[i].label.y + workerImages[i].label.height + 8; // label'ın altından 8px boşluk
var lineGap = 8; // satırlar arası boşluk
if (i === 0) {
var y = baseY;
if (worker1LevelTxt) {
worker1LevelTxt.x = pos.x;
worker1LevelTxt.y = y;
worker1LevelTxt.visible = true;
y += worker1LevelTxt.height + lineGap;
}
if (worker1EarningTxt) {
worker1EarningTxt.x = pos.x;
worker1EarningTxt.y = y;
worker1EarningTxt.visible = true;
y += worker1EarningTxt.height + lineGap;
}
if (worker1UpgradeBtn) {
worker1UpgradeBtn.x = pos.x;
worker1UpgradeBtn.y = y + worker1UpgradeBtn.height / 2;
worker1UpgradeBtn.visible = true;
}
if (worker1UpgradeBtnTxt) {
worker1UpgradeBtnTxt.x = pos.x;
worker1UpgradeBtnTxt.y = worker1UpgradeBtn.y;
worker1UpgradeBtnTxt.visible = true;
}
}
if (i === 1) {
var y = baseY;
if (worker2LevelTxt) {
worker2LevelTxt.x = pos.x;
worker2LevelTxt.y = y;
worker2LevelTxt.visible = true;
y += worker2LevelTxt.height + lineGap;
}
if (worker2SpeedTxt) {
worker2SpeedTxt.x = pos.x;
worker2SpeedTxt.y = y;
worker2SpeedTxt.visible = true;
y += worker2SpeedTxt.height + lineGap;
}
if (worker2UpgradeBtn) {
worker2UpgradeBtn.x = pos.x;
worker2UpgradeBtn.y = y + worker2UpgradeBtn.height / 2;
worker2UpgradeBtn.visible = true;
}
if (worker2UpgradeBtnTxt) {
worker2UpgradeBtnTxt.x = pos.x;
worker2UpgradeBtnTxt.y = worker2UpgradeBtn.y;
worker2UpgradeBtnTxt.visible = true;
}
}
if (i === 2) {
var y = baseY;
if (worker3LevelTxt) {
worker3LevelTxt.x = pos.x;
worker3LevelTxt.y = y;
worker3LevelTxt.visible = true;
y += worker3LevelTxt.height + lineGap;
}
if (worker3DiscountTxt) {
worker3DiscountTxt.x = pos.x;
worker3DiscountTxt.y = y;
worker3DiscountTxt.visible = true;
y += worker3DiscountTxt.height + lineGap;
}
if (worker3UpgradeBtn) {
worker3UpgradeBtn.x = pos.x;
worker3UpgradeBtn.y = y + worker3UpgradeBtn.height / 2;
worker3UpgradeBtn.visible = true;
}
if (worker3UpgradeBtnTxt) {
worker3UpgradeBtnTxt.x = pos.x;
worker3UpgradeBtnTxt.y = worker3UpgradeBtn.y;
worker3UpgradeBtnTxt.visible = true;
}
}
if (i === 3) {
var y = baseY;
if (worker4LevelTxt) {
worker4LevelTxt.x = pos.x;
worker4LevelTxt.y = y;
worker4LevelTxt.visible = true;
y += worker4LevelTxt.height + lineGap;
}
if (worker4EarningTxt) {
worker4EarningTxt.x = pos.x;
worker4EarningTxt.y = y;
worker4EarningTxt.visible = true;
y += worker4EarningTxt.height + lineGap;
}
if (worker4UpgradeBtn) {
worker4UpgradeBtn.x = pos.x;
worker4UpgradeBtn.y = y + worker4UpgradeBtn.height / 2;
worker4UpgradeBtn.visible = true;
}
if (worker4UpgradeBtnTxt) {
worker4UpgradeBtnTxt.x = pos.x;
worker4UpgradeBtnTxt.y = worker4UpgradeBtn.y;
worker4UpgradeBtnTxt.visible = true;
}
}
if (i === 4) {
var y = baseY;
if (worker5LevelTxt) {
worker5LevelTxt.x = pos.x;
worker5LevelTxt.y = y;
worker5LevelTxt.visible = true;
y += worker5LevelTxt.height + lineGap;
}
if (worker5BonusTxt) {
worker5BonusTxt.x = pos.x;
worker5BonusTxt.y = y;
worker5BonusTxt.visible = true;
y += worker5BonusTxt.height + lineGap;
}
if (worker5UpgradeBtn) {
worker5UpgradeBtn.x = pos.x;
worker5UpgradeBtn.y = y + worker5UpgradeBtn.height / 2;
worker5UpgradeBtn.visible = true;
}
if (worker5UpgradeBtnTxt) {
worker5UpgradeBtnTxt.x = pos.x;
worker5UpgradeBtnTxt.y = worker5UpgradeBtn.y;
worker5UpgradeBtnTxt.visible = true;
}
}
}
// Paneli en öne getir
if (game.setChildIndex) {
game.setChildIndex(newPagePanel, game.children.length - 1);
game.setChildIndex(newPagePanelTitle, game.children.length - 1);
game.setChildIndex(newPagePanelText, game.children.length - 1);
game.setChildIndex(newPageKapatBtn, game.children.length - 1);
game.setChildIndex(newPageKapatBtnTxt, game.children.length - 1);
// Çalışanları ve altındaki UI'ları en öne getir
for (var i = 0; i < workerImages.length; i++) {
game.setChildIndex(workerImages[i].img, game.children.length - 1);
game.setChildIndex(workerImages[i].label, game.children.length - 1);
}
if (worker1LevelTxt) game.setChildIndex(worker1LevelTxt, game.children.length - 1);
if (worker1EarningTxt) game.setChildIndex(worker1EarningTxt, game.children.length - 1);
if (worker1UpgradeBtn) game.setChildIndex(worker1UpgradeBtn, game.children.length - 1);
if (worker1UpgradeBtnTxt) game.setChildIndex(worker1UpgradeBtnTxt, game.children.length - 1);
if (worker2LevelTxt) game.setChildIndex(worker2LevelTxt, game.children.length - 1);
if (worker2SpeedTxt) game.setChildIndex(worker2SpeedTxt, game.children.length - 1);
if (worker2UpgradeBtn) game.setChildIndex(worker2UpgradeBtn, game.children.length - 1);
if (worker2UpgradeBtnTxt) game.setChildIndex(worker2UpgradeBtnTxt, game.children.length - 1);
if (worker3LevelTxt) game.setChildIndex(worker3LevelTxt, game.children.length - 1);
if (worker3DiscountTxt) game.setChildIndex(worker3DiscountTxt, game.children.length - 1);
if (worker3UpgradeBtn) game.setChildIndex(worker3UpgradeBtn, game.children.length - 1);
if (worker3UpgradeBtnTxt) game.setChildIndex(worker3UpgradeBtnTxt, game.children.length - 1);
if (worker4LevelTxt) game.setChildIndex(worker4LevelTxt, game.children.length - 1);
if (worker4EarningTxt) game.setChildIndex(worker4EarningTxt, game.children.length - 1);
if (worker4UpgradeBtn) game.setChildIndex(worker4UpgradeBtn, game.children.length - 1);
if (worker4UpgradeBtnTxt) game.setChildIndex(worker4UpgradeBtnTxt, game.children.length - 1);
if (worker5LevelTxt) game.setChildIndex(worker5LevelTxt, game.children.length - 1);
if (worker5BonusTxt) game.setChildIndex(worker5BonusTxt, game.children.length - 1);
if (worker5UpgradeBtn) game.setChildIndex(worker5UpgradeBtn, game.children.length - 1);
if (worker5UpgradeBtnTxt) game.setChildIndex(worker5UpgradeBtnTxt, game.children.length - 1);
}
};
// Paneli kapatınca çalışanları gizle
newPageKapatBtn.down = function (x, y, obj) {
newPagePanel.visible = false;
newPagePanelTitle.visible = false;
newPagePanelText.visible = false;
newPageKapatBtn.visible = false;
newPageKapatBtnTxt.visible = false;
// Çalışanları ve altındaki UI'ları gizle
for (var i = 0; i < workerImages.length; i++) {
workerImages[i].img.visible = false;
workerImages[i].label.visible = false;
}
if (worker1LevelTxt) worker1LevelTxt.visible = false;
if (worker1EarningTxt) worker1EarningTxt.visible = false;
if (worker1UpgradeBtn) worker1UpgradeBtn.visible = false;
if (worker1UpgradeBtnTxt) worker1UpgradeBtnTxt.visible = false;
if (worker2LevelTxt) worker2LevelTxt.visible = false;
if (worker2SpeedTxt) worker2SpeedTxt.visible = false;
if (worker2UpgradeBtn) worker2UpgradeBtn.visible = false;
if (worker2UpgradeBtnTxt) worker2UpgradeBtnTxt.visible = false;
if (worker3LevelTxt) worker3LevelTxt.visible = false;
if (worker3DiscountTxt) worker3DiscountTxt.visible = false;
if (worker3UpgradeBtn) worker3UpgradeBtn.visible = false;
if (worker3UpgradeBtnTxt) worker3UpgradeBtnTxt.visible = false;
if (worker4LevelTxt) worker4LevelTxt.visible = false;
if (worker4EarningTxt) worker4EarningTxt.visible = false;
if (worker4UpgradeBtn) worker4UpgradeBtn.visible = false;
if (worker4UpgradeBtnTxt) worker4UpgradeBtnTxt.visible = false;
if (worker5LevelTxt) worker5LevelTxt.visible = false;
if (worker5BonusTxt) worker5BonusTxt.visible = false;
if (worker5UpgradeBtn) worker5UpgradeBtn.visible = false;
if (worker5UpgradeBtnTxt) worker5UpgradeBtnTxt.visible = false;
};
// --- Mines ---
// Anasayfada madenler, stok sayısı ve butonları gösterilmeyecek
var mines = [];
var mineAutoProduce = [false, false, false, false, false, false]; // Track auto-produce state for each mine
var mineAutoBtns = [];
var mineAutoTxts = [];
// Defensive: Always initialize mines array with 6 Mine objects, one for each ore type
if (!Array.isArray(mines) || mines.length !== 6) {
mines = [];
for (var i = 0; i < 6; i++) {
var m = new Mine();
m.setType(oreTypes[i]);
// Arrange mines offscreen by default (UI panels will reposition them)
m.x = -1000;
m.y = -1000;
mines.push(m);
game.addChild(m);
}
}
// --- Factories for each part ---
var factories = [];
var factoryUnlocks = [];
var factoryUnlockCosts = [0, 350, 525, 700, 875, 1050, 1225, 1400, 1575, 1750];
// Apply 50% price increase to all except the first (CPU)
for (var i = 1; i < factoryUnlockCosts.length; i++) {
factoryUnlockCosts[i] = Math.floor(factoryUnlockCosts[i] * 1.5);
}
var factoryAutoProduce = [];
var factoryAutoBtns = [];
var factoryAutoTxts = [];
for (var i = 0; i < partTypes.length; i++) {
var FactoryClass = FactoryClasses[partTypes[i]];
var f = new FactoryClass();
// Arrange factories in two rows of 5, with extra vertical spacing between rows
var col = i % 5;
var row = Math.floor(i / 5);
// Add vertical spacing (gap) between factory panels
var factoryPanelGap = 24;
f.x = 500 + col * 300 + col * factoryPanelGap;
// Move MB, CASE, FAN, HDD, COOLER (indices 5,6,7,8,9) further down
// Move the whole factories panel lower by +200px
if (i >= 5) {
// Increase the offset for the second row and move these factories further down
f.y = 1300 + row * 420 + 320;
} else {
f.y = 1300 + row * 420;
}
game.addChild(f);
factories.push(f);
// Add production time text under the part icon
var prodTime = f.getProductionTime ? f.getProductionTime() : 30;
var prodTimeSec = (prodTime / 60).toFixed(2);
// Add a panel image behind the production time text
var prodTimePanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0,
width: 220,
height: 54,
x: f.x,
y: f.y - 60 + 60 * 0.7 + 28,
// 10px higher to allow for text padding
scaleX: 0.8,
scaleY: 0.7
});
// Add horizontal gap to prodTimePanel to match factory panel gap
prodTimePanel.x = f.x;
game.addChild(prodTimePanel);
var prodTimeTxt = new Text2("Üretim: " + prodTimeSec + " sn", {
size: 32,
fill: "#fff"
});
prodTimeTxt.anchor.set(0.5, 0);
// Place under the part icon (which is at y: -60, scale 0.7, so about -60+60*0.7+10)
prodTimeTxt.x = f.x;
prodTimeTxt.y = f.y - 60 + 60 * 0.7 + 38;
game.addChild(prodTimeTxt);
// Store reference for later update on upgrade
f._prodTimeTxt = prodTimeTxt;
// Unlock state: CPU (i==0) is always unlocked, others locked
factoryUnlocks.push(i === 0 ? true : false);
// Add auto-produce toggle button for each factory
factoryAutoProduce.push(false);
var autoBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
autoBtn.x = f.x;
// Move auto-produce button further down
// Add horizontal gap to autoBtn to match factory panel gap
autoBtn.x = f.x;
if (i >= 5) {
autoBtn.y = f.y + 530 + 80;
} else {
autoBtn.y = f.y + 530;
}
game.addChild(autoBtn);
var autoTxt = new Text2('Oto Üret: Kapalı', {
size: 36,
fill: '#fff'
});
autoTxt.anchor.set(0.5, 0.5);
autoTxt.x = autoBtn.x;
autoTxt.y = autoBtn.y;
game.addChild(autoTxt);
autoBtn.factoryIndex = i;
autoBtn.down = function (x, y, obj) {
// Disable if investment panel is open or Çalışanlar paneli is open
if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) return;
var idx = this.factoryIndex;
if (!factoryAutoProduce[idx]) {
// Cost to enable auto-produce for factory: 1000
var autoFactoryCost = (idx + 1) * 1000;
if (money >= autoFactoryCost) {
money -= autoFactoryCost;
updateMoneyText();
factoryAutoProduce[idx] = true;
factoryAutoTxts[idx].setText('Oto Üret: Açık');
} else {
// Not enough money, flash button red
tween(this, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(autoBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
} else {
// Oto Üret kapatılmasın: Satın alındıktan sonra kapatmaya izin verme
// Artık kapatma işlemi yapılmıyor, buton işlevsiz.
}
};
factoryAutoBtns.push(autoBtn);
factoryAutoTxts.push(autoTxt);
// Set initial text
var autoFactoryCost = (i + 1) * 1000;
autoTxt.setText('Oto Üret: Kapalı\n₺' + autoFactoryCost);
}
// --- Store ---
var store = new Store();
// --- Ava: Arrange all stores and their purchase/upgrade buttons horizontally under Mağaza button on homepage ---
// Horizontal layout settings
var storeHomeStartX = magazaBtn.x + magazaBtn.width / 2 + 60; // 60px right of Mağaza button
var storeHomeY = magazaBtn.y + magazaBtn.height / 2 + 120; // 120px below Mağaza button
var storeHomeGapX = 320; // horizontal gap between stores
// Store 1
store.x = storeHomeStartX;
store.y = storeHomeY;
store.scaleX = 0.82;
store.scaleY = 0.82;
game.addChild(store);
// Store 2
var store2Purchased = false;
var store2PurchaseCost = 3000;
var store2 = new Store();
store2.x = store.x + storeHomeGapX * 1;
store2.y = storeHomeY;
store2.scaleX = 0.82;
store2.scaleY = 0.82;
game.addChild(store2);
store2.visible = true;
// Store 3
var store3Purchased = false;
var store3PurchaseCost = 4000;
var store3 = new Store();
store3.x = store.x + storeHomeGapX * 2;
store3.y = storeHomeY;
store3.scaleX = 0.82;
store3.scaleY = 0.82;
game.addChild(store3);
store3.visible = true;
// Store 4
var store4Purchased = false;
var store4PurchaseCost = 5000;
var store4 = new Store();
store4.x = store.x + storeHomeGapX * 3;
store4.y = storeHomeY;
store4.scaleX = 0.82;
store4.scaleY = 0.82;
game.addChild(store4);
store4.visible = true;
// --- Ava: Move purchase buttons and icons under each store, horizontally aligned ---
// Store 2 Purchase Button
store2PurchaseBtn.x = store2.x;
store2PurchaseBtn.y = store2.y + 160;
store2PurchaseBtn.visible = !store2Purchased;
store2PurchaseBtnTxt.x = store2PurchaseBtn.x;
store2PurchaseBtnTxt.y = store2PurchaseBtn.y + 10;
store2PurchaseBtnTxt.visible = !store2Purchased;
// Store 3 Purchase Button
store3PurchaseBtn.x = store3.x;
store3PurchaseBtn.y = store3.y + 160;
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.x = store3PurchaseBtn.x;
store3PurchaseBtnTxt.y = store3PurchaseBtn.y + 10;
store3PurchaseBtnTxt.visible = !store3Purchased;
if (typeof store3PurchaseBtnIcon !== "undefined") {
store3PurchaseBtnIcon.x = store3PurchaseBtn.x - 80;
store3PurchaseBtnIcon.y = store3PurchaseBtn.y;
store3PurchaseBtnIcon.visible = !store3Purchased;
}
// Store 4 Purchase Button
store4PurchaseBtn.x = store4.x;
store4PurchaseBtn.y = store4.y + 160;
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.x = store4PurchaseBtn.x;
store4PurchaseBtnTxt.y = store4PurchaseBtn.y + 10;
store4PurchaseBtnTxt.visible = !store4Purchased;
if (typeof store4PurchaseBtnIcon !== "undefined") {
store4PurchaseBtnIcon.x = store4PurchaseBtn.x - 80;
store4PurchaseBtnIcon.y = store4PurchaseBtn.y;
store4PurchaseBtnIcon.visible = !store4Purchased;
}
// --- Ava: Always show all stores and their purchase buttons on homepage until purchased ---
store.visible = true;
store2.visible = true;
store3.visible = true;
store4.visible = true;
store2PurchaseBtn.visible = !store2Purchased;
store2PurchaseBtnTxt.visible = !store2Purchased;
store3PurchaseBtn.visible = !store3Purchased;
store3PurchaseBtnTxt.visible = !store3Purchased;
if (typeof store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased;
store4PurchaseBtn.visible = !store4Purchased;
store4PurchaseBtnTxt.visible = !store4Purchased;
if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased;
// --- Show all customers on homepage ---
if (typeof customers === "undefined" || !Array.isArray(customers)) {
customers = [];
}
for (var i = 0; i < customers.length; i++) {
customers[i].visible = true;
}
// --- Store 2 Purchase Button (Mağazalar panelinde, upgrade üstünde) ---
var store2PurchaseBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 260,
height: 80
});
// Show on homepage (anasayfa)
store2PurchaseBtn.x = store2.x;
store2PurchaseBtn.y = store2.y + 160;
store2PurchaseBtn.visible = !store2Purchased;
game.addChild(store2PurchaseBtn);
var store2PurchaseBtnTxt = new Text2('Mağaza 2 Satın Al\n₺' + store2PurchaseCost, {
size: 38,
fill: '#fff'
});
store2PurchaseBtnTxt.anchor.set(0.5, 0.5);
store2PurchaseBtnTxt.x = store2PurchaseBtn.x;
store2PurchaseBtnTxt.y = store2PurchaseBtn.y + 10;
store2PurchaseBtnTxt.visible = !store2Purchased;
game.addChild(store2PurchaseBtnTxt);
store2PurchaseBtn.down = function (x, y, obj) {
if (store2Purchased) return;
if (money >= store2PurchaseCost) {
money -= store2PurchaseCost;
store2Purchased = true;
updateMoneyText && updateMoneyText();
store2PurchaseBtn.visible = false;
store2PurchaseBtnTxt.visible = false;
// Show upgrade button after purchase
if (typeof store2Btn !== "undefined") store2Btn.visible = true;
if (typeof store2BtnTxt !== "undefined") store2BtnTxt.visible = true;
// Show store2 in Mağazalar panel after purchase
if (typeof store2 !== "undefined") store2.visible = true;
} else {
// Not enough money, flash button red
tween(store2PurchaseBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(store2PurchaseBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
// --- Store 3 Purchase Button (Mağazalar panelinde, upgrade üstünde) ---
var store3PurchaseBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 260,
height: 80
});
// Show on homepage (anasayfa)
store3PurchaseBtn.x = store3.x;
store3PurchaseBtn.y = store3.y + 160;
store3PurchaseBtn.visible = !store3Purchased;
game.addChild(store3PurchaseBtn);
// Add icon to Store3 purchase button
var store3PurchaseBtnIcon = LK.getAsset('store', {
anchorX: 1,
anchorY: 0.5,
width: 48,
height: 48,
x: store3PurchaseBtn.x - 80,
y: store3PurchaseBtn.y
});
store3PurchaseBtnIcon.visible = !store3Purchased;
game.addChild(store3PurchaseBtnIcon);
var store3PurchaseBtnTxt = new Text2('Mağaza 3 Satın Al\n₺' + store3PurchaseCost, {
size: 38,
fill: '#fff'
});
store3PurchaseBtnTxt.anchor.set(0.5, 0.5);
store3PurchaseBtnTxt.x = store3PurchaseBtn.x;
store3PurchaseBtnTxt.y = store3PurchaseBtn.y + 10;
store3PurchaseBtnTxt.visible = !store3Purchased;
store3PurchaseBtnTxt.style = store3PurchaseBtnTxt.style || {};
store3PurchaseBtnTxt.style.fill = '#fff';
game.addChild(store3PurchaseBtnTxt);
// Store3 purchase button logic
store3PurchaseBtn.down = function (x, y, obj) {
if (store3Purchased) return;
if (money >= store3PurchaseCost) {
money -= store3PurchaseCost;
store3Purchased = true;
updateMoneyText && updateMoneyText();
store3PurchaseBtn.visible = false;
store3PurchaseBtnTxt.visible = false;
// Show upgrade button after purchase
if (typeof store3Btn !== "undefined") store3Btn.visible = true;
if (typeof store3BtnTxt !== "undefined") store3BtnTxt.visible = true;
// Show store3 in Mağazalar panel after purchase
if (typeof store3 !== "undefined") store3.visible = true;
} else {
// Not enough money, flash button red
tween(store3PurchaseBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(store3PurchaseBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
store3PurchaseBtnTxt.down = function (x, y, obj) {
store3PurchaseBtn.down(x, y, obj);
};
// --- Store 4 Purchase Button (Mağazalar panelinde, upgrade üstünde) ---
var store4PurchaseBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 260,
height: 80
});
// Show on homepage (anasayfa)
store4PurchaseBtn.x = store4.x;
store4PurchaseBtn.y = store4.y + 160;
store4PurchaseBtn.visible = !store4Purchased;
game.addChild(store4PurchaseBtn);
// Add icon to Store4 purchase button
var store4PurchaseBtnIcon = LK.getAsset('store', {
anchorX: 1,
anchorY: 0.5,
width: 48,
height: 48,
x: store4PurchaseBtn.x - 80,
y: store4PurchaseBtn.y
});
store4PurchaseBtnIcon.visible = !store4Purchased;
game.addChild(store4PurchaseBtnIcon);
var store4PurchaseBtnTxt = new Text2('Mağaza 4 Satın Al\n₺' + store4PurchaseCost, {
size: 38,
fill: '#fff'
});
store4PurchaseBtnTxt.anchor.set(0.5, 0.5);
store4PurchaseBtnTxt.x = store4PurchaseBtn.x;
store4PurchaseBtnTxt.y = store4PurchaseBtn.y + 10;
store4PurchaseBtnTxt.visible = !store4Purchased;
store4PurchaseBtnTxt.style = store4PurchaseBtnTxt.style || {};
store4PurchaseBtnTxt.style.fill = '#fff';
game.addChild(store4PurchaseBtnTxt);
// Store4 purchase button logic
store4PurchaseBtn.down = function (x, y, obj) {
if (store4Purchased) return;
if (money >= store4PurchaseCost) {
money -= store4PurchaseCost;
store4Purchased = true;
updateMoneyText && updateMoneyText();
store4PurchaseBtn.visible = false;
store4PurchaseBtnTxt.visible = false;
// Show upgrade button after purchase
if (typeof store4Btn !== "undefined") store4Btn.visible = true;
if (typeof store4BtnTxt !== "undefined") store4BtnTxt.visible = true;
// Show store4 in Mağazalar panel after purchase
if (typeof store4 !== "undefined") store4.visible = true;
} else {
// Not enough money, flash button red
tween(store4PurchaseBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(store4PurchaseBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
store4PurchaseBtnTxt.down = function (x, y, obj) {
store4PurchaseBtn.down(x, y, obj);
};
// --- Upgrade Buttons ---
var mineBtns = [];
for (var i = 0; i < 3; i++) {
// Defensive: skip if mines or mines[i] is not defined
if (!mines || !mines[i]) continue;
var btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
btn.x = mines[i].x - 80; // Move left to make space for produce button
btn.y = mines[i].y + 200;
game.addChild(btn);
var txt = new Text2('Maden Yükselt\n₺' + mines[i].upgradeCost, {
size: 44,
fill: '#fff'
});
txt.anchor.set(0.5, 0.5);
txt.y = btn.y + 20;
txt.x = btn.x;
game.addChild(txt);
btn.mineIndex = i;
btn.txt = txt;
btn.down = function (x, y, obj) {
// Disable if investment panel is open
if (yatirimPanel && yatirimPanel.visible) return;
var idx = this.mineIndex;
if (!mines || !mines[idx]) return;
var m = mines[idx];
if (money >= m.upgradeCost) {
toplamMadenYukseltme += m.upgradeCost;
m.upgrade();
this.txt.setText('Maden Yükselt\n₺' + m.upgradeCost);
}
};
mineBtns.push(btn);
// Add ÜRET (Produce) button next to upgrade
var prodBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 180,
height: 80
});
// ÜRET butonunu madenin altına yerleştir
prodBtn.x = mines[i].x - 170;
prodBtn.y = mines[i].y + 320;
game.addChild(prodBtn);
var prodTxt = new Text2('ÜRET', {
size: 36,
fill: '#fff'
});
prodTxt.anchor.set(0.5, 0.5);
// ÜRET yazısını butonun tam ortasına yerleştir
prodTxt.x = prodBtn.x;
prodTxt.y = prodBtn.y;
game.addChild(prodTxt);
prodBtn.mineIndex = i;
prodBtn.down = function (x, y, obj) {
// Disable if investment panel is open
if (yatirimPanel && yatirimPanel.visible) return;
var idx = this.mineIndex;
if (!mines || !mines[idx]) return;
var m = mines[idx];
// Instantly produce one batch of raw material for this mine
rawMaterials[m.type] += m.production;
updateRawText();
// Animate mine for feedback
tween(m, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 120,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(m, {
scaleX: 1,
scaleY: 1
}, {
duration: 120
});
}
});
};
}
// Factory upgrade buttons for each part
var factoryBtns = [];
var factoryUnlockBtns = [];
for (var i = 0; i < factories.length; i++) {
var f = factories[i];
// If factory is locked (except CPU), show unlock button instead of upgrade
if (!factoryUnlocks[i]) {
var unlockBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
unlockBtn.x = f.x;
// Add horizontal gap to unlock buttons to match factory panel gap
unlockBtn.x = f.x;
if (i >= 5) {
unlockBtn.y = f.y + 200 + 80;
} else {
unlockBtn.y = f.y + 200;
}
game.addChild(unlockBtn);
var unlockTxt = new Text2((i === 0 ? "MOUSE" : i === 1 ? "KLAVYE" : i === 6 ? "CPU" : i === 7 ? "GPU" : i === 8 ? "MONITOR" : i === 9 ? "KASA" : partTypes[i].toUpperCase()) + " Aç\n₺" + factoryUnlockCosts[i], {
size: 44,
fill: '#fff'
});
unlockTxt.anchor.set(0.5, 0.5);
unlockTxt.x = unlockBtn.x;
unlockTxt.y = unlockBtn.y + 20;
game.addChild(unlockTxt);
unlockBtn.factoryIndex = i;
unlockBtn.txt = unlockTxt;
unlockBtn.down = function (x, y, obj) {
// Disable if investment panel is open or Çalışanlar paneli is open
if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) return;
var idx = this.factoryIndex;
if (!factoryUnlocks[idx] && money >= factoryUnlockCosts[idx]) {
money -= factoryUnlockCosts[idx];
updateMoneyText();
factoryUnlocks[idx] = true;
// Remove unlock button and text
this.destroy();
this.txt.destroy();
// Show upgrade button for this factory
showFactoryUpgradeButton(idx);
}
};
factoryUnlockBtns.push(unlockBtn);
// Don't show upgrade button for locked factories
continue;
}
// Show upgrade button for unlocked factories
var btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
btn.x = f.x;
// Add horizontal gap to upgrade/unlock/production buttons to match factory panel gap
btn.x = f.x;
// Move MB, CASE, FAN, HDD, COOLER (indices 5,6,7,8,9) buttons further down
if (i >= 5) {
btn.y = f.y + 200 + 80;
} else {
btn.y = f.y + 200;
}
game.addChild(btn);
var txt = new Text2((i === 0 ? "MOUSE" : i === 1 ? "KLAVYE" : i === 6 ? "CPU" : i === 7 ? "GPU" : i === 8 ? "MONITOR" : partTypes[i].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost, {
size: 44,
fill: '#fff'
});
txt.anchor.set(0.5, 0.5);
txt.x = btn.x;
txt.y = btn.y + 20;
game.addChild(txt);
btn.factoryIndex = i;
btn.txt = txt;
btn.down = function (x, y, obj) {
// Disable if investment panel is open or Çalışanlar paneli is open
if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) return;
var idx = this.factoryIndex;
var f = factories[idx];
// Çalışan 3 indirimini uygula
var discount = 1 - (worker3Level - 1) * 0.02;
if (discount < 0.1) discount = 0.1; // Maksimum %90 indirim
var discountedCost = Math.floor(f.upgradeCost * discount);
if (money >= discountedCost) {
toplamFabrikaYukseltme += discountedCost;
money -= discountedCost;
f.upgrade();
updateMoneyText && updateMoneyText();
this.txt.setText((idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : partTypes[idx].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost);
}
};
factoryBtns.push(btn);
}
// Helper to show upgrade button after unlock
function showFactoryUpgradeButton(idx) {
var f = factories[idx];
var btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
btn.x = f.x;
// Add horizontal gap to upgrade button after unlock to match factory panel gap
btn.x = f.x;
if (idx >= 5) {
btn.y = f.y + 200 + 80;
} else {
btn.y = f.y + 200;
}
game.addChild(btn);
var txt = new Text2((idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : partTypes[idx].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost, {
size: 44,
fill: '#fff'
});
txt.anchor.set(0.5, 0.5);
txt.x = btn.x;
txt.y = btn.y + 20;
game.addChild(txt);
btn.factoryIndex = idx;
btn.txt = txt;
btn.down = function (x, y, obj) {
// Disable if investment panel is open or Çalışanlar paneli is open
if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) return;
var idx = this.factoryIndex;
var f = factories[idx];
// Çalışan 3 indirimini uygula
var discount = 1 - (worker3Level - 1) * 0.02;
if (discount < 0.1) discount = 0.1; // Maksimum %90 indirim
var discountedCost = Math.floor(f.upgradeCost * discount);
if (money >= discountedCost) {
money -= discountedCost;
f.upgrade();
updateMoneyText && updateMoneyText();
this.txt.setText((idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : partTypes[idx].toUpperCase()) + " Yükselt\n₺" + f.upgradeCost);
}
};
factoryBtns[idx] = btn;
}
// Store upgrade button (moved to Mağazalar panel overlay)
var storeBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
storeBtn.x = magazalarPanel.x + magazalarPanel.width / 3;
storeBtn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120;
storeBtn.visible = false;
game.addChild(storeBtn);
var storeBtnTxt = new Text2('Mağaza Yükselt\n₺' + store.upgradeCost, {
size: 44,
fill: '#fff'
});
storeBtnTxt.anchor.set(0.5, 0.5);
storeBtnTxt.x = storeBtn.x;
storeBtnTxt.y = storeBtn.y + 20;
storeBtnTxt.visible = false;
game.addChild(storeBtnTxt);
storeBtn.down = function (x, y, obj) {
if (money >= store.upgradeCost) {
toplamStoreYukseltme += store.upgradeCost;
store.upgrade();
storeBtnTxt.setText('Mağaza Yükselt\n₺' + store.upgradeCost);
}
};
// --- Store 2 Upgrade Button (moved to Mağazalar panel overlay) ---
var store2Btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
store2Btn.x = magazalarPanel.x + magazalarPanel.width * 2 / 3;
store2Btn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120;
store2Btn.visible = false;
game.addChild(store2Btn);
var store2BtnTxt = new Text2('Mağaza 2 Yükselt\n₺' + store2.upgradeCost, {
size: 44,
fill: '#fff'
});
store2BtnTxt.anchor.set(0.5, 0.5);
store2BtnTxt.x = store2Btn.x;
store2BtnTxt.y = store2Btn.y + 20;
store2BtnTxt.visible = false;
game.addChild(store2BtnTxt);
store2Btn.down = function (x, y, obj) {
if (money >= store2.upgradeCost) {
toplamStoreYukseltme += store2.upgradeCost;
store2.upgrade();
store2BtnTxt.setText('Mağaza 2 Yükselt\n₺' + store2.upgradeCost);
}
};
// --- Store 3 Upgrade Button (Mağazalar panelinde) ---
var store3Btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
store3Btn.x = magazalarPanel.x + magazalarPanel.width * 3 / 4;
store3Btn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120;
store3Btn.visible = false;
game.addChild(store3Btn);
var store3BtnTxt = new Text2('Mağaza 3 Yükselt\n₺' + store3.upgradeCost, {
size: 44,
fill: '#fff'
});
store3BtnTxt.anchor.set(0.5, 0.5);
store3BtnTxt.x = store3Btn.x;
store3BtnTxt.y = store3Btn.y + 20;
store3BtnTxt.visible = false;
game.addChild(store3BtnTxt);
store3Btn.down = function (x, y, obj) {
if (money >= store3.upgradeCost) {
toplamStoreYukseltme += store3.upgradeCost;
store3.upgrade();
store3BtnTxt.setText('Mağaza 3 Yükselt\n₺' + store3.upgradeCost);
}
};
// --- Store 4 Upgrade Button (Mağazalar panelinde) ---
var store4Btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
store4Btn.x = magazalarPanel.x + magazalarPanel.width * 7 / 8;
store4Btn.y = magazalarPanel.y + magazalarPanel.height / 2 + 120;
store4Btn.visible = false;
game.addChild(store4Btn);
var store4BtnTxt = new Text2('Mağaza 4 Yükselt\n₺' + store4.upgradeCost, {
size: 44,
fill: '#fff'
});
store4BtnTxt.anchor.set(0.5, 0.5);
store4BtnTxt.x = store4Btn.x;
store4BtnTxt.y = store4Btn.y + 20;
store4BtnTxt.visible = false;
game.addChild(store4BtnTxt);
store4Btn.down = function (x, y, obj) {
if (money >= store4.upgradeCost) {
toplamStoreYukseltme += store4.upgradeCost;
store4.upgrade();
store4BtnTxt.setText('Mağaza 4 Yükselt\n₺' + store4.upgradeCost);
}
};
// --- Show/hide store upgrade buttons with Mağazalar panel ---
// Show panel on button press
magazalarBtn.down = function (x, y, obj) {
showMagazalarPanel();
};
magazalarBtnTxt.down = function (x, y, obj) {
showMagazalarPanel();
};
// Kapat butonu logic
magazalarKapatBtn.down = function (x, y, obj) {
magazalarPanel.visible = false;
magazalarPanelTitle.visible = false;
magazalarPanelText.visible = false;
magazalarKapatBtn.visible = false;
magazalarKapatBtnIcon.visible = false;
magazalarKapatBtnTxt.visible = false;
// Hide store upgrade buttons
if (typeof storeBtn !== "undefined") storeBtn.visible = false;
if (typeof storeBtnTxt !== "undefined") storeBtnTxt.visible = false;
if (typeof store2Btn !== "undefined") store2Btn.visible = false;
if (typeof store2BtnTxt !== "undefined") store2BtnTxt.visible = false;
if (typeof store2PurchaseBtn !== "undefined") store2PurchaseBtn.visible = false;
if (typeof store2PurchaseBtnTxt !== "undefined") store2PurchaseBtnTxt.visible = false;
if (typeof store3Btn !== "undefined") store3Btn.visible = false;
if (typeof store3BtnTxt !== "undefined") store3BtnTxt.visible = false;
if (typeof store4Btn !== "undefined") store4Btn.visible = false;
if (typeof store4BtnTxt !== "undefined") store4BtnTxt.visible = false;
// Restore all homepage buttons/UI
if (typeof store2PurchaseBtn !== "undefined") store2PurchaseBtn.visible = !store2Purchased;
if (typeof store2PurchaseBtnTxt !== "undefined") store2PurchaseBtnTxt.visible = !store2Purchased;
if (typeof store3PurchaseBtn !== "undefined") store3PurchaseBtn.visible = !store3Purchased;
if (typeof store3PurchaseBtnTxt !== "undefined") store3PurchaseBtnTxt.visible = !store3Purchased;
if (typeof store3PurchaseBtnIcon !== "undefined") store3PurchaseBtnIcon.visible = !store3Purchased;
if (typeof store4PurchaseBtn !== "undefined") store4PurchaseBtn.visible = !store4Purchased;
if (typeof store4PurchaseBtnTxt !== "undefined") store4PurchaseBtnTxt.visible = !store4Purchased;
if (typeof store4PurchaseBtnIcon !== "undefined") store4PurchaseBtnIcon.visible = !store4Purchased;
// Defensive: ensure other panels do not re-show these buttons after Mağazalar panel is closed
if (typeof magazaBtn !== "undefined") magazaBtn.visible = true;
if (typeof magazaBtnTxt !== "undefined") magazaBtnTxt.visible = true;
if (typeof yatirimBtn !== "undefined") yatirimBtn.visible = true;
if (typeof yatirimBtnTxt !== "undefined") yatirimBtnTxt.visible = true;
if (typeof bankBtn !== "undefined") bankBtn.visible = true;
if (typeof bankBtnTxt !== "undefined") bankBtnTxt.visible = true;
if (typeof soundBtn !== "undefined") soundBtn.visible = true;
if (typeof soundBtnTxt !== "undefined") soundBtnTxt.visible = true;
if (typeof newPageBtn !== "undefined") newPageBtn.visible = true;
if (typeof newPageBtnTxt !== "undefined") newPageBtnTxt.visible = true;
if (typeof madenlerBtn !== "undefined") madenlerBtn.visible = true;
if (typeof madenlerBtnTxt !== "undefined") madenlerBtnTxt.visible = true;
if (typeof magazalarBtn !== "undefined") magazalarBtn.visible = true;
if (typeof magazalarBtnTxt !== "undefined") magazalarBtnTxt.visible = true;
if (typeof languagesBtn !== "undefined") languagesBtn.visible = true;
if (typeof languagesBtnTxt !== "undefined") languagesBtnTxt.visible = true;
if (typeof infoBtn !== "undefined") infoBtn.visible = true;
if (typeof infoBtnTxt !== "undefined") infoBtnTxt.visible = true;
if (typeof howToBtn !== "undefined") howToBtn.visible = true;
if (typeof howToBtnTxt !== "undefined") howToBtnTxt.visible = true;
if (typeof borcOdeBtn !== "undefined") borcOdeBtn.visible = true;
if (typeof borcOdeBtnTxt !== "undefined") borcOdeBtnTxt.visible = true;
if (typeof mevduatBtn !== "undefined") mevduatBtn.visible = true;
if (typeof mevduatBtnTxt !== "undefined") mevduatBtnTxt.visible = true;
// Move stores and customers back to their original positions
if (typeof store !== "undefined") {
store.x = 1850;
store.y = 600;
store.visible = true; // Anasayfa'da mağazaları göster
}
if (typeof store2 !== "undefined") {
store2.x = 1850;
store2.y = 950;
store2.visible = true; // Anasayfa'da mağazaları göster
}
if (typeof store3 !== "undefined") {
store3.x = 1850;
store3.y = 1300;
store3.visible = true; // Anasayfa'da mağazaları göster
}
if (typeof store4 !== "undefined") {
store4.x = 1850;
store4.y = 1650;
store4.visible = true; // Anasayfa'da mağazaları göster
}
// Customer logic removed: no customers to reposition on Mağazalar panel close.
};
// --- Production Buttons and Logic for each factory ---
var prodBtns = [];
for (var i = 0; i < factories.length; i++) {
(function (idx) {
var f = factories[idx];
var btn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5
});
btn.x = f.x;
// Add horizontal gap to production buttons to match factory panel gap
btn.x = f.x;
// Move MB, CASE, FAN, HDD, COOLER (indices 5,6,7,8,9) production buttons further down
if (idx >= 5) {
btn.y = f.y + 350 + 80;
} else {
btn.y = f.y + 350;
}
game.addChild(btn);
var txt = new Text2('ÜRET', {
size: 36,
fill: '#fff'
});
txt.anchor.set(0.5, 0.5);
txt.x = btn.x;
txt.y = btn.y;
game.addChild(txt);
btn.factoryIndex = idx;
btn.down = function (x, y, obj) {
// Disable if investment panel is open or Çalışanlar paneli is open
if (yatirimPanel && yatirimPanel.visible || newPagePanel && newPagePanel.visible) return;
var idx = this.factoryIndex;
// Only allow production if factory is unlocked
if (!factoryUnlocks[idx]) {
// Optionally, flash or shake to indicate locked
tween(factories[idx], {
scaleX: 1.15,
scaleY: 1.15
}, {
duration: 80,
onFinish: function onFinish() {
tween(factories[idx], {
scaleX: 1,
scaleY: 1
}, {
duration: 80
});
}
});
return;
}
var f = factories[idx];
var part = partTypes[idx];
var produced = 0;
var hadMaterial = false;
for (var j = 0; j < f.production; j++) {
// Each part needs: copper:2, silicon:1, iron:1, silver:1, nikel:1, gold:1
// Calculate production cost as 50% of the sale price (which is 30~49, so use 40 as avg, or use 30 + Math.floor(Math.random()*20)/2 for dynamic)
var salePrice = 30 + Math.floor(Math.random() * 20);
var productionCost = Math.floor(salePrice * 0.5);
if (rawMaterials.copper >= 2 && rawMaterials.silicon >= 1 && rawMaterials.iron >= 1 && rawMaterials.silver >= 1 && rawMaterials.nikel >= 1 && rawMaterials.gold >= 1 && money >= productionCost) {
hadMaterial = true;
rawMaterials.copper -= 2;
rawMaterials.silicon -= 1;
rawMaterials.iron -= 1;
rawMaterials.silver -= 1;
rawMaterials.nikel -= 1;
rawMaterials.gold -= 1;
money -= productionCost;
updateMoneyText();
parts[part] += 1;
produced++;
}
}
if (produced > 0) {
updateRawText();
updatePartsText();
// Animate factory
tween(f, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 120,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(f, {
scaleX: 1,
scaleY: 1
}, {
duration: 120
});
}
});
} else if (!hadMaterial) {
// Show "Maden Kalmadı" warning for 1 minute (60 seconds = 3600 frames)
var oldText = txt.getText ? txt.getText() : '';
txt.setText('Maden Kalmadı');
tween(txt, {
tint: 0xff2222
}, {
duration: 120
});
LK.setTimeout(function () {
if (txt && txt.setText) txt.setText('ÜRET');
tween(txt, {
tint: 0xffffff
}, {
duration: 120
});
}, 3600); // 1 minute (60s * 60fps)
}
};
prodBtns.push(btn);
})(i);
}
// --- Customer/Store Logic ---
// Customer logic removed: customers are no longer used in the game.
// --- Game Update ---
game.update = function () {
// Auto-produce for mines
for (var i = 0; i < mines.length; i++) {
mines[i].update();
// Auto-produce for mine if enabled
if (mineAutoProduce[i]) {
// Çalışan 2'nin seviyesiyle üretim süresini azalt: her seviye %2 daha hızlı
var baseInterval = 30; // 0.5s
var speedBonus = 1 - (worker2Level - 1) * 0.02;
if (speedBonus < 0.1) speedBonus = 0.1; // min %90 azaltma (maks %900 hız)
var interval = Math.max(2, Math.floor(baseInterval * speedBonus));
if (!mines[i].autoTick) {
mines[i].autoTick = 0;
}
mines[i].autoTick++;
if (mines[i].autoTick >= interval) {
rawMaterials[mines[i].type] += mines[i].production;
updateRawText();
// Animate mine for feedback
tween(mines[i], {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 120,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(this.target, {
scaleX: 1,
scaleY: 1
}, {
duration: 120
});
}.bind({
target: mines[i]
})
});
mines[i].autoTick = 0;
}
}
}
// Auto-produce for factories
for (var i = 0; i < factories.length; i++) {
if (factoryAutoProduce[i] && factoryUnlocks[i]) {
if (!factories[i].autoTick) {
factories[i].autoTick = 0;
}
factories[i].autoTick++;
// Use per-factory production time (speed up with level)
// Çalışan 2'nin seviyesiyle üretim süresi indirimi uygula
var prodTime = factories[i].getProductionTime ? factories[i].getProductionTime() : 30;
// Çalışan 2'nin seviyesiyle fabrika üretim süresi indirimi uygula
var worker2FactoryBonus = 1 - (worker2Level - 1) * 0.02;
if (worker2FactoryBonus < 0.1) worker2FactoryBonus = 0.1; // min %90 azaltma (maks %900 hız)
prodTime = Math.max(2, Math.floor(prodTime * worker2FactoryBonus));
// Çalışan 2'nin seviyesiyle ek olarak üretim hızını %2 düşür (yani prodTime'ı tekrar %2 azalt)
var worker2ExtraSpeedBonus = 1 - (worker2Level - 1) * 0.02;
if (worker2ExtraSpeedBonus < 0.1) worker2ExtraSpeedBonus = 0.1;
prodTime = Math.max(2, Math.floor(prodTime * worker2ExtraSpeedBonus));
if (factories[i].autoTick >= prodTime) {
var f = factories[i];
var part = partTypes[i];
var produced = 0;
// Çalışan 2'nin seviyesiyle üretim miktarını artır: her seviye %2 daha fazla üretim
var worker2ProductionBonus = 1 + (worker2Level - 1) * 0.02;
var totalProduction = Math.floor(f.production * worker2ProductionBonus);
if (totalProduction < 1) totalProduction = 1;
for (var j = 0; j < totalProduction; j++) {
// Each part needs: copper:2, silicon:1, iron:1, silver:1, nikel:1, gold:1
// Calculate production cost as 50% of the sale price (which is 30~49, so use 40 as avg, or use 30 + Math.floor(Math.random()*20)/2 for dynamic)
var salePrice = 30 + Math.floor(Math.random() * 20);
var productionCost = Math.floor(salePrice * 0.5);
if (rawMaterials.copper >= 2 && rawMaterials.silicon >= 1 && rawMaterials.iron >= 1 && rawMaterials.silver >= 1 && rawMaterials.nikel >= 1 && rawMaterials.gold >= 1 && money >= productionCost) {
rawMaterials.copper -= 2;
rawMaterials.silicon -= 1;
rawMaterials.iron -= 1;
rawMaterials.silver -= 1;
rawMaterials.nikel -= 1;
rawMaterials.gold -= 1;
money -= productionCost;
updateMoneyText();
parts[part] += 1;
produced++;
}
}
if (produced > 0) {
updateRawText();
updatePartsText();
// Animate factory
tween(f, {
scaleX: 1.1,
scaleY: 1.1
}, {
duration: 120,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(this.target, {
scaleX: 1,
scaleY: 1
}, {
duration: 120
});
}.bind({
target: f
})
});
}
factories[i].autoTick = 0;
}
}
}
// Customer logic removed: no customer spawning or processing.
// --- Ava: Mağazalar stokta olan ürünleri otomatik satar ---
// Her mağaza için otomatik satış (her biri kendi hızında)
// Satış, mağaza görünür olmasa da devam etmeli
if (store && typeof store.tryAutoSell === "function") store.tryAutoSell();
if (store2 && store2Purchased && typeof store2.tryAutoSell === "function") store2.tryAutoSell();
if (store3 && store3Purchased && typeof store3.tryAutoSell === "function") store3.tryAutoSell();
if (store4 && store4Purchased && typeof store4.tryAutoSell === "function") store4.tryAutoSell();
};
// --- Dragging (for fun, not required) ---
var dragNode = null;
game.down = function (x, y, obj) {
// No drag for now
};
game.move = function (x, y, obj) {
// No drag for now
};
game.up = function (x, y, obj) {
// No drag for now
};
// --- Internet Offer Panel ---
// Panel variables
var offerPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 420,
height: 340,
x: 120,
y: 1366 // center of 2732
});
game.addChild(offerPanel);
var offerTitle = new Text2('İNTERNET TEKLİFİ', {
size: 32,
fill: '#fff'
});
// Move to right edge of panel
offerTitle.anchor.set(1, 0);
offerTitle.x = offerPanel.x + offerPanel.width / 2 - 20;
offerTitle.y = offerPanel.y - 140;
game.addChild(offerTitle);
var offerPartTxt = new Text2('', {
size: 28,
fill: '#bff'
});
offerPartTxt.anchor.set(0.5, 0);
offerPartTxt.x = offerPanel.x;
offerPartTxt.y = offerPanel.y - 60;
game.addChild(offerPartTxt);
var offerAmountTxt = new Text2('', {
size: 28,
fill: '#fff'
});
offerAmountTxt.anchor.set(0.5, 0);
offerAmountTxt.x = offerPanel.x;
offerAmountTxt.y = offerPanel.y - 10;
game.addChild(offerAmountTxt);
var offerPriceTxt = new Text2('', {
size: 28,
fill: '#ffb'
});
offerPriceTxt.anchor.set(0.5, 0);
offerPriceTxt.x = offerPanel.x;
offerPriceTxt.y = offerPanel.y + 40;
game.addChild(offerPriceTxt);
var offerBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 220,
height: 70,
x: offerPanel.x,
y: offerPanel.y + 180 // moved 30px lower (was 150), now 180
});
game.addChild(offerBtn);
var offerBtnTxt = new Text2('Satın Al', {
size: 36,
fill: '#fff'
});
offerBtnTxt.anchor.set(0.5, 0.5);
offerBtnTxt.x = offerBtn.x;
offerBtnTxt.y = offerBtn.y;
game.addChild(offerBtnTxt);
// Offer state
var currentOffer = {
part: null,
amount: 0,
price: 0,
active: false // yeni teklif aktif mi
};
// Helper to generate a new offer
var offerTimeLeft = 0;
var offerTimerInterval = null;
var offerTimeTxt = new Text2('', {
size: 32,
fill: '#ffb'
});
offerTimeTxt.anchor.set(0.5, 0);
offerTimeTxt.x = offerPanel.x;
offerTimeTxt.y = offerPanel.y + 90;
game.addChild(offerTimeTxt);
function updateOfferTimeTxt() {
if (offerTimeLeft > 0) {
var min = Math.floor(offerTimeLeft / 60);
var sec = offerTimeLeft % 60;
var timeStr = min > 0 ? min + " dk " + (sec < 10 ? "0" : "") + sec + " sn" : sec + " sn";
offerTimeTxt.setText("Yeni teklif: " + timeStr);
} else {
offerTimeTxt.setText('');
}
}
function generateInternetOffer() {
// Pick a random part type
var idx = Math.floor(Math.random() * partTypes.length);
var part = partTypes[idx];
// Random amount: 2-8
var amount = 2 + Math.floor(Math.random() * 7);
// Random price per item: 18-32
var pricePer = 18 + Math.floor(Math.random() * 15);
var totalPrice = pricePer * amount;
currentOffer.part = part;
currentOffer.amount = amount;
currentOffer.price = totalPrice;
currentOffer.active = true;
// Update UI
offerPartTxt.setText(idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : part.toUpperCase());
offerAmountTxt.setText("Adet: " + amount);
offerPriceTxt.setText("Toplam: ₺" + totalPrice);
offerBtn.visible = true;
offerBtnTxt.visible = true;
// Rastgele 1-2 dakika (60-120 saniye) arası süre belirle
offerTimeLeft = (60 + Math.floor(Math.random() * 61)) * 60;
updateOfferTimeTxt();
// Start timer for next offer
if (offerTimerInterval) {
LK.clearInterval(offerTimerInterval);
offerTimerInterval = null;
}
offerTimerInterval = LK.setInterval(function () {
if (!currentOffer.active) {
LK.clearInterval(offerTimerInterval);
offerTimerInterval = null;
return;
}
offerTimeLeft--;
updateOfferTimeTxt();
if (offerTimeLeft <= 0) {
// Süre doldu, yeni teklif gelsin
currentOffer.active = false;
offerBtn.visible = false;
offerBtnTxt.visible = false;
offerPartTxt.setText("Süre doldu!");
offerAmountTxt.setText("");
offerPriceTxt.setText("");
updateOfferTimeTxt();
LK.clearInterval(offerTimerInterval);
offerTimerInterval = null;
LK.setTimeout(function () {
generateInternetOffer();
}, 60); // 1 frame sonra yeni teklif gelsin
}
}, 60); // 1 saniye
}
generateInternetOffer();
// Button logic
offerBtn.down = function (x, y, obj) {
if (!currentOffer.active) return;
if (money >= currentOffer.price) {
money -= currentOffer.price;
toplamInternetTeklifHarcamasi += currentOffer.price;
parts[currentOffer.part] += currentOffer.amount;
updateMoneyText();
updatePartsText();
// Animate panel for feedback
tween(offerPanel, {
scaleX: 1.08,
scaleY: 1.08
}, {
duration: 120,
onFinish: function onFinish() {
tween(offerPanel, {
scaleX: 1,
scaleY: 1
}, {
duration: 120
});
}
});
// Teklif tamamlandı, yeni teklif gelene kadar butonu kapat
currentOffer.active = false;
offerBtn.visible = false;
offerBtnTxt.visible = false;
offerPartTxt.setText("Teklif tamamlandı!");
offerAmountTxt.setText("");
offerPriceTxt.setText("");
offerTimeLeft = 1200;
updateOfferTimeTxt();
if (offerTimerInterval) {
LK.clearInterval(offerTimerInterval);
offerTimerInterval = null;
}
// Yeni teklif rastgele 1-2 dakika sonra gelsin
var nextOfferDelay = (60 + Math.floor(Math.random() * 61)) * 60;
LK.setTimeout(function () {
generateInternetOffer();
}, nextOfferDelay);
} else {
// Not enough money, flash button red
tween(offerBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(offerBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
}
};
// --- Toplu Satış Paneli ---
var sellPanel = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 420,
height: 340,
x: 120,
y: 1366 + 400 // offerPanel.y + 400 px altına
});
game.addChild(sellPanel);
var sellTitle = new Text2('TOPLU SATIŞ TEKLİFİ', {
size: 32,
fill: '#fff'
});
// Move to right edge of panel
sellTitle.anchor.set(1, 0);
sellTitle.x = sellPanel.x + sellPanel.width / 2 - 20;
sellTitle.y = sellPanel.y - 140;
game.addChild(sellTitle);
var sellPartTxt = new Text2('', {
size: 28,
fill: '#bff'
});
sellPartTxt.anchor.set(0.5, 0);
sellPartTxt.x = sellPanel.x;
sellPartTxt.y = sellPanel.y - 60;
game.addChild(sellPartTxt);
var sellAmountTxt = new Text2('', {
size: 28,
fill: '#fff'
});
sellAmountTxt.anchor.set(0.5, 0);
sellAmountTxt.x = sellPanel.x;
sellAmountTxt.y = sellPanel.y - 10;
game.addChild(sellAmountTxt);
var sellPriceTxt = new Text2('', {
size: 28,
fill: '#ffb'
});
sellPriceTxt.anchor.set(0.5, 0);
sellPriceTxt.x = sellPanel.x;
sellPriceTxt.y = sellPanel.y + 40;
game.addChild(sellPriceTxt);
var sellBtn = LK.getAsset('button', {
anchorX: 0.5,
anchorY: 0.5,
width: 220,
height: 70,
x: sellPanel.x,
y: sellPanel.y + 180 // moved 30px lower (was 150), now 180
});
game.addChild(sellBtn);
var sellBtnTxt = new Text2('Sat', {
size: 36,
fill: '#fff'
});
sellBtnTxt.anchor.set(0.5, 0.5);
sellBtnTxt.x = sellBtn.x;
sellBtnTxt.y = sellBtn.y;
game.addChild(sellBtnTxt);
// Satış teklifi state
var currentSellOffer = {
part: null,
amount: 0,
price: 0,
active: false
};
// Helper to generate a new sell offer
var sellOfferTimeLeft = 0;
var sellOfferTimerInterval = null;
var sellOfferTimeTxt = new Text2('', {
size: 32,
fill: '#ffb'
});
sellOfferTimeTxt.anchor.set(0.5, 0);
sellOfferTimeTxt.x = sellPanel.x;
sellOfferTimeTxt.y = sellPanel.y + 90;
game.addChild(sellOfferTimeTxt);
function updateSellOfferTimeTxt() {
if (sellOfferTimeLeft > 0) {
var min = Math.floor(sellOfferTimeLeft / 60);
var sec = sellOfferTimeLeft % 60;
var timeStr = min > 0 ? min + " dk " + (sec < 10 ? "0" : "") + sec + " sn" : sec + " sn";
sellOfferTimeTxt.setText("Yeni teklif: " + timeStr);
} else {
sellOfferTimeTxt.setText('');
}
}
// Helper to generate a new sell offer
function generateSellOffer() {
// Sadece stoğunda en az 2 olanlardan rastgele seç
var available = [];
for (var i = 0; i < partTypes.length; i++) {
if (parts[partTypes[i]] >= 2) available.push(partTypes[i]);
}
// Eğer hiç stoğu olan ürün yoksa, teklif oluşturma
if (available.length === 0) {
currentSellOffer.part = null;
currentSellOffer.amount = 0;
currentSellOffer.price = 0;
currentSellOffer.active = false;
sellPartTxt.setText("Stokta ürün yok");
sellAmountTxt.setText("");
sellPriceTxt.setText("");
sellBtn.visible = false;
sellBtnTxt.visible = false;
return;
}
var idx = Math.floor(Math.random() * available.length);
var part = available[idx];
// Satış miktarı: mevcut stoğun %50-%75 aralığında, en az 2, en fazla 8 ve stoğun kendisinden fazla olamaz
var stock = parts[part];
var minAmount = Math.max(2, Math.floor(stock * 0.5));
var maxAmount = Math.max(minAmount, Math.min(Math.floor(stock * 0.75), 8));
var amount = minAmount;
if (maxAmount > minAmount) {
amount = minAmount + Math.floor(Math.random() * (maxAmount - minAmount + 1));
}
// Satış fiyatı: 28-45 arası birim fiyat
var pricePer = 28 + Math.floor(Math.random() * 18);
var totalPrice = pricePer * amount;
currentSellOffer.part = part;
currentSellOffer.amount = amount;
currentSellOffer.price = totalPrice;
currentSellOffer.active = true;
sellPartTxt.setText(idx === 0 ? "MOUSE" : idx === 1 ? "KLAVYE" : idx === 6 ? "CPU" : idx === 7 ? "GPU" : idx === 8 ? "MONITOR" : idx === 9 ? "KASA" : part.toUpperCase());
sellAmountTxt.setText("Adet: " + amount);
sellPriceTxt.setText("Toplam: ₺" + totalPrice);
sellBtn.visible = true;
sellBtnTxt.visible = true;
// Süreyi rastgele 1-2 dakika (60-120 saniye) arası belirle
sellOfferTimeLeft = (60 + Math.floor(Math.random() * 61)) * 60;
updateSellOfferTimeTxt();
// Timer varsa temizle
if (sellOfferTimerInterval) {
LK.clearInterval(sellOfferTimerInterval);
sellOfferTimerInterval = null;
}
sellOfferTimerInterval = LK.setInterval(function () {
if (!currentSellOffer.active) {
LK.clearInterval(sellOfferTimerInterval);
sellOfferTimerInterval = null;
return;
}
sellOfferTimeLeft--;
updateSellOfferTimeTxt();
if (sellOfferTimeLeft <= 0) {
// Süre doldu, yeni teklif gelsin
currentSellOffer.active = false;
sellBtn.visible = false;
sellBtnTxt.visible = false;
sellPartTxt.setText("Süre doldu!");
sellAmountTxt.setText("");
sellPriceTxt.setText("");
updateSellOfferTimeTxt();
LK.clearInterval(sellOfferTimerInterval);
sellOfferTimerInterval = null;
LK.setTimeout(function () {
generateSellOffer();
}, 60); // 1 frame sonra yeni teklif gelsin
}
}, 60); // 1 saniye
}
generateSellOffer();
// Satış butonu logic
sellBtn.down = function (x, y, obj) {
// If not active or not enough stock, do nothing (button is visually disabled)
if (!currentSellOffer.active || parts[currentSellOffer.part] < currentSellOffer.amount) {
// Optionally, flash button red and show warning if user tries to press when not enough stock
tween(sellBtn, {
tint: 0xff2222
}, {
duration: 120,
onFinish: function onFinish() {
tween(sellBtn, {
tint: 0x222222
}, {
duration: 120
});
}
});
// 'Stok yetersiz' uyarısı göster
sellBtnTxt.setText('Stok yetersiz');
LK.setTimeout(function () {
// Eğer buton hala görünürse eski haline döndür
if (sellBtn.visible) {
sellBtnTxt.setText('Sat');
}
// Teklifi yenileme, teklif tamamlanmasın!
}, 300); // 5 saniye = 300 frame
return;
}
// Satış işlemi
parts[currentSellOffer.part] -= currentSellOffer.amount;
money += currentSellOffer.price;
toplamTopluSatisGeliri += currentSellOffer.price;
updateMoneyText();
updatePartsText();
// Panel animasyonu
tween(sellPanel, {
scaleX: 1.08,
scaleY: 1.08
}, {
duration: 120,
onFinish: function onFinish() {
tween(sellPanel, {
scaleX: 1,
scaleY: 1
}, {
duration: 120
});
}
});
// Teklif tamamlandı, yeni teklif gelene kadar butonu kapat
currentSellOffer.active = false;
sellBtn.visible = false;
sellBtnTxt.visible = false;
sellPartTxt.setText("Teklif tamamlandı!");
sellAmountTxt.setText("");
sellPriceTxt.setText("");
// Yeni teklif rastgele 1-2 dakika sonra gelsin
var nextSellOfferDelay = (60 + Math.floor(Math.random() * 61)) * 60;
LK.setTimeout(function () {
generateSellOffer();
}, nextSellOfferDelay);
};
// Satış teklifi her rastgele 1-5 dakikada bir yenilensin (eğer aktif değilse)
function scheduleNextSellOfferInterval() {
var interval = (60 + Math.floor(Math.random() * 61)) * 60;
LK.setTimeout(function () {
if (!currentSellOffer.active) generateSellOffer();
scheduleNextSellOfferInterval();
}, interval);
}
scheduleNextSellOfferInterval();
// Image file for CPU product (part_cpu) is now registered with id '6842c1a1c660c325a06c2abc' ===================================================================
--- original.js
+++ change.js
@@ -4012,11 +4012,9 @@
}
}
}
// Ava: Update maden depo stock area if visible
- if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x === "number" &&
- // Defensive: ensure .x exists before using .visible
- madenDepoStockTxt.visible && typeof updateMadenDepoStockTxt === "function") {
+ if (typeof madenDepoStockTxt !== "undefined" && madenDepoStockTxt && typeof madenDepoStockTxt.visible === "boolean" && typeof madenDepoStockTxt.x !== "undefined" && typeof madenDepoStockTxt.x === "number" && madenDepoStockTxt.visible && typeof updateMadenDepoStockTxt === "function") {
updateMadenDepoStockTxt();
}
}
// Defensive: updateRawText should not assume mines[i] exists when called elsewhere
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