/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
// Bomba
var Bomb = Container.expand(function (sx, sy, tx, ty) {
	var self = Container.call(this);
	self.asset = self.attachAsset('bomb', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.x = sx;
	self.y = sy;
	self.tx = tx;
	self.ty = ty;
	self.speed = 18;
	self.toRemove = false;
	self.update = function () {
		var dx = self.tx - self.x;
		var dy = self.ty - self.y;
		var d = Math.sqrt(dx * dx + dy * dy);
		if (d < 30) {
			// Çarpışma kontrolü
			for (var i = pirateShips.length - 1; i >= 0; i--) {
				var ship = pirateShips[i];
				// Sadece PirateShip sınıfı örneklerini hedef al, devriye gemilerini asla hedef alma
				var isNavy = false;
				for (var ni = 0; ni < navyShips.length; ni++) {
					if (ship === navyShips[ni]) {
						isNavy = true;
						break;
					}
				}
				if (ship && ship.constructor && ship.constructor === PirateShip && self.intersects(ship) && !isNavy && typeof ship.hp !== "undefined" && ship.hp > 0) {
					var dead = ship.takeDamage(25); // Her bomba vuruşu 25 hasar
					if (dead) {
						pirateShips.splice(i, 1);
					}
					self.toRemove = true;
					break;
				}
			}
			if (!self.toRemove) {
				self.toRemove = true;
			}
		} else {
			self.x += self.speed * dx / d;
			self.y += self.speed * dy / d;
		}
		// Ekran dışı
		if (self.x < -100 || self.x > 2148 || self.y < -100 || self.y > 2832) {
			self.toRemove = true;
		}
	};
	return self;
});
// Ada
var Island = Container.expand(function () {
	var self = Container.call(this);
	self.asset = self.attachAsset('island', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	return self;
});
// Ordu Gemisi
var NavyShip = Container.expand(function () {
	var self = Container.call(this);
	self.asset = self.attachAsset('navy', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// (No hp or takeDamage logic for NavyShip)
	self.bombCooldown = 0;
	self.target = null;
	self.speed = 1.8; //{G} // Devriye gemisi hızı azaltıldı (daha yavaş)
	self.bombs = [];
	self.patrolPoints = [[2048 / 2, 300], [2048 - 300, 700], [2048 - 300, 2000], [300, 2000], [300, 700]];
	self.patrolIndex = 0;
	self.patrolWait = 0;
	self.radarRange = 600 * 600; // radar menzili (kare mesafe)
	self.update = function () {
		// 0-60sn: 2.8, 60-120sn: 3.5, 120-180sn: 4.2, 180+sn: 4.9
		var elapsedSeconds = Math.floor(LK.ticks / 60);
		if (elapsedSeconds < 60) {
			self.speed = 2.8;
		} else if (elapsedSeconds < 120) {
			self.speed = 3.5;
		} else if (elapsedSeconds < 180) {
			self.speed = 4.2;
		} else {
			self.speed = 4.9;
		}
		// Önce radar menziline giren bir korsan gemisi var mı bak
		var foundTarget = null;
		var minDist = 999999;
		for (var i = 0; i < pirateShips.length; i++) {
			var candidate = pirateShips[i];
			// Sadece PirateShip sınıfı örneklerini hedef al, diğer devriye gemilerini asla hedef alma
			var isNavyCandidate = false;
			for (var ni = 0; ni < navyShips.length; ni++) {
				if (candidate === navyShips[ni]) {
					isNavyCandidate = true;
					break;
				}
			}
			if (!candidate || !candidate.constructor || candidate.constructor !== PirateShip || candidate === self || isNavyCandidate) continue;
			var dx = candidate.x - self.x;
			var dy = candidate.y - self.y;
			var dist = dx * dx + dy * dy;
			if (dist < self.radarRange && dist < minDist) {
				minDist = dist;
				foundTarget = candidate;
			}
		}
		if (foundTarget) {
			self.target = foundTarget;
		} else {
			self.target = null;
		}
		// Eğer hedef varsa ona yönel ve bomba at
		if (self.target) {
			var dx = self.target.x - self.x;
			var dy = self.target.y - self.y;
			var d = Math.sqrt(dx * dx + dy * dy);
			if (d > 10) {
				self.x += self.speed * dx / d;
				self.y += self.speed * dy / d;
			}
			// Bomba at
			self.bombCooldown--;
			if (self.bombCooldown <= 0) {
				self.bombCooldown = 90 + Math.floor(Math.random() * 60);
				self.shootBomb();
			}
			self.patrolWait = 0; // hedef varken bekleme yok
		} else {
			// Devriye rotasında gez
			if (self.patrolPoints && self.patrolPoints.length > 0) {
				var pt = self.patrolPoints[self.patrolIndex];
				var dx = pt[0] - self.x;
				var dy = pt[1] - self.y;
				var d = Math.sqrt(dx * dx + dy * dy);
				if (d > 10) {
					self.x += self.speed * dx / d;
					self.y += self.speed * dy / d;
					self.patrolWait = 0;
				} else {
					// Noktaya ulaştı, biraz bekle
					if (self.patrolWait < 30) {
						self.patrolWait++;
					} else {
						self.patrolWait = 0;
						self.patrolIndex = (self.patrolIndex + 1) % self.patrolPoints.length;
					}
				}
			}
		}
		// Bombaları güncelle
		for (var i = self.bombs.length - 1; i >= 0; i--) {
			var bomb = self.bombs[i];
			bomb.update();
			if (bomb.toRemove) {
				bomb.destroy();
				self.bombs.splice(i, 1);
			}
		}
	};
	self.shootBomb = function () {
		if (!self.target) return;
		var bomb = new Bomb(self.x, self.y, self.target.x, self.target.y);
		game.addChild(bomb);
		self.bombs.push(bomb);
		LK.getSound('bomb').play();
	};
	// Devriye gemisi hasar alma fonksiyonu
	return self;
});
// Korsan Gemisi
var PirateShip = Container.expand(function () {
	var self = Container.call(this);
	self.level = 1; // 1-5
	self.hp = 3; // Her seviye için can
	self.maxHp = 3;
	self.isDragging = false;
	self.isMerging = false;
	self.mergeTarget = null;
	self.collecting = false;
	self.collectTimeout = null;
	self.shootCooldown = 0; // 4 ve 5. seviye için ateş etme bekleme süresi
	self.bullets = []; // kendi mermileri
	// Sağlık barı için Container ve bar asset'i
	self.hpBarContainer = new Container();
	self.hpBarBg = LK.getAsset('bullet', {
		width: 80,
		height: 14,
		color: 0x333333,
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.hpBarFg = LK.getAsset('bullet', {
		width: 76,
		height: 10,
		color: 0x4caf50,
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.hpBarContainer.addChild(self.hpBarBg);
	self.hpBarContainer.addChild(self.hpBarFg);
	self.hpBarFg.x = 0; // Foreground bar centered on background
	self.hpBarContainer.y = 0; // Yükseklik asset'e göre ayarlanacak
	// Seviye ve cana göre asset seçimi
	function updateGraphics() {
		if (self.asset) {
			self.removeChild(self.asset);
		}
		// Seviye 1-5 arası assetId belirle
		var assetId;
		if (self.level === 1) {
			assetId = 'pirate1';
		} else if (self.level === 2) {
			assetId = 'pirate2';
		} else if (self.level === 3) {
			assetId = 'pirate3';
		} else if (self.level === 4) {
			assetId = 'pirate4';
		} else if (self.level >= 5) {
			// 5 ve üstü seviye için en büyük asseti kullan
			assetId = 'pirate5';
		}
		self.asset = self.attachAsset(assetId, {
			anchorX: 0.5,
			anchorY: 0.5
		});
		// Görünürlük ve işlevsellik: 3 ve üstü seviyeler için de asset ve etkileşim aktif
		self.visible = true;
		self.interactive = true;
		// Asset boyutunu güncelle (gerekirse)
		if (self.hpText && self.asset) {
			self.hpText.x = 0;
			self.hpText.y = self.asset.height * 0.6;
		}
		// Sağlık barını asset boyutuna göre konumlandır
		if (self.hpBarContainer && self.asset) {
			self.hpBarContainer.x = 0;
			self.hpBarContainer.y = -self.asset.height * 0.55;
		}
	}
	updateGraphics();
	// Can göstergesi
	self.hpText = new Text2(self.hp + '', {
		size: 60,
		fill: "#fff"
	});
	self.hpText.anchor.set(0.5, 1.2);
	self.addChild(self.hpText);
	// Sağlık barını ekle
	self.addChild(self.hpBarContainer);
	// Sağlık barını güncelle
	self.updateHpBar = function () {
		// Bar genişliği ve oranı
		var ratio = Math.max(0, Math.min(1, self.hp / self.maxHp));
		self.hpBarFg.width = 76 * ratio;
		self.hpBarFg.x = 0; // Keep bar centered as width changes
		// Renk değişimi (kırmızıya yaklaşsın)
		if (ratio > 0.5) {
			self.hpBarFg.tint = 0x4caf50;
		} else if (ratio > 0.2) {
			self.hpBarFg.tint = 0xffc107;
		} else {
			self.hpBarFg.tint = 0xf44336;
		}
	};
	self.updateHp = function () {
		self.hpText.setText(self.hp + '');
		self.updateHpBar();
	};
	// Seviye başına sabit can değerleri uygula
	self.setLevel = function (lvl) {
		self.level = lvl;
		// Seviye başına can değerleri
		if (self.level === 1) {
			self.maxHp = 100;
		} else if (self.level === 2) {
			self.maxHp = 125;
		} else if (self.level === 3) {
			self.maxHp = 150;
		} else if (self.level === 4) {
			self.maxHp = 175;
		} else if (self.level >= 5) {
			self.maxHp = 200;
		}
		self.hp = self.maxHp;
		updateGraphics();
		self.updateHp();
	};
	self.takeDamage = function (dmg) {
		self.hp -= dmg;
		if (self.hp < 0) self.hp = 0;
		self.updateHp();
		LK.effects.flashObject(self, 0xff0000, 400);
		LK.getSound('hit').play();
		if (self.hp <= 0) {
			self.hp = 0;
			self.updateHp();
			self.destroy();
			return true;
		}
		return false;
	};
	self.heal = function () {
		self.hp = self.maxHp;
		self.updateHp();
	};
	self.collectGold = function (island) {
		if (self.collecting) return;
		self.collecting = true;
		LK.getSound('gold').play();
		// Altın animasyonu
		var gold = LK.getAsset('gold', {
			anchorX: 0.5,
			anchorY: 0.5,
			x: island.x,
			y: island.y
		});
		game.addChild(gold);
		tween(gold, {
			x: self.x,
			y: self.y
		}, {
			duration: 500,
			easing: tween.cubicOut,
			onFinish: function onFinish() {
				gold.destroy();
			}
		});
		// Altın ekle
		goldCount += 1;
		updateGoldText();
		// Skor: Altın toplama başına +2 puan
		if (typeof score !== "undefined") {
			score += 2;
			if (typeof updateScoreText === "function") updateScoreText();
		}
		// Kısa süre sonra tekrar toplayabilsin
		self.collectTimeout = LK.setTimeout(function () {
			self.collecting = false;
		}, 1200);
	};
	// (No PirateBullet or shootAtNavy logic)
	self.update = function () {
		// Mermileri güncelle
		for (var i = self.bullets.length - 1; i >= 0; i--) {
			var bullet = self.bullets[i];
			if (bullet && typeof bullet.update === "function" && typeof self.hp !== "undefined" && self.hp > 0) bullet.update();
			if (bullet && bullet.toRemove) {
				bullet.destroy();
				self.bullets.splice(i, 1);
			}
		}
		// Ateş etme cooldown
		if (self.shootCooldown > 0) self.shootCooldown--;
		// (No self-defense for pirate ships)
	};
	return self;
});
// Tersane Adası (Shipyard Island)
var ShipyardIsland = Container.expand(function () {
	var self = Container.call(this);
	self.asset = self.attachAsset('shipyard_island', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.isShipyard = true;
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x1a237e
});
/**** 
* Game Code
****/ 
// Sesler
// Altın simgesi
// Bomba
// Arka plan ekle
var background = LK.getAsset('ocean_bg', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2,
	scaleX: 1,
	scaleY: 1
});
background.alpha = 1;
game.addChildAt(background, 0);
// Ordu gemisi
// Ada (altın kaynağı)
// Korsan gemisi seviyelerine göre farklı renk ve boyutlarda kutular
// Oyun değişkenleri
var pirateShips = [];
var islands = [];
var navyShips = []; // Birden fazla devriye gemisi için dizi
var goldCount = 0;
var goldText = null;
var score = 0;
var scoreText = null;
var spawnBtn = null;
var draggingShip = null;
var dragOffsetX = 0;
var dragOffsetY = 0;
var mergeCandidate = null;
var mergeAnim = false;
// Skor göstergesi
scoreText = new Text2('Skor: 0', {
	size: 90,
	fill: 0xFFFFFF
});
scoreText.anchor.set(1, 0); // sağ üst köşe için anchorX=1
LK.gui.topRight.addChild(scoreText);
function updateScoreText() {
	scoreText.setText('Skor: ' + score);
}
// Altın göstergesi
goldText = new Text2('Altın: 0', {
	size: 90,
	fill: 0xFFD700
});
goldText.anchor.set(0, 0); // sol üst köşe için anchorX=0
LK.gui.topLeft.addChild(goldText);
function updateGoldText() {
	goldText.setText('Altın: ' + goldCount);
}
// Korsan gemisi üretme butonu kaldırıldı
// Ada yerleşimi
function spawnIslands() {
	var positions = [[400, 700], [1648, 700], [400, 2000], [1648, 2000], [1024, 1400]];
	for (var i = 0; i < positions.length; i++) {
		// Son ada Shipyard olarak atanacak
		var island;
		if (i === positions.length - 1) {
			island = new ShipyardIsland();
			island.isShipyard = true;
		} else {
			island = new Island();
			island.isShipyard = false;
		}
		island.x = positions[i][0];
		island.y = positions[i][1];
		game.addChild(island);
		islands.push(island);
	}
}
// Başlangıç korsan gemisi
function spawnPirateShip(level, x, y) {
	var ship = new PirateShip();
	ship.setLevel(level);
	ship.x = x;
	ship.y = y;
	pirateShips.push(ship);
	game.addChild(ship);
	LK.getSound('spawn').play();
	return ship;
}
// Ordu gemisi başlat
function spawnNavyShip() {
	var newNavy = new NavyShip();
	// Rastgele bir devriye rotası oluştur
	var patrolTemplates = [[[2048 / 2, 300], [2048 - 300, 700], [2048 - 300, 2000], [300, 2000], [300, 700]], [[300, 300], [2048 - 300, 300], [2048 - 300, 2732 - 300], [300, 2732 - 300]], [[1024, 400], [1800, 1000], [1024, 2200], [300, 1000]], [[400, 700], [1648, 700], [1648, 2000], [400, 2000]], [[600, 600], [2048 - 600, 600], [2048 - 600, 2732 - 600], [600, 2732 - 600]]];
	var idx = Math.floor(Math.random() * patrolTemplates.length);
	newNavy.patrolPoints = patrolTemplates[idx];
	newNavy.patrolIndex = 0;
	// Başlangıç noktası rotanın ilk noktası
	newNavy.x = newNavy.patrolPoints[0][0];
	newNavy.y = newNavy.patrolPoints[0][1];
	game.addChild(newNavy);
	navyShips.push(newNavy);
	return newNavy;
}
// Gemi birleştirme
function tryMergeShips(ship1, ship2) {
	if (ship1.level !== ship2.level) return false;
	if (ship1.isMerging || ship2.isMerging) return false;
	if (ship1 === ship2) return false;
	if (ship1.level >= 5) return false;
	ship1.isMerging = true;
	ship2.isMerging = true;
	mergeAnim = true;
	// Birleştirme animasyonu
	var mx = (ship1.x + ship2.x) / 2;
	var my = (ship1.y + ship2.y) / 2;
	tween(ship1, {
		x: mx,
		y: my,
		scaleX: 1.2,
		scaleY: 1.2
	}, {
		duration: 300,
		easing: tween.cubicInOut
	});
	tween(ship2, {
		x: mx,
		y: my,
		scaleX: 1.2,
		scaleY: 1.2
	}, {
		duration: 300,
		easing: tween.cubicInOut,
		onFinish: function onFinish() {
			// Yeni üst seviye gemi
			// Eski gemileri silmeden önce indexlerini al
			var idx1 = pirateShips.indexOf(ship1);
			var idx2 = pirateShips.indexOf(ship2);
			// Eski gemileri sil
			if (idx1 > -1) pirateShips.splice(idx1, 1);
			if (idx2 > -1) pirateShips.splice(idx2, 1);
			ship1.destroy();
			ship2.destroy();
			// Yeni üst seviye gemiyi ekle
			var newShip = spawnPirateShip(ship1.level + 1, mx, my);
			// --- EK: yeni geminin event handler'larını ve state'ini sıfırla ---
			newShip.isDragging = false;
			newShip.isMerging = false;
			newShip.mergeTarget = null;
			newShip.collecting = false;
			newShip.collectTimeout = null;
			LK.getSound('merge').play();
			mergeAnim = false;
			// Skor: Birleştirme başına +10 puan
			score += 10;
			updateScoreText();
			// --- YENİ EKLEME: yeni gemiyle hemen birleştirme ve altın toplama kontrolü ---
			// Merge sonrası yeni gemiyle hemen tekrar merge veya altın toplama kontrolü
			// 1. Merge kontrolü
			mergeCandidate = null;
			for (var i = 0; i < pirateShips.length; i++) {
				var other = pirateShips[i];
				if (other === newShip) continue;
				if (other.level !== newShip.level) continue;
				var dx = newShip.x - other.x;
				var dy = newShip.y - other.y;
				var r = Math.max(newShip.asset.width, other.asset.width) / 2 + 30;
				if (dx * dx + dy * dy < r * r) {
					mergeCandidate = other;
					break;
				}
			}
			if (mergeCandidate) {
				tryMergeShips(newShip, mergeCandidate);
			}
			// 2. Altın toplama kontrolü
			for (var j = 0; j < islands.length; j++) {
				var island = islands[j];
				if (newShip.intersects(island)) {
					newShip.collectGold(island);
				}
			}
		}
	});
}
// Gemi ekleme tuşu kaldırıldı, otomatik üretim eklenecek
// Gemi sürükleme ve birleştirme
game.down = function (x, y, obj) {
	if (mergeAnim) return;
	// Eğer zaten bir gemi sürükleniyorsa ve o gemi hala pirateShips içindeyse yeni bir sürükleme başlatma
	if (draggingShip && draggingShip.isDragging && pirateShips.indexOf(draggingShip) !== -1) return;
	// Gemilerden birine tıklandı mı?
	for (var i = pirateShips.length - 1; i >= 0; i--) {
		var ship = pirateShips[i];
		var dx = x - ship.x;
		var dy = y - ship.y;
		var r = Math.max(ship.asset.width, ship.asset.height) / 2;
		if (dx * dx + dy * dy < r * r) {
			// Sadece bir gemi sürüklenebilir, başka bir gemi sürükleniyorsa bırak
			if (draggingShip && draggingShip !== ship) {
				draggingShip.isDragging = false;
			}
			draggingShip = ship;
			dragOffsetX = ship.x - x;
			dragOffsetY = ship.y - y;
			ship.isDragging = true;
			break;
		}
	}
};
game.move = function (x, y, obj) {
	if (mergeAnim) return;
	// draggingShip pirateShips'ten silindiyse veya draggingShip yoksa sürüklemeyi bırak
	if (!draggingShip || pirateShips.indexOf(draggingShip) === -1) {
		if (draggingShip) draggingShip.isDragging = false;
		draggingShip = null;
		mergeCandidate = null;
		return;
	}
	// Sadece draggingShip.isDragging true ise ve draggingShip hala pirateShips içinde ise sürüklemeye izin ver
	if (draggingShip && draggingShip.isDragging && pirateShips.indexOf(draggingShip) !== -1) {
		draggingShip.x = x + dragOffsetX;
		draggingShip.y = y + dragOffsetY;
		// Sınır dışına çıkmasın
		if (draggingShip.x < 120) draggingShip.x = 120;
		if (draggingShip.x > 2048 - 120) draggingShip.x = 2048 - 120;
		if (draggingShip.y < 200) draggingShip.y = 200;
		if (draggingShip.y > 2732 - 120) draggingShip.y = 2732 - 120;
		// Birleştirme adayı bul
		mergeCandidate = null;
		for (var i = 0; i < pirateShips.length; i++) {
			var other = pirateShips[i];
			if (other === draggingShip) continue;
			if (other.level !== draggingShip.level) continue;
			var dx = draggingShip.x - other.x;
			var dy = draggingShip.y - other.y;
			var r = Math.max(draggingShip.asset.width, other.asset.width) / 2 + 30;
			if (dx * dx + dy * dy < r * r) {
				mergeCandidate = other;
				break;
			}
		}
	}
};
game.up = function (x, y, obj) {
	if (mergeAnim) return;
	if (draggingShip && draggingShip.isDragging) {
		draggingShip.isDragging = false;
		// Birleştirme varsa
		if (mergeCandidate) {
			tryMergeShips(draggingShip, mergeCandidate);
		}
		draggingShip = null;
		mergeCandidate = null;
	}
};
// Oyun güncelleme
game.update = function () {
	// Ordu gemileri hareket ve bomba
	for (var n = 0; n < navyShips.length; n++) {
		if (navyShips[n]) {
			navyShips[n].update();
		}
	}
	// Her yeni 4. seviye korsan gemisi için yeni devriye gemisi çağır
	if (typeof game.lastLevel4Count === "undefined") {
		game.lastLevel4Count = 0;
	}
	var currentLevel4Count = 0;
	for (var i = 0; i < pirateShips.length; i++) {
		var ship = pirateShips[i];
		if (ship.level === 4) {
			currentLevel4Count++;
		}
		for (var j = 0; j < islands.length; j++) {
			var island = islands[j];
			if (ship.intersects(island)) {
				ship.collectGold(island);
			}
		}
	}
	if (typeof game.lastLevel4ShipIds === "undefined") {
		game.lastLevel4ShipIds = [];
	}
	// Şu anki 4. seviye gemilerin referanslarını topla
	var currentLevel4ShipIds = [];
	for (var i = 0; i < pirateShips.length; i++) {
		if (pirateShips[i].level === 4) {
			currentLevel4ShipIds.push(pirateShips[i]);
		}
	}
	// Sadece yeni eklenen 4. seviye gemiler için devriye gemisi çağır
	for (var i = 0; i < currentLevel4ShipIds.length; i++) {
		var found = false;
		for (var j = 0; j < game.lastLevel4ShipIds.length; j++) {
			if (currentLevel4ShipIds[i] === game.lastLevel4ShipIds[j]) {
				found = true;
				break;
			}
		}
		if (!found) {
			spawnNavyShip();
		}
	}
	game.lastLevel4ShipIds = currentLevel4ShipIds.slice();
	// Oyun bitti mi? (Hiç korsan gemisi kalmadıysa)
	if (pirateShips.length === 0) {
		LK.effects.flashScreen(0x000000, 800);
		LK.showGameOver();
	}
};
// Oyun başlat
spawnIslands();
spawnPirateShip(1, 2048 / 2, 2200);
spawnNavyShip(); // İlk devriye gemisi
updateGoldText();
// --- Otomatik gemi üretimi için değişkenler ---
var autoSpawnInterval = null;
var autoSpawnActive = false;
var lastShipOnShipyard = false;
// --- Otomatik gemi üretim fonksiyonu ---
function tryAutoSpawnPirateShip() {
	// Shipyard adasını bul
	var shipyard = null;
	for (var i = 0; i < islands.length; i++) {
		if (islands[i].isShipyard) {
			shipyard = islands[i];
			break;
		}
	}
	if (!shipyard) return;
	// Shipyard adasında bir korsan gemisi var mı?
	var shipOnShipyard = false;
	for (var j = 0; j < pirateShips.length; j++) {
		var ship = pirateShips[j];
		if (ship.intersects(shipyard)) {
			shipOnShipyard = true;
			break;
		}
	}
	// Sadece bir kere interval başlatmak için state takibi
	if (shipOnShipyard && !autoSpawnActive) {
		autoSpawnActive = true;
		autoSpawnInterval = LK.setInterval(function () {
			// Her 5 saniyede bir, shipyard adasında hala gemi varsa yeni gemi üret
			var stillShipOnShipyard = false;
			for (var k = 0; k < pirateShips.length; k++) {
				if (pirateShips[k].intersects(shipyard)) {
					stillShipOnShipyard = true;
					break;
				}
			}
			if (stillShipOnShipyard) {
				// Haritanın rastgele bir adasına (shipyard hariç) yeni gemi ekle
				var possibleIslands = [];
				for (var m = 0; m < islands.length; m++) {
					if (!islands[m].isShipyard) {
						possibleIslands.push(islands[m]);
					}
				}
				if (possibleIslands.length > 0) {
					var targetIsland = possibleIslands[Math.floor(Math.random() * possibleIslands.length)];
					var px = targetIsland.x + (Math.random() - 0.5) * 40;
					var py = targetIsland.y + (Math.random() - 0.5) * 40;
					spawnPirateShip(1, px, py);
				}
			} else {
				// Shipyard'da gemi yoksa intervali durdur
				LK.clearInterval(autoSpawnInterval);
				autoSpawnActive = false;
			}
		}, 5000);
	} else if (!shipOnShipyard && autoSpawnActive) {
		// Shipyard'da gemi yoksa intervali durdur
		LK.clearInterval(autoSpawnInterval);
		autoSpawnActive = false;
	}
}
// Oyun update fonksiyonuna shipyard kontrolü ekle
var originalGameUpdate = game.update;
game.update = function () {
	if (typeof originalGameUpdate === "function") {
		originalGameUpdate();
	}
	tryAutoSpawnPirateShip();
}; /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
// Bomba
var Bomb = Container.expand(function (sx, sy, tx, ty) {
	var self = Container.call(this);
	self.asset = self.attachAsset('bomb', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.x = sx;
	self.y = sy;
	self.tx = tx;
	self.ty = ty;
	self.speed = 18;
	self.toRemove = false;
	self.update = function () {
		var dx = self.tx - self.x;
		var dy = self.ty - self.y;
		var d = Math.sqrt(dx * dx + dy * dy);
		if (d < 30) {
			// Çarpışma kontrolü
			for (var i = pirateShips.length - 1; i >= 0; i--) {
				var ship = pirateShips[i];
				// Sadece PirateShip sınıfı örneklerini hedef al, devriye gemilerini asla hedef alma
				var isNavy = false;
				for (var ni = 0; ni < navyShips.length; ni++) {
					if (ship === navyShips[ni]) {
						isNavy = true;
						break;
					}
				}
				if (ship && ship.constructor && ship.constructor === PirateShip && self.intersects(ship) && !isNavy && typeof ship.hp !== "undefined" && ship.hp > 0) {
					var dead = ship.takeDamage(25); // Her bomba vuruşu 25 hasar
					if (dead) {
						pirateShips.splice(i, 1);
					}
					self.toRemove = true;
					break;
				}
			}
			if (!self.toRemove) {
				self.toRemove = true;
			}
		} else {
			self.x += self.speed * dx / d;
			self.y += self.speed * dy / d;
		}
		// Ekran dışı
		if (self.x < -100 || self.x > 2148 || self.y < -100 || self.y > 2832) {
			self.toRemove = true;
		}
	};
	return self;
});
// Ada
var Island = Container.expand(function () {
	var self = Container.call(this);
	self.asset = self.attachAsset('island', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	return self;
});
// Ordu Gemisi
var NavyShip = Container.expand(function () {
	var self = Container.call(this);
	self.asset = self.attachAsset('navy', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// (No hp or takeDamage logic for NavyShip)
	self.bombCooldown = 0;
	self.target = null;
	self.speed = 1.8; //{G} // Devriye gemisi hızı azaltıldı (daha yavaş)
	self.bombs = [];
	self.patrolPoints = [[2048 / 2, 300], [2048 - 300, 700], [2048 - 300, 2000], [300, 2000], [300, 700]];
	self.patrolIndex = 0;
	self.patrolWait = 0;
	self.radarRange = 600 * 600; // radar menzili (kare mesafe)
	self.update = function () {
		// 0-60sn: 2.8, 60-120sn: 3.5, 120-180sn: 4.2, 180+sn: 4.9
		var elapsedSeconds = Math.floor(LK.ticks / 60);
		if (elapsedSeconds < 60) {
			self.speed = 2.8;
		} else if (elapsedSeconds < 120) {
			self.speed = 3.5;
		} else if (elapsedSeconds < 180) {
			self.speed = 4.2;
		} else {
			self.speed = 4.9;
		}
		// Önce radar menziline giren bir korsan gemisi var mı bak
		var foundTarget = null;
		var minDist = 999999;
		for (var i = 0; i < pirateShips.length; i++) {
			var candidate = pirateShips[i];
			// Sadece PirateShip sınıfı örneklerini hedef al, diğer devriye gemilerini asla hedef alma
			var isNavyCandidate = false;
			for (var ni = 0; ni < navyShips.length; ni++) {
				if (candidate === navyShips[ni]) {
					isNavyCandidate = true;
					break;
				}
			}
			if (!candidate || !candidate.constructor || candidate.constructor !== PirateShip || candidate === self || isNavyCandidate) continue;
			var dx = candidate.x - self.x;
			var dy = candidate.y - self.y;
			var dist = dx * dx + dy * dy;
			if (dist < self.radarRange && dist < minDist) {
				minDist = dist;
				foundTarget = candidate;
			}
		}
		if (foundTarget) {
			self.target = foundTarget;
		} else {
			self.target = null;
		}
		// Eğer hedef varsa ona yönel ve bomba at
		if (self.target) {
			var dx = self.target.x - self.x;
			var dy = self.target.y - self.y;
			var d = Math.sqrt(dx * dx + dy * dy);
			if (d > 10) {
				self.x += self.speed * dx / d;
				self.y += self.speed * dy / d;
			}
			// Bomba at
			self.bombCooldown--;
			if (self.bombCooldown <= 0) {
				self.bombCooldown = 90 + Math.floor(Math.random() * 60);
				self.shootBomb();
			}
			self.patrolWait = 0; // hedef varken bekleme yok
		} else {
			// Devriye rotasında gez
			if (self.patrolPoints && self.patrolPoints.length > 0) {
				var pt = self.patrolPoints[self.patrolIndex];
				var dx = pt[0] - self.x;
				var dy = pt[1] - self.y;
				var d = Math.sqrt(dx * dx + dy * dy);
				if (d > 10) {
					self.x += self.speed * dx / d;
					self.y += self.speed * dy / d;
					self.patrolWait = 0;
				} else {
					// Noktaya ulaştı, biraz bekle
					if (self.patrolWait < 30) {
						self.patrolWait++;
					} else {
						self.patrolWait = 0;
						self.patrolIndex = (self.patrolIndex + 1) % self.patrolPoints.length;
					}
				}
			}
		}
		// Bombaları güncelle
		for (var i = self.bombs.length - 1; i >= 0; i--) {
			var bomb = self.bombs[i];
			bomb.update();
			if (bomb.toRemove) {
				bomb.destroy();
				self.bombs.splice(i, 1);
			}
		}
	};
	self.shootBomb = function () {
		if (!self.target) return;
		var bomb = new Bomb(self.x, self.y, self.target.x, self.target.y);
		game.addChild(bomb);
		self.bombs.push(bomb);
		LK.getSound('bomb').play();
	};
	// Devriye gemisi hasar alma fonksiyonu
	return self;
});
// Korsan Gemisi
var PirateShip = Container.expand(function () {
	var self = Container.call(this);
	self.level = 1; // 1-5
	self.hp = 3; // Her seviye için can
	self.maxHp = 3;
	self.isDragging = false;
	self.isMerging = false;
	self.mergeTarget = null;
	self.collecting = false;
	self.collectTimeout = null;
	self.shootCooldown = 0; // 4 ve 5. seviye için ateş etme bekleme süresi
	self.bullets = []; // kendi mermileri
	// Sağlık barı için Container ve bar asset'i
	self.hpBarContainer = new Container();
	self.hpBarBg = LK.getAsset('bullet', {
		width: 80,
		height: 14,
		color: 0x333333,
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.hpBarFg = LK.getAsset('bullet', {
		width: 76,
		height: 10,
		color: 0x4caf50,
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.hpBarContainer.addChild(self.hpBarBg);
	self.hpBarContainer.addChild(self.hpBarFg);
	self.hpBarFg.x = 0; // Foreground bar centered on background
	self.hpBarContainer.y = 0; // Yükseklik asset'e göre ayarlanacak
	// Seviye ve cana göre asset seçimi
	function updateGraphics() {
		if (self.asset) {
			self.removeChild(self.asset);
		}
		// Seviye 1-5 arası assetId belirle
		var assetId;
		if (self.level === 1) {
			assetId = 'pirate1';
		} else if (self.level === 2) {
			assetId = 'pirate2';
		} else if (self.level === 3) {
			assetId = 'pirate3';
		} else if (self.level === 4) {
			assetId = 'pirate4';
		} else if (self.level >= 5) {
			// 5 ve üstü seviye için en büyük asseti kullan
			assetId = 'pirate5';
		}
		self.asset = self.attachAsset(assetId, {
			anchorX: 0.5,
			anchorY: 0.5
		});
		// Görünürlük ve işlevsellik: 3 ve üstü seviyeler için de asset ve etkileşim aktif
		self.visible = true;
		self.interactive = true;
		// Asset boyutunu güncelle (gerekirse)
		if (self.hpText && self.asset) {
			self.hpText.x = 0;
			self.hpText.y = self.asset.height * 0.6;
		}
		// Sağlık barını asset boyutuna göre konumlandır
		if (self.hpBarContainer && self.asset) {
			self.hpBarContainer.x = 0;
			self.hpBarContainer.y = -self.asset.height * 0.55;
		}
	}
	updateGraphics();
	// Can göstergesi
	self.hpText = new Text2(self.hp + '', {
		size: 60,
		fill: "#fff"
	});
	self.hpText.anchor.set(0.5, 1.2);
	self.addChild(self.hpText);
	// Sağlık barını ekle
	self.addChild(self.hpBarContainer);
	// Sağlık barını güncelle
	self.updateHpBar = function () {
		// Bar genişliği ve oranı
		var ratio = Math.max(0, Math.min(1, self.hp / self.maxHp));
		self.hpBarFg.width = 76 * ratio;
		self.hpBarFg.x = 0; // Keep bar centered as width changes
		// Renk değişimi (kırmızıya yaklaşsın)
		if (ratio > 0.5) {
			self.hpBarFg.tint = 0x4caf50;
		} else if (ratio > 0.2) {
			self.hpBarFg.tint = 0xffc107;
		} else {
			self.hpBarFg.tint = 0xf44336;
		}
	};
	self.updateHp = function () {
		self.hpText.setText(self.hp + '');
		self.updateHpBar();
	};
	// Seviye başına sabit can değerleri uygula
	self.setLevel = function (lvl) {
		self.level = lvl;
		// Seviye başına can değerleri
		if (self.level === 1) {
			self.maxHp = 100;
		} else if (self.level === 2) {
			self.maxHp = 125;
		} else if (self.level === 3) {
			self.maxHp = 150;
		} else if (self.level === 4) {
			self.maxHp = 175;
		} else if (self.level >= 5) {
			self.maxHp = 200;
		}
		self.hp = self.maxHp;
		updateGraphics();
		self.updateHp();
	};
	self.takeDamage = function (dmg) {
		self.hp -= dmg;
		if (self.hp < 0) self.hp = 0;
		self.updateHp();
		LK.effects.flashObject(self, 0xff0000, 400);
		LK.getSound('hit').play();
		if (self.hp <= 0) {
			self.hp = 0;
			self.updateHp();
			self.destroy();
			return true;
		}
		return false;
	};
	self.heal = function () {
		self.hp = self.maxHp;
		self.updateHp();
	};
	self.collectGold = function (island) {
		if (self.collecting) return;
		self.collecting = true;
		LK.getSound('gold').play();
		// Altın animasyonu
		var gold = LK.getAsset('gold', {
			anchorX: 0.5,
			anchorY: 0.5,
			x: island.x,
			y: island.y
		});
		game.addChild(gold);
		tween(gold, {
			x: self.x,
			y: self.y
		}, {
			duration: 500,
			easing: tween.cubicOut,
			onFinish: function onFinish() {
				gold.destroy();
			}
		});
		// Altın ekle
		goldCount += 1;
		updateGoldText();
		// Skor: Altın toplama başına +2 puan
		if (typeof score !== "undefined") {
			score += 2;
			if (typeof updateScoreText === "function") updateScoreText();
		}
		// Kısa süre sonra tekrar toplayabilsin
		self.collectTimeout = LK.setTimeout(function () {
			self.collecting = false;
		}, 1200);
	};
	// (No PirateBullet or shootAtNavy logic)
	self.update = function () {
		// Mermileri güncelle
		for (var i = self.bullets.length - 1; i >= 0; i--) {
			var bullet = self.bullets[i];
			if (bullet && typeof bullet.update === "function" && typeof self.hp !== "undefined" && self.hp > 0) bullet.update();
			if (bullet && bullet.toRemove) {
				bullet.destroy();
				self.bullets.splice(i, 1);
			}
		}
		// Ateş etme cooldown
		if (self.shootCooldown > 0) self.shootCooldown--;
		// (No self-defense for pirate ships)
	};
	return self;
});
// Tersane Adası (Shipyard Island)
var ShipyardIsland = Container.expand(function () {
	var self = Container.call(this);
	self.asset = self.attachAsset('shipyard_island', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.isShipyard = true;
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x1a237e
});
/**** 
* Game Code
****/ 
// Sesler
// Altın simgesi
// Bomba
// Arka plan ekle
var background = LK.getAsset('ocean_bg', {
	anchorX: 0.5,
	anchorY: 0.5,
	x: 2048 / 2,
	y: 2732 / 2,
	scaleX: 1,
	scaleY: 1
});
background.alpha = 1;
game.addChildAt(background, 0);
// Ordu gemisi
// Ada (altın kaynağı)
// Korsan gemisi seviyelerine göre farklı renk ve boyutlarda kutular
// Oyun değişkenleri
var pirateShips = [];
var islands = [];
var navyShips = []; // Birden fazla devriye gemisi için dizi
var goldCount = 0;
var goldText = null;
var score = 0;
var scoreText = null;
var spawnBtn = null;
var draggingShip = null;
var dragOffsetX = 0;
var dragOffsetY = 0;
var mergeCandidate = null;
var mergeAnim = false;
// Skor göstergesi
scoreText = new Text2('Skor: 0', {
	size: 90,
	fill: 0xFFFFFF
});
scoreText.anchor.set(1, 0); // sağ üst köşe için anchorX=1
LK.gui.topRight.addChild(scoreText);
function updateScoreText() {
	scoreText.setText('Skor: ' + score);
}
// Altın göstergesi
goldText = new Text2('Altın: 0', {
	size: 90,
	fill: 0xFFD700
});
goldText.anchor.set(0, 0); // sol üst köşe için anchorX=0
LK.gui.topLeft.addChild(goldText);
function updateGoldText() {
	goldText.setText('Altın: ' + goldCount);
}
// Korsan gemisi üretme butonu kaldırıldı
// Ada yerleşimi
function spawnIslands() {
	var positions = [[400, 700], [1648, 700], [400, 2000], [1648, 2000], [1024, 1400]];
	for (var i = 0; i < positions.length; i++) {
		// Son ada Shipyard olarak atanacak
		var island;
		if (i === positions.length - 1) {
			island = new ShipyardIsland();
			island.isShipyard = true;
		} else {
			island = new Island();
			island.isShipyard = false;
		}
		island.x = positions[i][0];
		island.y = positions[i][1];
		game.addChild(island);
		islands.push(island);
	}
}
// Başlangıç korsan gemisi
function spawnPirateShip(level, x, y) {
	var ship = new PirateShip();
	ship.setLevel(level);
	ship.x = x;
	ship.y = y;
	pirateShips.push(ship);
	game.addChild(ship);
	LK.getSound('spawn').play();
	return ship;
}
// Ordu gemisi başlat
function spawnNavyShip() {
	var newNavy = new NavyShip();
	// Rastgele bir devriye rotası oluştur
	var patrolTemplates = [[[2048 / 2, 300], [2048 - 300, 700], [2048 - 300, 2000], [300, 2000], [300, 700]], [[300, 300], [2048 - 300, 300], [2048 - 300, 2732 - 300], [300, 2732 - 300]], [[1024, 400], [1800, 1000], [1024, 2200], [300, 1000]], [[400, 700], [1648, 700], [1648, 2000], [400, 2000]], [[600, 600], [2048 - 600, 600], [2048 - 600, 2732 - 600], [600, 2732 - 600]]];
	var idx = Math.floor(Math.random() * patrolTemplates.length);
	newNavy.patrolPoints = patrolTemplates[idx];
	newNavy.patrolIndex = 0;
	// Başlangıç noktası rotanın ilk noktası
	newNavy.x = newNavy.patrolPoints[0][0];
	newNavy.y = newNavy.patrolPoints[0][1];
	game.addChild(newNavy);
	navyShips.push(newNavy);
	return newNavy;
}
// Gemi birleştirme
function tryMergeShips(ship1, ship2) {
	if (ship1.level !== ship2.level) return false;
	if (ship1.isMerging || ship2.isMerging) return false;
	if (ship1 === ship2) return false;
	if (ship1.level >= 5) return false;
	ship1.isMerging = true;
	ship2.isMerging = true;
	mergeAnim = true;
	// Birleştirme animasyonu
	var mx = (ship1.x + ship2.x) / 2;
	var my = (ship1.y + ship2.y) / 2;
	tween(ship1, {
		x: mx,
		y: my,
		scaleX: 1.2,
		scaleY: 1.2
	}, {
		duration: 300,
		easing: tween.cubicInOut
	});
	tween(ship2, {
		x: mx,
		y: my,
		scaleX: 1.2,
		scaleY: 1.2
	}, {
		duration: 300,
		easing: tween.cubicInOut,
		onFinish: function onFinish() {
			// Yeni üst seviye gemi
			// Eski gemileri silmeden önce indexlerini al
			var idx1 = pirateShips.indexOf(ship1);
			var idx2 = pirateShips.indexOf(ship2);
			// Eski gemileri sil
			if (idx1 > -1) pirateShips.splice(idx1, 1);
			if (idx2 > -1) pirateShips.splice(idx2, 1);
			ship1.destroy();
			ship2.destroy();
			// Yeni üst seviye gemiyi ekle
			var newShip = spawnPirateShip(ship1.level + 1, mx, my);
			// --- EK: yeni geminin event handler'larını ve state'ini sıfırla ---
			newShip.isDragging = false;
			newShip.isMerging = false;
			newShip.mergeTarget = null;
			newShip.collecting = false;
			newShip.collectTimeout = null;
			LK.getSound('merge').play();
			mergeAnim = false;
			// Skor: Birleştirme başına +10 puan
			score += 10;
			updateScoreText();
			// --- YENİ EKLEME: yeni gemiyle hemen birleştirme ve altın toplama kontrolü ---
			// Merge sonrası yeni gemiyle hemen tekrar merge veya altın toplama kontrolü
			// 1. Merge kontrolü
			mergeCandidate = null;
			for (var i = 0; i < pirateShips.length; i++) {
				var other = pirateShips[i];
				if (other === newShip) continue;
				if (other.level !== newShip.level) continue;
				var dx = newShip.x - other.x;
				var dy = newShip.y - other.y;
				var r = Math.max(newShip.asset.width, other.asset.width) / 2 + 30;
				if (dx * dx + dy * dy < r * r) {
					mergeCandidate = other;
					break;
				}
			}
			if (mergeCandidate) {
				tryMergeShips(newShip, mergeCandidate);
			}
			// 2. Altın toplama kontrolü
			for (var j = 0; j < islands.length; j++) {
				var island = islands[j];
				if (newShip.intersects(island)) {
					newShip.collectGold(island);
				}
			}
		}
	});
}
// Gemi ekleme tuşu kaldırıldı, otomatik üretim eklenecek
// Gemi sürükleme ve birleştirme
game.down = function (x, y, obj) {
	if (mergeAnim) return;
	// Eğer zaten bir gemi sürükleniyorsa ve o gemi hala pirateShips içindeyse yeni bir sürükleme başlatma
	if (draggingShip && draggingShip.isDragging && pirateShips.indexOf(draggingShip) !== -1) return;
	// Gemilerden birine tıklandı mı?
	for (var i = pirateShips.length - 1; i >= 0; i--) {
		var ship = pirateShips[i];
		var dx = x - ship.x;
		var dy = y - ship.y;
		var r = Math.max(ship.asset.width, ship.asset.height) / 2;
		if (dx * dx + dy * dy < r * r) {
			// Sadece bir gemi sürüklenebilir, başka bir gemi sürükleniyorsa bırak
			if (draggingShip && draggingShip !== ship) {
				draggingShip.isDragging = false;
			}
			draggingShip = ship;
			dragOffsetX = ship.x - x;
			dragOffsetY = ship.y - y;
			ship.isDragging = true;
			break;
		}
	}
};
game.move = function (x, y, obj) {
	if (mergeAnim) return;
	// draggingShip pirateShips'ten silindiyse veya draggingShip yoksa sürüklemeyi bırak
	if (!draggingShip || pirateShips.indexOf(draggingShip) === -1) {
		if (draggingShip) draggingShip.isDragging = false;
		draggingShip = null;
		mergeCandidate = null;
		return;
	}
	// Sadece draggingShip.isDragging true ise ve draggingShip hala pirateShips içinde ise sürüklemeye izin ver
	if (draggingShip && draggingShip.isDragging && pirateShips.indexOf(draggingShip) !== -1) {
		draggingShip.x = x + dragOffsetX;
		draggingShip.y = y + dragOffsetY;
		// Sınır dışına çıkmasın
		if (draggingShip.x < 120) draggingShip.x = 120;
		if (draggingShip.x > 2048 - 120) draggingShip.x = 2048 - 120;
		if (draggingShip.y < 200) draggingShip.y = 200;
		if (draggingShip.y > 2732 - 120) draggingShip.y = 2732 - 120;
		// Birleştirme adayı bul
		mergeCandidate = null;
		for (var i = 0; i < pirateShips.length; i++) {
			var other = pirateShips[i];
			if (other === draggingShip) continue;
			if (other.level !== draggingShip.level) continue;
			var dx = draggingShip.x - other.x;
			var dy = draggingShip.y - other.y;
			var r = Math.max(draggingShip.asset.width, other.asset.width) / 2 + 30;
			if (dx * dx + dy * dy < r * r) {
				mergeCandidate = other;
				break;
			}
		}
	}
};
game.up = function (x, y, obj) {
	if (mergeAnim) return;
	if (draggingShip && draggingShip.isDragging) {
		draggingShip.isDragging = false;
		// Birleştirme varsa
		if (mergeCandidate) {
			tryMergeShips(draggingShip, mergeCandidate);
		}
		draggingShip = null;
		mergeCandidate = null;
	}
};
// Oyun güncelleme
game.update = function () {
	// Ordu gemileri hareket ve bomba
	for (var n = 0; n < navyShips.length; n++) {
		if (navyShips[n]) {
			navyShips[n].update();
		}
	}
	// Her yeni 4. seviye korsan gemisi için yeni devriye gemisi çağır
	if (typeof game.lastLevel4Count === "undefined") {
		game.lastLevel4Count = 0;
	}
	var currentLevel4Count = 0;
	for (var i = 0; i < pirateShips.length; i++) {
		var ship = pirateShips[i];
		if (ship.level === 4) {
			currentLevel4Count++;
		}
		for (var j = 0; j < islands.length; j++) {
			var island = islands[j];
			if (ship.intersects(island)) {
				ship.collectGold(island);
			}
		}
	}
	if (typeof game.lastLevel4ShipIds === "undefined") {
		game.lastLevel4ShipIds = [];
	}
	// Şu anki 4. seviye gemilerin referanslarını topla
	var currentLevel4ShipIds = [];
	for (var i = 0; i < pirateShips.length; i++) {
		if (pirateShips[i].level === 4) {
			currentLevel4ShipIds.push(pirateShips[i]);
		}
	}
	// Sadece yeni eklenen 4. seviye gemiler için devriye gemisi çağır
	for (var i = 0; i < currentLevel4ShipIds.length; i++) {
		var found = false;
		for (var j = 0; j < game.lastLevel4ShipIds.length; j++) {
			if (currentLevel4ShipIds[i] === game.lastLevel4ShipIds[j]) {
				found = true;
				break;
			}
		}
		if (!found) {
			spawnNavyShip();
		}
	}
	game.lastLevel4ShipIds = currentLevel4ShipIds.slice();
	// Oyun bitti mi? (Hiç korsan gemisi kalmadıysa)
	if (pirateShips.length === 0) {
		LK.effects.flashScreen(0x000000, 800);
		LK.showGameOver();
	}
};
// Oyun başlat
spawnIslands();
spawnPirateShip(1, 2048 / 2, 2200);
spawnNavyShip(); // İlk devriye gemisi
updateGoldText();
// --- Otomatik gemi üretimi için değişkenler ---
var autoSpawnInterval = null;
var autoSpawnActive = false;
var lastShipOnShipyard = false;
// --- Otomatik gemi üretim fonksiyonu ---
function tryAutoSpawnPirateShip() {
	// Shipyard adasını bul
	var shipyard = null;
	for (var i = 0; i < islands.length; i++) {
		if (islands[i].isShipyard) {
			shipyard = islands[i];
			break;
		}
	}
	if (!shipyard) return;
	// Shipyard adasında bir korsan gemisi var mı?
	var shipOnShipyard = false;
	for (var j = 0; j < pirateShips.length; j++) {
		var ship = pirateShips[j];
		if (ship.intersects(shipyard)) {
			shipOnShipyard = true;
			break;
		}
	}
	// Sadece bir kere interval başlatmak için state takibi
	if (shipOnShipyard && !autoSpawnActive) {
		autoSpawnActive = true;
		autoSpawnInterval = LK.setInterval(function () {
			// Her 5 saniyede bir, shipyard adasında hala gemi varsa yeni gemi üret
			var stillShipOnShipyard = false;
			for (var k = 0; k < pirateShips.length; k++) {
				if (pirateShips[k].intersects(shipyard)) {
					stillShipOnShipyard = true;
					break;
				}
			}
			if (stillShipOnShipyard) {
				// Haritanın rastgele bir adasına (shipyard hariç) yeni gemi ekle
				var possibleIslands = [];
				for (var m = 0; m < islands.length; m++) {
					if (!islands[m].isShipyard) {
						possibleIslands.push(islands[m]);
					}
				}
				if (possibleIslands.length > 0) {
					var targetIsland = possibleIslands[Math.floor(Math.random() * possibleIslands.length)];
					var px = targetIsland.x + (Math.random() - 0.5) * 40;
					var py = targetIsland.y + (Math.random() - 0.5) * 40;
					spawnPirateShip(1, px, py);
				}
			} else {
				// Shipyard'da gemi yoksa intervali durdur
				LK.clearInterval(autoSpawnInterval);
				autoSpawnActive = false;
			}
		}, 5000);
	} else if (!shipOnShipyard && autoSpawnActive) {
		// Shipyard'da gemi yoksa intervali durdur
		LK.clearInterval(autoSpawnInterval);
		autoSpawnActive = false;
	}
}
// Oyun update fonksiyonuna shipyard kontrolü ekle
var originalGameUpdate = game.update;
game.update = function () {
	if (typeof originalGameUpdate === "function") {
		originalGameUpdate();
	}
	tryAutoSpawnPirateShip();
};