/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
// Golden Freddy karakteri
var GoldenFreddy = Container.expand(function () {
var self = Container.call(this);
var gf = self.attachAsset('goldenfreddy', {
anchorX: 0.5,
anchorY: 0.5
});
self.active = false;
self.appear = function (kapak) {
if (kapak) {
self.x = kapak.x;
self.y = kapak.y - kapak.height / 2 - self.height / 2 + 40;
} else {
self.x = 2048 / 2;
self.y = 2732 / 2;
}
self.visible = true;
self.active = true;
self.scale.x = 0.7;
self.scale.y = 0.7;
tween(self.scale, {
x: 1,
y: 1
}, {
duration: 200,
easing: tween.easeOut
});
};
self.hide = function () {
self.active = false;
tween(self.scale, {
x: 0.2,
y: 0.2
}, {
duration: 180,
easing: tween.easeIn,
onFinish: function onFinish() {
self.visible = false;
}
});
};
self.down = function (x, y, obj) {
if (!self.active) return;
// Golden Freddy'ye basınca jumpscare!
triggerJumpscare();
self.hide();
};
return self;
});
// Ekstra kalp (can) class'ı
var Heart = Container.expand(function () {
var self = Container.call(this);
// Kalp görseli (artık asset olarak kalp resmi)
var heartAsset = self.attachAsset('heart', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
self.active = true;
// Kalp'e dokununca
self.down = function (x, y, obj) {
if (!self.active) return;
self.active = false;
self.visible = false;
// 1 can ekle
if (typeof lives !== "undefined") {
lives += 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
}
// Kalbi yok et
self.destroy();
};
return self;
});
// Jumpscare efekti (ekranı kırmızıya boyar ve titretir)
var Jumpscare = Container.expand(function () {
var self = Container.call(this);
var js = self.attachAsset('jumpscare', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
self.alpha = 0;
self.visible = false;
// Jumpscare başlat
self.start = function () {
self.visible = true;
self.alpha = 0.8;
// Titreme efekti
var shakeCount = 0;
var shakeMax = 10;
var shakeTimer = LK.setInterval(function () {
self.x = (Math.random() - 0.5) * 40;
self.y = (Math.random() - 0.5) * 40;
shakeCount++;
if (shakeCount > shakeMax) {
LK.clearInterval(shakeTimer);
self.x = 0;
self.y = 0;
// Yavaşça kaybol
tween(self, {
alpha: 0
}, {
duration: 400,
onFinish: function onFinish() {
self.visible = false;
}
});
}
}, 30);
};
return self;
});
// Kapak (cover) class: farklı renkli kapaklar için
var Kapak = Container.expand(function () {
var self = Container.call(this);
// Kapak indexine göre farklı asset kullan
self.setKapakIndex = function (idx) {
// Önce eski asset varsa kaldır
if (self.kapakAsset) {
self.removeChild(self.kapakAsset);
}
self.kapakIndex = idx;
self.kapakAsset = self.attachAsset('kapak' + idx, {
anchorX: 0.5,
anchorY: 0.5
});
};
return self;
});
// Springtrap karakteri
var Springtrap = Container.expand(function () {
var self = Container.call(this);
// Karakteri ortalamak için anchor noktası ortada
var st = self.attachAsset('springtrap', {
anchorX: 0.5,
anchorY: 0.5
});
// Springtrap'in aktif olup olmadığını tut
self.active = false;
// Springtrap'i kapakların birinin ortasında rastgele çıkar
self.appear = function () {
// Kapaklar globalde tanımlı
if (typeof kapaklar !== "undefined" && kapaklar.length > 0) {
var idx = Math.floor(Math.random() * kapaklar.length);
var kapak = kapaklar[idx];
// Springtrap'i kapağın ortasına yerleştir
self.x = kapak.x;
self.y = kapak.y - kapak.height / 2 - self.height / 2 + 40; // Biraz kapağın üstünde çıksın
} else {
// Fallback: ortada göster
self.x = 2048 / 2;
self.y = 2732 / 2;
}
self.visible = true;
self.active = true;
// Hafifçe büyüyerek ortaya çıkma animasyonu
self.scale.x = 0.7;
self.scale.y = 0.7;
tween(self.scale, {
x: 1,
y: 1
}, {
duration: 200,
easing: tween.easeOut
});
};
// Springtrap'i uzaklaştır
self.scareAway = function (_onFinish) {
self.active = false;
// 'Üzerine tıkla' yazısını gizle
if (typeof tapHint !== "undefined") tapHint.visible = false;
// Küçülerek kaybolma animasyonu
tween(self.scale, {
x: 0.2,
y: 0.2
}, {
duration: 180,
easing: tween.easeIn,
onFinish: function onFinish() {
self.visible = false;
if (_onFinish) _onFinish();
}
});
};
// Springtrap'e dokunulduğunda
self.down = function (x, y, obj) {
if (!self.active) return;
// Skoru artır, Springtrap'i uzaklaştır
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
LK.getSound('scare_away').play();
self.scareAway(function () {
// Sonraki Springtrap için zamanlayıcı başlat
scheduleNextSpringtrap();
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x111111
});
/****
* Game Code
****/
// Golden Freddy asset
// Skor metni
// Springtrap karakteri için bir kutu şekli (daha sonra görsel ile değiştirilebilir)
// Jumpscare efekti için kırmızı bir kutu
// Springtrap uzaklaştırma efekti için kısa bir ses
// Jumpscare için bir ses efekti
// 6 farklı renkli kapaklar
// Mavi
// Kırmızı
// Yeşil
// Sarı
// Mor
// Lacivert
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFF700
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// 6 farklı renkli kapakları ekle
var kapaklar = [];
var kapakCount = 6;
var kapakSpacing = 120; // Aralıkları büyüttük
var kapakWidth = 480; // Kapakları büyüttük
var kapakHeight = 270; // Kapakları büyüttük
// 2 satır, 3 sütun olacak şekilde ortala
var cols = 3;
var rows = 2;
var totalWidth = cols * kapakWidth + (cols - 1) * kapakSpacing;
var totalHeight = rows * kapakHeight + (rows - 1) * kapakSpacing;
var startX = (2048 - totalWidth) / 2 + kapakWidth / 2;
var startY = (2732 - totalHeight) / 2 + kapakHeight / 2;
for (var i = 0; i < kapakCount; i++) {
var kapak = new Kapak();
kapak.setKapakIndex(i);
var row = Math.floor(i / cols);
var col = i % cols;
kapak.x = startX + col * (kapakWidth + kapakSpacing);
kapak.y = startY + row * (kapakHeight + kapakSpacing);
game.addChild(kapak);
kapaklar.push(kapak);
}
// --- BAŞLAT MENÜSÜ EKLE ---
var startMenuBg = LK.getAsset('centerCircle', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
scaleX: 2048 / 100,
scaleY: 2732 / 100
});
startMenuBg.tint = 0x0074D9; // mavi
startMenuBg.alpha = 1;
// Oyun ismi başlat menüsünde en üstte büyük olarak gösterilsin
var startMenuGameName = new Text2('Springtrap Jumpscare', {
size: 220,
fill: 0xFFF700
});
startMenuGameName.anchor.set(0.5, 0.5);
startMenuGameName.x = 2048 / 2;
startMenuGameName.y = 2732 / 2 - 500;
var startMenuText = new Text2('Başlamak için dokun', {
size: 140,
fill: 0xFFFFFF
});
startMenuText.anchor.set(0.5, 0.5);
startMenuText.x = 2048 / 2;
startMenuText.y = 2732 / 2 - 100;
// (İsteğe bağlı: eski başlık metni kaldırıldı, çünkü yukarıda büyük başlık var)
// var startMenuTitle = new Text2('Springtrap Jumpscare', {
// size: 180,
// fill: 0xFFF700
// });
// startMenuTitle.anchor.set(0.5, 0.5);
// startMenuTitle.x = 2048 / 2;
// startMenuTitle.y = 2732 / 2 - 350;
var startMenu = new Container();
startMenu.addChild(startMenuBg);
startMenu.addChild(startMenuGameName);
startMenu.addChild(startMenuText);
// En yüksek skor metni
var highScore = storage.highScore || 0;
var highScoreTxt = new Text2('En Yüksek Skor: ' + highScore, {
size: 110,
fill: 0xffffff
});
highScoreTxt.anchor.set(0.5, 0.5);
highScoreTxt.x = 2048 / 2;
highScoreTxt.y = 2732 / 2 + 120;
startMenu.addChild(highScoreTxt);
game.addChild(startMenu);
var gameStarted = false;
// Springtrap nesnesi
var springtrap = new Springtrap();
game.addChild(springtrap);
// Jumpscare efekti
var jumpscare = new Jumpscare();
game.addChild(jumpscare);
// Springtrap'in ekranda kalma süresi (ms)
var springtrapTime = 900;
// Springtrap'in tekrar çıkma aralığı (ms)
var springtrapDelayMin = 700;
var springtrapDelayMax = 1600;
// Springtrap zamanlayıcıları
var springtrapTimeout = null;
var springtrapAppearTimeout = null;
// Can (hak) sayısı ve metni
var lives = 1;
// Sağ üstte kalp ve sayaç için bir container
var livesContainer = new Container();
// Kalp simgesi (küçük boyut, sağ üstte)
var livesIcon = LK.getAsset('heart', {
anchorX: 1,
anchorY: 0,
scaleX: 0.7,
scaleY: 0.7,
x: 0,
y: 0
});
livesContainer.addChild(livesIcon);
// Sayaç metni (kalbin solunda)
var livesTxt = new Text2("x" + lives, {
size: 110,
fill: 0xff3b3b
});
livesTxt.anchor.set(1, 0.5);
livesTxt.x = -20;
livesTxt.y = livesIcon.height / 2 - 10;
livesContainer.addChild(livesTxt);
// Sağ üst köşeye yerleştir (biraz içeri, menüyle çakışmasın)
livesContainer.x = 2048 - 40;
livesContainer.y = 40;
// Aktif kalp referansı
var activeHeart = null;
// Birden fazla kalp için dizi
var activeHearts = [];
// Aktif buton referansı
var activeButton = null;
// Golden Freddy referansı ve timeout'u
var goldenFreddy = undefined;
var goldenFreddyTimeout = undefined;
// Skoru sıfırla
LK.setScore(0);
scoreTxt.setText(0);
// --- Springtrap gelince 'üzerine tıkla' yazısı ---
var tapHint = new Text2('Üzerine tıkla!', {
size: 120,
fill: 0xFFFFFF
});
tapHint.anchor.set(0.5, 0.5);
tapHint.x = 2048 / 2;
tapHint.y = 2732 / 2 + 400;
tapHint.visible = false;
game.addChild(tapHint);
// Springtrap'i ekranda göster
function showSpringtrap() {
springtrap.appear();
// 'Üzerine tıkla' yazısını göster
tapHint.visible = true;
// Golden Freddy'yi rastgele bir kapağa çıkar (yaklaşık %80 olasılıkla ve Springtrap ile aynı kapakta olamaz)
if (typeof goldenFreddy !== "undefined" && goldenFreddy && goldenFreddy.parent) {
goldenFreddy.hide();
goldenFreddy.visible = false;
}
if (typeof goldenFreddyTimeout !== "undefined" && goldenFreddyTimeout) {
LK.clearTimeout(goldenFreddyTimeout);
}
if (typeof goldenFreddy === "undefined") {
goldenFreddy = new GoldenFreddy();
game.addChild(goldenFreddy);
}
goldenFreddy.active = false;
goldenFreddy.visible = false;
// Golden Freddy %80 olasılıkla çıkacak ve Springtrap ile aynı kapakta olmayacak
if (Math.random() < 0.8 && kapaklar.length > 1) {
// Springtrap'in bulunduğu kapağı bul
var springtrapKapakIdx = -1;
for (var i = 0; i < kapaklar.length; i++) {
if (Math.abs(springtrap.x - kapaklar[i].x) < 2 && Math.abs(springtrap.y - (kapaklar[i].y - kapaklar[i].height / 2 - springtrap.height / 2 + 40)) < 2) {
springtrapKapakIdx = i;
break;
}
}
// Springtrap'in kapağı hariç diğerlerinden rastgele seç
var availableKapaklar = [];
for (var i = 0; i < kapaklar.length; i++) {
if (i !== springtrapKapakIdx) {
availableKapaklar.push(kapaklar[i]);
}
}
if (availableKapaklar.length > 0) {
var gfIdx = Math.floor(Math.random() * availableKapaklar.length);
var gfKapak = availableKapaklar[gfIdx];
goldenFreddy.appear(gfKapak);
// Golden Freddy ekranda 0.8 saniye kalsın, sonra kaybolsun
goldenFreddyTimeout = LK.setTimeout(function () {
goldenFreddy.hide();
}, 800);
}
}
// İlk 10 skor için birden fazla kalp çıkar
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
}
activeHearts = [];
if (LK.getScore() < 10) {
// 2-4 arası kalp çıkar (her seferinde farklı sayıda)
var heartCount = 2 + Math.floor(Math.random() * 3); // 2,3,4
var margin = 200;
var minX = margin;
var maxX = 2048 - margin;
var minY = margin + 200;
var maxY = 2732 - margin - 200;
for (var i = 0; i < heartCount; i++) {
var heart = new Heart();
// Rastgele bir konumda (kapakların dışında, ekranın ortasında bir yerde)
heart.x = minX + Math.random() * (maxX - minX);
heart.y = minY + Math.random() * (maxY - minY);
game.addChild(heart);
activeHearts.push(heart);
}
} else {
// 10 ve üstü skor için eski kalp varsa yok et, tekli kalp çıkarma (önceki davranış)
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (Math.random() < 0.3) {
activeHeart = new Heart();
var margin = 200;
var minX = margin;
var maxX = 2048 - margin;
var minY = margin + 200;
var maxY = 2732 - margin - 200;
activeHeart.x = minX + Math.random() * (maxX - minX);
activeHeart.y = minY + Math.random() * (maxY - minY);
game.addChild(activeHeart);
}
}
// --- RASTGELE BUTON EKLEME ---
// Sadece skor 20 veya daha fazlaysa buton gelsin
if (LK.getScore() >= 20) {
// Önce eski buton varsa kaldır
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
var buttonWidth = 420;
var buttonHeight = 180;
var buttonMargin = 120;
var buttonMinX = buttonMargin + buttonWidth / 2;
var buttonMaxX = 2048 - buttonMargin - buttonWidth / 2;
var buttonMinY = buttonMargin + buttonHeight / 2;
var buttonMaxY = 2732 - buttonMargin - buttonHeight / 2;
var buttonX = buttonMinX + Math.random() * (buttonMaxX - buttonMinX);
var buttonY = buttonMinY + Math.random() * (buttonMaxY - buttonMinY);
activeButton = new Container();
var btnBg = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: buttonWidth / 100,
scaleY: buttonHeight / 100,
x: 0,
y: 0
});
btnBg.tint = 0x00c853;
activeButton.addChild(btnBg);
var btnText = new Text2('BUTONA BAS!', {
size: 90,
fill: 0xffffff
});
btnText.anchor.set(0.5, 0.5);
btnText.x = 0;
btnText.y = 0;
activeButton.addChild(btnText);
activeButton.x = buttonX;
activeButton.y = buttonY;
activeButton.visible = true;
activeButton.active = true;
game.addChild(activeButton);
// Butona basınca butonu yok et, bir sonraki springtrap'e geç
activeButton.down = function (x, y, obj) {
if (!activeButton.active) return;
activeButton.active = false;
activeButton.visible = false;
activeButton.destroy();
activeButton = null;
// Springtrap'i de yok et, yeni springtrap gelsin
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
if (springtrap.active) {
springtrap.active = false;
springtrap.visible = false;
}
if (tapHint) tapHint.visible = false;
scheduleNextSpringtrap();
};
// Eğer oyuncu zamanında dokunmazsa jumpscare başlat
springtrapTimeout = LK.setTimeout(function () {
// Eğer butona basılmadıysa ve aktifse, jumpscare!
if (typeof activeButton !== "undefined" && activeButton && activeButton.active) {
activeButton.active = false;
activeButton.visible = false;
activeButton.destroy();
activeButton = null;
// Butona basılmadıysa jumpscare başlat
triggerJumpscare();
return;
}
// Eğer springtrap aktifse ve butona basılmışsa, yine jumpscare başlat
if (springtrap.active) {
triggerJumpscare();
}
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
}, springtrapTime);
} else {
// Skor 20'den küçükse, eski buton varsa kaldır ve yeni buton oluşturma
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
// Springtrap için timeout yine de başlatılsın (buton yokken de springtrap süresi dolunca jumpscare olabilsin)
springtrapTimeout = LK.setTimeout(function () {
// Sadece springtrap aktifse jumpscare başlat
if (springtrap.active) {
triggerJumpscare();
}
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
}, springtrapTime);
}
}
// Sonraki Springtrap için zamanlayıcı kur
function scheduleNextSpringtrap() {
if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
springtrapAppearTimeout = LK.setTimeout(function () {
showSpringtrap();
}, springtrapDelayMin + Math.floor(Math.random() * (springtrapDelayMax - springtrapDelayMin)));
}
// Jumpscare başlat
function triggerJumpscare() {
// Eğer fazladan can varsa jumpscare'i engelle ve canı azalt
if (typeof lives !== "undefined" && lives > 1) {
lives -= 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
// Springtrap'i kaybet, yeni springtrap gelsin
springtrap.active = false;
springtrap.visible = false;
if (tapHint) tapHint.visible = false;
scheduleNextSpringtrap();
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
return;
}
springtrap.active = false;
springtrap.visible = false;
jumpscare.start();
// Jumpscare sesi çal
LK.getSound('jumpscare_sfx').play();
// Jumpscare sırasında müziği durdur
LK.stopMusic();
// Kısa gecikmeden sonra oyun biter ve jumpscare ekranda gösterilir
LK.setTimeout(function () {
jumpscare.visible = false; // Jumpscare'i gizle (oyun bitince)
LK.showGameOver();
}, 900);
}
// Oyun başladığında ilk Springtrap'i göster
// scheduleNextSpringtrap();
// Oyuncu başlat menüsünde dokunana kadar oyun başlamasın
// Oyun bittiğinde zamanlayıcıları temizle
game.onDestroy = function () {
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
// Oyun bittiğinde başlat menüsünü tekrar göster
if (startMenu) startMenu.visible = true;
gameStarted = false;
if (tapHint) tapHint.visible = false;
// Oyun bitince müziği durdur
LK.stopMusic();
// Skor kaydı ve gösterimi
var currentScore = LK.getScore();
if (!storage.highScore || currentScore > storage.highScore) {
storage.highScore = currentScore;
}
if (typeof highScoreTxt !== "undefined") {
highScoreTxt.setText('En Yüksek Skor: ' + (storage.highScore || 0));
}
// Canı sıfırla
lives = 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
// Buton varsa yok et
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
// Golden Freddy varsa yok et
if (typeof goldenFreddy !== "undefined" && goldenFreddy && goldenFreddy.parent) {
goldenFreddy.hide();
goldenFreddy.visible = false;
}
if (typeof goldenFreddyTimeout !== "undefined" && goldenFreddyTimeout) {
LK.clearTimeout(goldenFreddyTimeout);
goldenFreddyTimeout = undefined;
}
};
// Oyun açıldığında arka plan müziğini başlat
LK.playMusic('backraund');
// Oyun güncellemesi (gerekirse ek efektler için)
game.update = function () {
// Oyun akışı burada yönetiliyor
};
// Ekrana dokunma olaylarını Springtrap'e yönlendir
game.down = function (x, y, obj) {
// Eğer oyun başlamadıysa ve başlat menüsü açıksa, başlat
if (!gameStarted && startMenu && startMenu.visible !== false) {
gameStarted = true;
startMenu.visible = false;
LK.setScore(0);
scoreTxt.setText(0);
// Canı sıfırla
lives = 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
scheduleNextSpringtrap();
return;
}
// Önce butona tıklanıp tıklanmadığını kontrol et
if (typeof activeButton !== "undefined" && activeButton && activeButton.active && activeButton.visible) {
// Koordinatları butonun lokaline çevir
var localBtn = activeButton.toLocal(game.toGlobal({
x: x,
y: y
}));
var btnBg = activeButton.children[0];
if (localBtn.x >= -btnBg.width / 2 && localBtn.x <= btnBg.width / 2 && localBtn.y >= -btnBg.height / 2 && localBtn.y <= btnBg.height / 2) {
if (typeof activeButton.down === "function") {
activeButton.down(x, y, obj);
}
return;
}
}
// Golden Freddy'ye tıklama kontrolü
if (typeof goldenFreddy !== "undefined" && goldenFreddy && goldenFreddy.active && goldenFreddy.visible) {
var localGF = goldenFreddy.toLocal(game.toGlobal({
x: x,
y: y
}));
var gfAsset = goldenFreddy.children[0];
if (localGF.x >= -gfAsset.width / 2 && localGF.x <= gfAsset.width / 2 && localGF.y >= -gfAsset.height / 2 && localGF.y <= gfAsset.height / 2) {
goldenFreddy.down(x, y, obj);
if (typeof goldenFreddyTimeout !== "undefined" && goldenFreddyTimeout) {
LK.clearTimeout(goldenFreddyTimeout);
goldenFreddyTimeout = undefined;
}
return;
}
}
// Ekrana dokunulduğunda Springtrap'e tıklanıp tıklanmadığını kontrol et
if (springtrap.active && springtrap.visible) {
// Koordinatları Springtrap'in lokaline çevir
var local = springtrap.toLocal(game.toGlobal({
x: x,
y: y
}));
// Springtrap kutusunun içinde mi?
var stAsset = springtrap.children[0];
if (local.x >= -stAsset.width / 2 && local.x <= stAsset.width / 2 && local.y >= -stAsset.height / 2 && local.y <= stAsset.height / 2) {
springtrap.down(x, y, obj);
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
}
}
};
// Oyun başladığında skor sıfırlansın
LK.setScore(0);
scoreTxt.setText(0); /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
// Golden Freddy karakteri
var GoldenFreddy = Container.expand(function () {
var self = Container.call(this);
var gf = self.attachAsset('goldenfreddy', {
anchorX: 0.5,
anchorY: 0.5
});
self.active = false;
self.appear = function (kapak) {
if (kapak) {
self.x = kapak.x;
self.y = kapak.y - kapak.height / 2 - self.height / 2 + 40;
} else {
self.x = 2048 / 2;
self.y = 2732 / 2;
}
self.visible = true;
self.active = true;
self.scale.x = 0.7;
self.scale.y = 0.7;
tween(self.scale, {
x: 1,
y: 1
}, {
duration: 200,
easing: tween.easeOut
});
};
self.hide = function () {
self.active = false;
tween(self.scale, {
x: 0.2,
y: 0.2
}, {
duration: 180,
easing: tween.easeIn,
onFinish: function onFinish() {
self.visible = false;
}
});
};
self.down = function (x, y, obj) {
if (!self.active) return;
// Golden Freddy'ye basınca jumpscare!
triggerJumpscare();
self.hide();
};
return self;
});
// Ekstra kalp (can) class'ı
var Heart = Container.expand(function () {
var self = Container.call(this);
// Kalp görseli (artık asset olarak kalp resmi)
var heartAsset = self.attachAsset('heart', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
self.active = true;
// Kalp'e dokununca
self.down = function (x, y, obj) {
if (!self.active) return;
self.active = false;
self.visible = false;
// 1 can ekle
if (typeof lives !== "undefined") {
lives += 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
}
// Kalbi yok et
self.destroy();
};
return self;
});
// Jumpscare efekti (ekranı kırmızıya boyar ve titretir)
var Jumpscare = Container.expand(function () {
var self = Container.call(this);
var js = self.attachAsset('jumpscare', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
self.alpha = 0;
self.visible = false;
// Jumpscare başlat
self.start = function () {
self.visible = true;
self.alpha = 0.8;
// Titreme efekti
var shakeCount = 0;
var shakeMax = 10;
var shakeTimer = LK.setInterval(function () {
self.x = (Math.random() - 0.5) * 40;
self.y = (Math.random() - 0.5) * 40;
shakeCount++;
if (shakeCount > shakeMax) {
LK.clearInterval(shakeTimer);
self.x = 0;
self.y = 0;
// Yavaşça kaybol
tween(self, {
alpha: 0
}, {
duration: 400,
onFinish: function onFinish() {
self.visible = false;
}
});
}
}, 30);
};
return self;
});
// Kapak (cover) class: farklı renkli kapaklar için
var Kapak = Container.expand(function () {
var self = Container.call(this);
// Kapak indexine göre farklı asset kullan
self.setKapakIndex = function (idx) {
// Önce eski asset varsa kaldır
if (self.kapakAsset) {
self.removeChild(self.kapakAsset);
}
self.kapakIndex = idx;
self.kapakAsset = self.attachAsset('kapak' + idx, {
anchorX: 0.5,
anchorY: 0.5
});
};
return self;
});
// Springtrap karakteri
var Springtrap = Container.expand(function () {
var self = Container.call(this);
// Karakteri ortalamak için anchor noktası ortada
var st = self.attachAsset('springtrap', {
anchorX: 0.5,
anchorY: 0.5
});
// Springtrap'in aktif olup olmadığını tut
self.active = false;
// Springtrap'i kapakların birinin ortasında rastgele çıkar
self.appear = function () {
// Kapaklar globalde tanımlı
if (typeof kapaklar !== "undefined" && kapaklar.length > 0) {
var idx = Math.floor(Math.random() * kapaklar.length);
var kapak = kapaklar[idx];
// Springtrap'i kapağın ortasına yerleştir
self.x = kapak.x;
self.y = kapak.y - kapak.height / 2 - self.height / 2 + 40; // Biraz kapağın üstünde çıksın
} else {
// Fallback: ortada göster
self.x = 2048 / 2;
self.y = 2732 / 2;
}
self.visible = true;
self.active = true;
// Hafifçe büyüyerek ortaya çıkma animasyonu
self.scale.x = 0.7;
self.scale.y = 0.7;
tween(self.scale, {
x: 1,
y: 1
}, {
duration: 200,
easing: tween.easeOut
});
};
// Springtrap'i uzaklaştır
self.scareAway = function (_onFinish) {
self.active = false;
// 'Üzerine tıkla' yazısını gizle
if (typeof tapHint !== "undefined") tapHint.visible = false;
// Küçülerek kaybolma animasyonu
tween(self.scale, {
x: 0.2,
y: 0.2
}, {
duration: 180,
easing: tween.easeIn,
onFinish: function onFinish() {
self.visible = false;
if (_onFinish) _onFinish();
}
});
};
// Springtrap'e dokunulduğunda
self.down = function (x, y, obj) {
if (!self.active) return;
// Skoru artır, Springtrap'i uzaklaştır
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
LK.getSound('scare_away').play();
self.scareAway(function () {
// Sonraki Springtrap için zamanlayıcı başlat
scheduleNextSpringtrap();
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x111111
});
/****
* Game Code
****/
// Golden Freddy asset
// Skor metni
// Springtrap karakteri için bir kutu şekli (daha sonra görsel ile değiştirilebilir)
// Jumpscare efekti için kırmızı bir kutu
// Springtrap uzaklaştırma efekti için kısa bir ses
// Jumpscare için bir ses efekti
// 6 farklı renkli kapaklar
// Mavi
// Kırmızı
// Yeşil
// Sarı
// Mor
// Lacivert
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFF700
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// 6 farklı renkli kapakları ekle
var kapaklar = [];
var kapakCount = 6;
var kapakSpacing = 120; // Aralıkları büyüttük
var kapakWidth = 480; // Kapakları büyüttük
var kapakHeight = 270; // Kapakları büyüttük
// 2 satır, 3 sütun olacak şekilde ortala
var cols = 3;
var rows = 2;
var totalWidth = cols * kapakWidth + (cols - 1) * kapakSpacing;
var totalHeight = rows * kapakHeight + (rows - 1) * kapakSpacing;
var startX = (2048 - totalWidth) / 2 + kapakWidth / 2;
var startY = (2732 - totalHeight) / 2 + kapakHeight / 2;
for (var i = 0; i < kapakCount; i++) {
var kapak = new Kapak();
kapak.setKapakIndex(i);
var row = Math.floor(i / cols);
var col = i % cols;
kapak.x = startX + col * (kapakWidth + kapakSpacing);
kapak.y = startY + row * (kapakHeight + kapakSpacing);
game.addChild(kapak);
kapaklar.push(kapak);
}
// --- BAŞLAT MENÜSÜ EKLE ---
var startMenuBg = LK.getAsset('centerCircle', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
scaleX: 2048 / 100,
scaleY: 2732 / 100
});
startMenuBg.tint = 0x0074D9; // mavi
startMenuBg.alpha = 1;
// Oyun ismi başlat menüsünde en üstte büyük olarak gösterilsin
var startMenuGameName = new Text2('Springtrap Jumpscare', {
size: 220,
fill: 0xFFF700
});
startMenuGameName.anchor.set(0.5, 0.5);
startMenuGameName.x = 2048 / 2;
startMenuGameName.y = 2732 / 2 - 500;
var startMenuText = new Text2('Başlamak için dokun', {
size: 140,
fill: 0xFFFFFF
});
startMenuText.anchor.set(0.5, 0.5);
startMenuText.x = 2048 / 2;
startMenuText.y = 2732 / 2 - 100;
// (İsteğe bağlı: eski başlık metni kaldırıldı, çünkü yukarıda büyük başlık var)
// var startMenuTitle = new Text2('Springtrap Jumpscare', {
// size: 180,
// fill: 0xFFF700
// });
// startMenuTitle.anchor.set(0.5, 0.5);
// startMenuTitle.x = 2048 / 2;
// startMenuTitle.y = 2732 / 2 - 350;
var startMenu = new Container();
startMenu.addChild(startMenuBg);
startMenu.addChild(startMenuGameName);
startMenu.addChild(startMenuText);
// En yüksek skor metni
var highScore = storage.highScore || 0;
var highScoreTxt = new Text2('En Yüksek Skor: ' + highScore, {
size: 110,
fill: 0xffffff
});
highScoreTxt.anchor.set(0.5, 0.5);
highScoreTxt.x = 2048 / 2;
highScoreTxt.y = 2732 / 2 + 120;
startMenu.addChild(highScoreTxt);
game.addChild(startMenu);
var gameStarted = false;
// Springtrap nesnesi
var springtrap = new Springtrap();
game.addChild(springtrap);
// Jumpscare efekti
var jumpscare = new Jumpscare();
game.addChild(jumpscare);
// Springtrap'in ekranda kalma süresi (ms)
var springtrapTime = 900;
// Springtrap'in tekrar çıkma aralığı (ms)
var springtrapDelayMin = 700;
var springtrapDelayMax = 1600;
// Springtrap zamanlayıcıları
var springtrapTimeout = null;
var springtrapAppearTimeout = null;
// Can (hak) sayısı ve metni
var lives = 1;
// Sağ üstte kalp ve sayaç için bir container
var livesContainer = new Container();
// Kalp simgesi (küçük boyut, sağ üstte)
var livesIcon = LK.getAsset('heart', {
anchorX: 1,
anchorY: 0,
scaleX: 0.7,
scaleY: 0.7,
x: 0,
y: 0
});
livesContainer.addChild(livesIcon);
// Sayaç metni (kalbin solunda)
var livesTxt = new Text2("x" + lives, {
size: 110,
fill: 0xff3b3b
});
livesTxt.anchor.set(1, 0.5);
livesTxt.x = -20;
livesTxt.y = livesIcon.height / 2 - 10;
livesContainer.addChild(livesTxt);
// Sağ üst köşeye yerleştir (biraz içeri, menüyle çakışmasın)
livesContainer.x = 2048 - 40;
livesContainer.y = 40;
// Aktif kalp referansı
var activeHeart = null;
// Birden fazla kalp için dizi
var activeHearts = [];
// Aktif buton referansı
var activeButton = null;
// Golden Freddy referansı ve timeout'u
var goldenFreddy = undefined;
var goldenFreddyTimeout = undefined;
// Skoru sıfırla
LK.setScore(0);
scoreTxt.setText(0);
// --- Springtrap gelince 'üzerine tıkla' yazısı ---
var tapHint = new Text2('Üzerine tıkla!', {
size: 120,
fill: 0xFFFFFF
});
tapHint.anchor.set(0.5, 0.5);
tapHint.x = 2048 / 2;
tapHint.y = 2732 / 2 + 400;
tapHint.visible = false;
game.addChild(tapHint);
// Springtrap'i ekranda göster
function showSpringtrap() {
springtrap.appear();
// 'Üzerine tıkla' yazısını göster
tapHint.visible = true;
// Golden Freddy'yi rastgele bir kapağa çıkar (yaklaşık %80 olasılıkla ve Springtrap ile aynı kapakta olamaz)
if (typeof goldenFreddy !== "undefined" && goldenFreddy && goldenFreddy.parent) {
goldenFreddy.hide();
goldenFreddy.visible = false;
}
if (typeof goldenFreddyTimeout !== "undefined" && goldenFreddyTimeout) {
LK.clearTimeout(goldenFreddyTimeout);
}
if (typeof goldenFreddy === "undefined") {
goldenFreddy = new GoldenFreddy();
game.addChild(goldenFreddy);
}
goldenFreddy.active = false;
goldenFreddy.visible = false;
// Golden Freddy %80 olasılıkla çıkacak ve Springtrap ile aynı kapakta olmayacak
if (Math.random() < 0.8 && kapaklar.length > 1) {
// Springtrap'in bulunduğu kapağı bul
var springtrapKapakIdx = -1;
for (var i = 0; i < kapaklar.length; i++) {
if (Math.abs(springtrap.x - kapaklar[i].x) < 2 && Math.abs(springtrap.y - (kapaklar[i].y - kapaklar[i].height / 2 - springtrap.height / 2 + 40)) < 2) {
springtrapKapakIdx = i;
break;
}
}
// Springtrap'in kapağı hariç diğerlerinden rastgele seç
var availableKapaklar = [];
for (var i = 0; i < kapaklar.length; i++) {
if (i !== springtrapKapakIdx) {
availableKapaklar.push(kapaklar[i]);
}
}
if (availableKapaklar.length > 0) {
var gfIdx = Math.floor(Math.random() * availableKapaklar.length);
var gfKapak = availableKapaklar[gfIdx];
goldenFreddy.appear(gfKapak);
// Golden Freddy ekranda 0.8 saniye kalsın, sonra kaybolsun
goldenFreddyTimeout = LK.setTimeout(function () {
goldenFreddy.hide();
}, 800);
}
}
// İlk 10 skor için birden fazla kalp çıkar
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
}
activeHearts = [];
if (LK.getScore() < 10) {
// 2-4 arası kalp çıkar (her seferinde farklı sayıda)
var heartCount = 2 + Math.floor(Math.random() * 3); // 2,3,4
var margin = 200;
var minX = margin;
var maxX = 2048 - margin;
var minY = margin + 200;
var maxY = 2732 - margin - 200;
for (var i = 0; i < heartCount; i++) {
var heart = new Heart();
// Rastgele bir konumda (kapakların dışında, ekranın ortasında bir yerde)
heart.x = minX + Math.random() * (maxX - minX);
heart.y = minY + Math.random() * (maxY - minY);
game.addChild(heart);
activeHearts.push(heart);
}
} else {
// 10 ve üstü skor için eski kalp varsa yok et, tekli kalp çıkarma (önceki davranış)
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (Math.random() < 0.3) {
activeHeart = new Heart();
var margin = 200;
var minX = margin;
var maxX = 2048 - margin;
var minY = margin + 200;
var maxY = 2732 - margin - 200;
activeHeart.x = minX + Math.random() * (maxX - minX);
activeHeart.y = minY + Math.random() * (maxY - minY);
game.addChild(activeHeart);
}
}
// --- RASTGELE BUTON EKLEME ---
// Sadece skor 20 veya daha fazlaysa buton gelsin
if (LK.getScore() >= 20) {
// Önce eski buton varsa kaldır
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
var buttonWidth = 420;
var buttonHeight = 180;
var buttonMargin = 120;
var buttonMinX = buttonMargin + buttonWidth / 2;
var buttonMaxX = 2048 - buttonMargin - buttonWidth / 2;
var buttonMinY = buttonMargin + buttonHeight / 2;
var buttonMaxY = 2732 - buttonMargin - buttonHeight / 2;
var buttonX = buttonMinX + Math.random() * (buttonMaxX - buttonMinX);
var buttonY = buttonMinY + Math.random() * (buttonMaxY - buttonMinY);
activeButton = new Container();
var btnBg = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: buttonWidth / 100,
scaleY: buttonHeight / 100,
x: 0,
y: 0
});
btnBg.tint = 0x00c853;
activeButton.addChild(btnBg);
var btnText = new Text2('BUTONA BAS!', {
size: 90,
fill: 0xffffff
});
btnText.anchor.set(0.5, 0.5);
btnText.x = 0;
btnText.y = 0;
activeButton.addChild(btnText);
activeButton.x = buttonX;
activeButton.y = buttonY;
activeButton.visible = true;
activeButton.active = true;
game.addChild(activeButton);
// Butona basınca butonu yok et, bir sonraki springtrap'e geç
activeButton.down = function (x, y, obj) {
if (!activeButton.active) return;
activeButton.active = false;
activeButton.visible = false;
activeButton.destroy();
activeButton = null;
// Springtrap'i de yok et, yeni springtrap gelsin
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
if (springtrap.active) {
springtrap.active = false;
springtrap.visible = false;
}
if (tapHint) tapHint.visible = false;
scheduleNextSpringtrap();
};
// Eğer oyuncu zamanında dokunmazsa jumpscare başlat
springtrapTimeout = LK.setTimeout(function () {
// Eğer butona basılmadıysa ve aktifse, jumpscare!
if (typeof activeButton !== "undefined" && activeButton && activeButton.active) {
activeButton.active = false;
activeButton.visible = false;
activeButton.destroy();
activeButton = null;
// Butona basılmadıysa jumpscare başlat
triggerJumpscare();
return;
}
// Eğer springtrap aktifse ve butona basılmışsa, yine jumpscare başlat
if (springtrap.active) {
triggerJumpscare();
}
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
}, springtrapTime);
} else {
// Skor 20'den küçükse, eski buton varsa kaldır ve yeni buton oluşturma
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
// Springtrap için timeout yine de başlatılsın (buton yokken de springtrap süresi dolunca jumpscare olabilsin)
springtrapTimeout = LK.setTimeout(function () {
// Sadece springtrap aktifse jumpscare başlat
if (springtrap.active) {
triggerJumpscare();
}
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
}, springtrapTime);
}
}
// Sonraki Springtrap için zamanlayıcı kur
function scheduleNextSpringtrap() {
if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
springtrapAppearTimeout = LK.setTimeout(function () {
showSpringtrap();
}, springtrapDelayMin + Math.floor(Math.random() * (springtrapDelayMax - springtrapDelayMin)));
}
// Jumpscare başlat
function triggerJumpscare() {
// Eğer fazladan can varsa jumpscare'i engelle ve canı azalt
if (typeof lives !== "undefined" && lives > 1) {
lives -= 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
// Springtrap'i kaybet, yeni springtrap gelsin
springtrap.active = false;
springtrap.visible = false;
if (tapHint) tapHint.visible = false;
scheduleNextSpringtrap();
// Kalp varsa yok et
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
return;
}
springtrap.active = false;
springtrap.visible = false;
jumpscare.start();
// Jumpscare sesi çal
LK.getSound('jumpscare_sfx').play();
// Jumpscare sırasında müziği durdur
LK.stopMusic();
// Kısa gecikmeden sonra oyun biter ve jumpscare ekranda gösterilir
LK.setTimeout(function () {
jumpscare.visible = false; // Jumpscare'i gizle (oyun bitince)
LK.showGameOver();
}, 900);
}
// Oyun başladığında ilk Springtrap'i göster
// scheduleNextSpringtrap();
// Oyuncu başlat menüsünde dokunana kadar oyun başlamasın
// Oyun bittiğinde zamanlayıcıları temizle
game.onDestroy = function () {
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
if (springtrapAppearTimeout) LK.clearTimeout(springtrapAppearTimeout);
// Oyun bittiğinde başlat menüsünü tekrar göster
if (startMenu) startMenu.visible = true;
gameStarted = false;
if (tapHint) tapHint.visible = false;
// Oyun bitince müziği durdur
LK.stopMusic();
// Skor kaydı ve gösterimi
var currentScore = LK.getScore();
if (!storage.highScore || currentScore > storage.highScore) {
storage.highScore = currentScore;
}
if (typeof highScoreTxt !== "undefined") {
highScoreTxt.setText('En Yüksek Skor: ' + (storage.highScore || 0));
}
// Canı sıfırla
lives = 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
// Buton varsa yok et
if (typeof activeButton !== "undefined" && activeButton && activeButton.parent) {
activeButton.destroy();
activeButton = null;
}
// Golden Freddy varsa yok et
if (typeof goldenFreddy !== "undefined" && goldenFreddy && goldenFreddy.parent) {
goldenFreddy.hide();
goldenFreddy.visible = false;
}
if (typeof goldenFreddyTimeout !== "undefined" && goldenFreddyTimeout) {
LK.clearTimeout(goldenFreddyTimeout);
goldenFreddyTimeout = undefined;
}
};
// Oyun açıldığında arka plan müziğini başlat
LK.playMusic('backraund');
// Oyun güncellemesi (gerekirse ek efektler için)
game.update = function () {
// Oyun akışı burada yönetiliyor
};
// Ekrana dokunma olaylarını Springtrap'e yönlendir
game.down = function (x, y, obj) {
// Eğer oyun başlamadıysa ve başlat menüsü açıksa, başlat
if (!gameStarted && startMenu && startMenu.visible !== false) {
gameStarted = true;
startMenu.visible = false;
LK.setScore(0);
scoreTxt.setText(0);
// Canı sıfırla
lives = 1;
if (typeof livesTxt !== "undefined") livesTxt.setText("x" + lives);
if (activeHeart && activeHeart.parent) {
activeHeart.destroy();
activeHeart = null;
}
if (typeof activeHearts !== "undefined" && Array.isArray(activeHearts)) {
for (var h = 0; h < activeHearts.length; h++) {
if (activeHearts[h] && activeHearts[h].parent) {
activeHearts[h].destroy();
}
}
activeHearts = [];
}
scheduleNextSpringtrap();
return;
}
// Önce butona tıklanıp tıklanmadığını kontrol et
if (typeof activeButton !== "undefined" && activeButton && activeButton.active && activeButton.visible) {
// Koordinatları butonun lokaline çevir
var localBtn = activeButton.toLocal(game.toGlobal({
x: x,
y: y
}));
var btnBg = activeButton.children[0];
if (localBtn.x >= -btnBg.width / 2 && localBtn.x <= btnBg.width / 2 && localBtn.y >= -btnBg.height / 2 && localBtn.y <= btnBg.height / 2) {
if (typeof activeButton.down === "function") {
activeButton.down(x, y, obj);
}
return;
}
}
// Golden Freddy'ye tıklama kontrolü
if (typeof goldenFreddy !== "undefined" && goldenFreddy && goldenFreddy.active && goldenFreddy.visible) {
var localGF = goldenFreddy.toLocal(game.toGlobal({
x: x,
y: y
}));
var gfAsset = goldenFreddy.children[0];
if (localGF.x >= -gfAsset.width / 2 && localGF.x <= gfAsset.width / 2 && localGF.y >= -gfAsset.height / 2 && localGF.y <= gfAsset.height / 2) {
goldenFreddy.down(x, y, obj);
if (typeof goldenFreddyTimeout !== "undefined" && goldenFreddyTimeout) {
LK.clearTimeout(goldenFreddyTimeout);
goldenFreddyTimeout = undefined;
}
return;
}
}
// Ekrana dokunulduğunda Springtrap'e tıklanıp tıklanmadığını kontrol et
if (springtrap.active && springtrap.visible) {
// Koordinatları Springtrap'in lokaline çevir
var local = springtrap.toLocal(game.toGlobal({
x: x,
y: y
}));
// Springtrap kutusunun içinde mi?
var stAsset = springtrap.children[0];
if (local.x >= -stAsset.width / 2 && local.x <= stAsset.width / 2 && local.y >= -stAsset.height / 2 && local.y <= stAsset.height / 2) {
springtrap.down(x, y, obj);
if (springtrapTimeout) LK.clearTimeout(springtrapTimeout);
}
}
};
// Oyun başladığında skor sıfırlansın
LK.setScore(0);
scoreTxt.setText(0);