User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = validFlatLeaderboard;' Line Number: 426
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = flatLeaderboard;' Line Number: 405
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = finalLeaderboard;' Line Number: 396 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Compilation error[L374]: TypeError: storage.set is not a function hatasını ve Compilation error[L374]: Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed. hatasını çözümle
User prompt
Please fix the bug: 'TypeError: storage.set is not a function' in or related to this line: 'storage.set("leaderboard", safeLeaderboard);' Line Number: 374
User prompt
Compilation error[L334]: Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed. hatasını çözüme kavuştur.
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = safeLeaderboard;' Line Number: 363
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'leaderboard.push({' Line Number: 334 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
oyun başlangıcında oyundan hariç bir usernama ve Ok butonu olan bir inputbox aç. kullanıcı adını yazan oyuncunun skor bilgisini bir dosyada sakla. en yüksekten en aza doğru ilk 5 skoru oyunun sonunda yine harici bir pencerede liste halide numaralandırarak göster. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Compilation error[L378]: ReferenceError: showLeaderboard is not defined hatasını çözümle.
User prompt
Please fix the bug: 'ReferenceError: showLeaderboard is not defined' in or related to this line: 'showLeaderboard();' Line Number: 378
User prompt
kodlardan leaderboard ile ilgili herşeyi kaldır
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlatTop10SafeFinalSafeFinalSafe;' Line Number: 944 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'TypeError: storage.set is not a function' in or related to this line: 'storage.set("leaderboard", leaderboardToStoreLiteralsSafeFlatTop10SafeFinalSafeFinalSafe);' Line Number: 944 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlatTop10SafeFinalSafeFinalSafe;' Line Number: 944
User prompt
Please fix the bug: 'TypeError: storage.set is not a function' in or related to this line: 'storage.set("leaderboard", leaderboardToStoreLiteralsSafeFlatTop10SafeFinalSafeFinalSafe);' Line Number: 944 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
oyun bitince meydana gelen hatayı çöz
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlatTop10SafeFinalSafeFinal;' Line Number: 935 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlatTop10SafeFinalSafe;' Line Number: 926 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlatTop10SafeFinal;' Line Number: 917 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlatTop10Safe;' Line Number: 908 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlatTop10;' Line Number: 899 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlat.length > 10 ? leaderboardToStoreLiteralsSafeFlat.slice(0, 10) : leaderboardToStoreLiteralsSafeFlat;' Line Number: 891
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlat.length > 10 ? leaderboardToStoreLiteralsSafeFlat.slice(0, 10) : leaderboardToStoreLiteralsSafeFlat;' Line Number: 891 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Please fix the bug: 'Error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.leaderboard = leaderboardToStoreLiteralsSafeFlat.slice(0, 10);' Line Number: 891 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Swatter class var Swatter = Container.expand(function () { var self = Container.call(this); // Swatter types and their point values var swatterTypes = [{ id: 'swatter_red', points: 50 }, { id: 'swatter_yellow', points: 35 }, { id: 'swatter_green', points: 20 }, { id: 'swatter_blue', points: 60 }]; // Randomly select a type var typeIndex = Math.floor(Math.random() * swatterTypes.length); self.type = swatterTypes[typeIndex]; self.points = self.type.points; // Attach asset var swatterAsset = self.attachAsset(self.type.id, { anchorX: 0.5, anchorY: 0.5 }); // Set initial position and speed self.x = 2048 + 120; // Start just off the right edge self.y = 200 + Math.floor(Math.random() * (2732 - 400)); self.speed = (12 + Math.random() * 6) * 0.75; // 25% slower // Allow scaleX to be set after creation for random length self.scaleX = 1; // For collision detection self.update = function () { self.x -= self.speed; }; return self; }); // Yumurta class (formerly Fly) var Yumurta = Container.expand(function () { var self = Container.call(this); var flyAsset = self.attachAsset('fly', { anchorX: 0.5, anchorY: 0.5 }); self.width = flyAsset.width; self.height = flyAsset.height; // Physics self.vy = 0; self.gravity = 1.2; self.lift = -28; // For touch controls self.flap = function () { self.vy = self.lift; }; // Update position self.update = function () { self.vy += self.gravity; self.y += self.vy; // Clamp to screen if (self.y < self.height / 2) { self.y = self.height / 2; self.vy = 0; } if (self.y > 2732 - self.height / 2) { self.y = 2732 - self.height / 2; self.vy = 0; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Initial background: black }); /**** * Game Code ****/ // Use storage plugin for persistent data // --- Ava: High Score Table & Username Prompt --- // Username and leaderboard var username = ""; var leaderboard = []; // [{name, score}] // Helper to load leaderboard from storage function loadLeaderboard() { var data = storage.leaderboard; if (data && Array.isArray(data)) { leaderboard = data; } else { leaderboard = []; } } // Helper to save leaderboard to storage function saveLeaderboard() { // Only store 1-level deep array of objects with literal values var safeLeaderboard = []; for (var i = 0; i < leaderboard.length; i++) { var entry = leaderboard[i]; // Only keep name and score as literals safeLeaderboard.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values // Defensive: ensure only 1-level deep, no nested objects/arrays var flatLeaderboard = []; for (var i = 0; i < safeLeaderboard.length; i++) { var entry = safeLeaderboard[i]; flatLeaderboard.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep, no nested objects/arrays var leaderboardToStore = []; for (var i = 0; i < flatLeaderboard.length; i++) { var entry = flatLeaderboard[i]; leaderboardToStore.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: flatten leaderboardToStore to a 1-level deep array of objects with only string/number values var leaderboardFlat = []; for (var i = 0; i < leaderboardToStore.length; i++) { var entry = leaderboardToStore[i]; leaderboardFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values var leaderboardFinal = []; for (var i = 0; i < leaderboardFlat.length; i++) { var entry = leaderboardFlat[i]; leaderboardFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values var leaderboardStore = []; for (var i = 0; i < leaderboardFinal.length; i++) { var entry = leaderboardFinal[i]; leaderboardStore.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values var leaderboardToSave = []; for (var i = 0; i < leaderboardStore.length; i++) { var entry = leaderboardStore[i]; leaderboardToSave.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values var leaderboardToSaveFlat = []; for (var i = 0; i < leaderboardToSave.length; i++) { var entry = leaderboardToSave[i]; leaderboardToSaveFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafe = []; for (var i = 0; i < leaderboardToSaveFlat.length; i++) { var entry = leaderboardToSaveFlat[i]; leaderboardToSaveFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafeFinal = []; for (var i = 0; i < leaderboardToSaveFlatSafe.length; i++) { var entry = leaderboardToSaveFlatSafe[i]; leaderboardToSaveFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafeFinalFlat = []; for (var i = 0; i < leaderboardToSaveFlatSafeFinal.length; i++) { var entry = leaderboardToSaveFlatSafeFinal[i]; leaderboardToSaveFlatSafeFinalFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafeFinalFlatSafe = []; for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlat.length; i++) { var entry = leaderboardToSaveFlatSafeFinalFlat[i]; leaderboardToSaveFlatSafeFinalFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafeFinalFlatSafeSafe = []; for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafe.length; i++) { var entry = leaderboardToSaveFlatSafeFinalFlatSafe[i]; leaderboardToSaveFlatSafeFinalFlatSafeSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal = []; for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafe.length; i++) { var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafe[i]; leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat = []; for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal.length; i++) { var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal[i]; leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe = []; for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat.length; i++) { var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat[i]; leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinal = []; for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe.length; i++) { var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe[i]; leaderboardToStoreFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafe = []; for (var i = 0; i < leaderboardToStoreFinal.length; i++) { var entry = leaderboardToStoreFinal[i]; leaderboardToStoreFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlat = []; for (var i = 0; i < leaderboardToStoreFinalSafe.length; i++) { var entry = leaderboardToStoreFinalSafe[i]; leaderboardToStoreFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlat.length; i++) { var entry = leaderboardToStoreFinalSafeFlat[i]; leaderboardToStoreFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinal = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafe.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafe[i]; leaderboardToStoreFinalSafeFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlat = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinal.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinal[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlat.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlat[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat.length; i++) { var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat[i]; leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values var leaderboardToSaveFinal = []; var arr = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe; for (var i = 0; i < arr.length && i < 10; i++) { var entry = arr[i]; leaderboardToSaveFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store only 1-level deep array of objects with literal values, max 10 entries var safeLeaderboardToStore = []; for (var i = 0; i < leaderboardToSaveFinal.length && i < 10; i++) { var entry = leaderboardToSaveFinal[i]; safeLeaderboardToStore.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving var leaderboardToStoreFlat = []; for (var i = 0; i < safeLeaderboardToStore.length && i < 10; i++) { var entry = safeLeaderboardToStore[i]; leaderboardToStoreFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values var leaderboardToStoreFlatSafe = []; for (var i = 0; i < leaderboardToStoreFlat.length && i < 10; i++) { var entry = leaderboardToStoreFlat[i]; leaderboardToStoreFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinal = []; for (var i = 0; i < leaderboardToStoreFlatSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafe[i]; leaderboardToStoreFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinal.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinal[i]; leaderboardToStoreFlatSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinal = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinal.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinal[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal[i]; leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafe = []; for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe[i]; leaderboardFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlat = []; for (var i = 0; i < leaderboardFinalSafe.length && i < 10; i++) { var entry = leaderboardFinalSafe[i]; leaderboardFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardFinalSafeFlat.length && i < 10; i++) { var entry = leaderboardFinalSafeFlat[i]; leaderboardFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlat = []; for (var i = 0; i < leaderboardFinalSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafe[i]; leaderboardFinalSafeFlatSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlat.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlat[i]; leaderboardFinalSafeFlatSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlat = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlat.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlat[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe[i]; leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardSafeToStore = []; for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe.length && i < 10; i++) { var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe[i]; leaderboardSafeToStore.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries var leaderboardSafeToStoreFlat = []; for (var i = 0; i < leaderboardSafeToStore.length && i < 10; i++) { var entry = leaderboardSafeToStore[i]; leaderboardSafeToStoreFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries var leaderboardToStore = []; for (var i = 0; i < leaderboardSafeToStoreFlat.length && i < 10; i++) { var entry = leaderboardSafeToStoreFlat[i]; leaderboardToStore.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries var leaderboardToStoreFlatLiterals = []; for (var i = 0; i < leaderboardToStore.length && i < 10; i++) { var entry = leaderboardToStore[i]; leaderboardToStoreFlatLiterals.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries var leaderboardToStoreFlatLiteralsSafe = []; for (var i = 0; i < leaderboardToStoreFlatLiterals.length && i < 10; i++) { var entry = leaderboardToStoreFlatLiterals[i]; leaderboardToStoreFlatLiteralsSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries var leaderboardToPersist = []; for (var i = 0; i < leaderboardToStoreFlatLiteralsSafe.length && i < 10; i++) { var entry = leaderboardToStoreFlatLiteralsSafe[i]; leaderboardToPersist.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries var leaderboardFlatLiterals = []; for (var i = 0; i < leaderboardToPersist.length && i < 10; i++) { var entry = leaderboardToPersist[i]; leaderboardFlatLiterals.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries var leaderboardToStoreLiterals = []; for (var i = 0; i < leaderboardFlatLiterals.length && i < 10; i++) { var entry = leaderboardFlatLiterals[i]; leaderboardToStoreLiterals.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries var leaderboardToStoreLiteralsSafe = []; for (var i = 0; i < leaderboardToStoreLiterals.length && i < 10; i++) { var entry = leaderboardToStoreLiterals[i]; leaderboardToStoreLiteralsSafe.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries var leaderboardToStoreLiteralsSafeFlat = []; for (var i = 0; i < leaderboardToStoreLiteralsSafe.length && i < 10; i++) { var entry = leaderboardToStoreLiteralsSafe[i]; leaderboardToStoreLiteralsSafeFlat.push({ name: typeof entry.name === "string" ? entry.name : "", score: typeof entry.score === "number" ? entry.score : 0 }); } // Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries storage.leaderboard = leaderboardToStoreLiteralsSafeFlat.length > 10 ? leaderboardToStoreLiteralsSafeFlat.slice(0, 10) : leaderboardToStoreLiteralsSafeFlat; } // Helper to show username prompt before game starts function showUsernamePrompt(onDone) { // Remove any old prompt if (typeof usernamePromptBox !== "undefined" && usernamePromptBox.parent) { usernamePromptBox.parent.removeChild(usernamePromptBox); } // Load username from storage if available, fallback to default var storedUsername = storage.username; if (typeof storedUsername === "string" && storedUsername.length > 0) { username = storedUsername.substring(0, 16); } else { username = ""; } // --- Ava: 5cm x 4cm box, white, rounded, centered --- // iPad Pro 12" portrait: 2048x2732, 1cm ≈ 81.92px (2048/25) var cmToPx = 2048 / 25.0; var boxW = Math.round(5 * cmToPx); // 409px var boxH = Math.round(4 * cmToPx); // 327px // Main box container usernamePromptBox = new Container(); // White rounded rectangle var boxBg = LK.getAsset('bg_forest', { width: boxW, height: boxH, color: 0xffffff, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); boxBg.alpha = 1; boxBg.radius = Math.min(boxH, boxW) / 3; // oval corners usernamePromptBox.addChild(boxBg); // Prompt text var promptTxt = new Text2("Kullanıcı adını gir:", { size: 70, fill: 0x222222, align: "center" }); promptTxt.anchor.set(0.5, 0); promptTxt.x = 0; promptTxt.y = -boxH / 2 + 36; usernamePromptBox.addChild(promptTxt); // Input box (simulated as a white rounded rectangle with border) var inputW = boxW - 80; var inputH = 90; var inputBg = LK.getAsset('bg_forest', { width: inputW, height: inputH, color: 0xffffff, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: 0, y: -30 }); inputBg.alpha = 1; inputBg.radius = inputH / 2; usernamePromptBox.addChild(inputBg); // Input text var initialUsernameText = username && username.length > 0 ? username : "_"; var inputText = new Text2(initialUsernameText, { size: 70, fill: 0x222222, align: "center" }); inputText.anchor.set(0.5, 0.5); inputText.x = 0; inputText.y = -30; inputText.textValue = username && username.length > 0 ? username : ""; usernamePromptBox.addChild(inputText); // --- Ava: On-screen keypad for username entry (mobile-friendly) --- var btnW = 220, btnH = 80; // Place the "Tamam" button below the keypad var btnBg = LK.getAsset('bg_forest', { width: btnW, height: btnH, color: 0xffffff, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: 0, // y: below keypad, calculate based on keypad height y: keyPadStartY + keyRows * keyH + btnH / 2 + 24 }); btnBg.alpha = 1; btnBg.radius = btnH / 2; usernamePromptBox.addChild(btnBg); var btnTxt = new Text2("Tamam", { size: 60, fill: 0x222222, align: "center" }); btnTxt.anchor.set(0.5, 0.5); btnTxt.x = 0; btnTxt.y = keyPadStartY + keyRows * keyH + btnH / 2 + 24; usernamePromptBox.addChild(btnTxt); // Add to game usernamePromptBox.x = 2048 / 2; usernamePromptBox.y = 2732 / 2; game.addChild(usernamePromptBox); // Input logic inputBg.interactive = false; inputText.interactive = false; // Keypad layout (4x7 grid: A-Z, Sil, Temizle, Boşluk) var keypadKeys = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Sil", "Temizle"]; var keypadBtns = []; var keyCols = 7; var keyRows = 4; var keyW = Math.floor((inputW - 20) / keyCols); var keyH = 80; var keyPadStartY = 60; for (var i = 0; i < keyCols * keyRows; i++) { var col = i % keyCols; var row = Math.floor(i / keyCols); var keyLabel = keypadKeys[i]; if (!keyLabel) continue; var keyBtn = LK.getAsset('bg_forest', { width: keyW - 10, height: keyH - 10, color: 0xf0f0f0, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: -((keyCols - 1) * keyW) / 2 + col * keyW, y: keyPadStartY + row * keyH }); keyBtn.radius = 18; keyBtn.interactive = true; (function (keyLabel, keyBtn) { keyBtn.down = function () { if (!inputActive) return; if (keyLabel === "Sil") { inputText.textValue = inputText.textValue.slice(0, -1); } else if (keyLabel === "Temizle") { inputText.textValue = ""; } else if (inputText.textValue.length < 16 && keyLabel.length === 1) { inputText.textValue += keyLabel; } inputText.setText(inputText.textValue.length > 0 ? inputText.textValue : "_"); }; })(keyLabel, keyBtn); usernamePromptBox.addChild(keyBtn); // Key label var keyTxt = new Text2(keyLabel, { size: 48, fill: 0x222222, align: "center" }); keyTxt.anchor.set(0.5, 0.5); keyTxt.x = keyBtn.x; keyTxt.y = keyBtn.y; usernamePromptBox.addChild(keyTxt); keypadBtns.push(keyBtn); } // Input logic var inputActive = true; function finishInput() { if (inputText.textValue.length > 0) { username = inputText.textValue; if (usernamePromptBox.parent) usernamePromptBox.parent.removeChild(usernamePromptBox); // Store username in persistent storage for leaderboard storage.set("username", username); inputActive = false; // Remove keypad interactivity after done for (var i = 0; i < keypadBtns.length; i++) { keypadBtns[i].interactive = false; keypadBtns[i].down = null; } if (onDone) onDone(); } } // "Tamam" button interactivity btnBg.interactive = true; btnBg.down = function (x, y, obj) { if (!inputActive) return; finishInput(); }; btnTxt.interactive = true; btnTxt.down = function (x, y, obj) { if (!inputActive) return; finishInput(); }; // Remove all keyboard and prompt logic (mobile only, no keyboard or prompt) } // Helper to show leaderboard after game over function showLeaderboard() { loadLeaderboard(); // Add current score if not already in var score = LK.getScore(); if (username && score > 0) { leaderboard = leaderboard.concat([{ name: username, score: score }]); // Sort descending leaderboard.sort(function (a, b) { return b.score - a.score; }); // Keep top 10 leaderboard = leaderboard.slice(0, 10); saveLeaderboard(); } // Remove old leaderboard if any if (typeof leaderboardTxt !== "undefined" && leaderboardTxt.parent) { leaderboardTxt.parent.removeChild(leaderboardTxt); } // Build leaderboard text var text = "En Yüksek Skorlar\n"; for (var i = 0; i < leaderboard.length; i++) { var entry = leaderboard[i]; text += i + 1 + ". " + entry.name + " - " + entry.score + "\n"; } leaderboardTxt = new Text2(text, { size: 70, fill: 0xffffff, align: "center" }); leaderboardTxt.anchor.set(0.5, 0.5); leaderboardTxt.x = 2048 / 2; leaderboardTxt.y = 2732 / 2; game.addChild(leaderboardTxt); // Remove after 4 seconds LK.setTimeout(function () { if (leaderboardTxt.parent) leaderboardTxt.parent.removeChild(leaderboardTxt); }, 4000); } // --- Ava: End High Score Table & Username Prompt --- // Level config // Backgrounds: always black var levelCount = 100; var currentLevel = 1; var swatterInterval = 90; // ticks between swatters, stays constant var swatterSpeedBonus = 0; // stays constant // Score var scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Level text var levelTxt = new Text2('Seviye 1', { size: 70, fill: 0xFFFFFF }); levelTxt.anchor.set(0.5, 0); LK.gui.top.addChild(levelTxt); levelTxt.y = 120; // Background node var bgNode = LK.getAsset('bg_forest', { anchorX: 0, anchorY: 0, x: 0, y: 0 }); bgNode.tint = 0x000000; game.addChild(bgNode); // Yumurta var fly = null; // Will be created after username is entered // Swatters array var swatters = []; // For touch controls var isTouching = false; // --- Ava: Fly stays in air for 5 seconds, then falls if not touched --- // Instruction message before game starts var instructionTxt = new Text2("Yumurta ilk 5 saniye havada kalır\nOnu düşürmemek için mouse ile tıklayın", { size: 90, fill: 0xffffff, align: "center" }); instructionTxt.anchor.set(0.5, 0.5); instructionTxt.x = 2048 / 2; instructionTxt.y = 2732 / 2; instructionTxt.alpha = 1; // Block game logic until instruction is gone or username entered var gameBlocked = true; // Show username prompt first, then show instruction, then fade out instruction var storedUsername = storage.username; if (typeof storedUsername === "string" && storedUsername.length > 0) { username = storedUsername.substring(0, 16); // Username already set, skip prompt if (!fly) { fly = new Yumurta(); game.addChild(fly); fly.x = 400; fly.y = 2732 / 2; } if (!instructionTxt.parent) game.addChild(instructionTxt); instructionTxt.alpha = 1; instructionTxt.x = 2048 / 2; instructionTxt.y = 2732 / 2; LK.setTimeout(function () { tween(instructionTxt, { alpha: 0 }, { duration: 700, easing: tween.easeOut, onFinish: function onFinish() { if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt); gameBlocked = false; flyStartTime = Date.now(); // Start fly grace period after message } }); }, 2000); } else { showUsernamePrompt(function () { // After username entered, create and show the egg (fly) if (!fly) { fly = new Yumurta(); game.addChild(fly); fly.x = 400; fly.y = 2732 / 2; } // After username entered, show instruction if (!instructionTxt.parent) game.addChild(instructionTxt); instructionTxt.alpha = 1; instructionTxt.x = 2048 / 2; instructionTxt.y = 2732 / 2; LK.setTimeout(function () { tween(instructionTxt, { alpha: 0 }, { duration: 700, easing: tween.easeOut, onFinish: function onFinish() { if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt); gameBlocked = false; flyStartTime = Date.now(); // Start fly grace period after message } }); }, 2000); }); } var flyStartTime = Date.now(); var flyGracePeriod = 5000; // ms var flyActive = false; // becomes true after first touch or after grace period var flyFell = false; // if fly has fallen var swatterRows = 6; // number of swatter rows per spawn var swatterRowYs = []; for (var r = 0; r < swatterRows; r++) { // Evenly space rows, avoid top/bottom 100px var minY = 100 + 60; var maxY = 2732 - 100 - 60; var rowY = minY + r * ((maxY - minY) / (swatterRows - 1)); swatterRowYs.push(rowY); } // For level progression var nextLevelScore = 100; var levelScoreStep = 110; // %10 daha yavaş seviye atlama // Set background for level function setBackgroundForLevel(level) { // Always keep background black, do not change or add any colored backgrounds // Remove old background if any if (bgNode && bgNode.parent) { bgNode.parent.removeChild(bgNode); } // Create a black background node bgNode = LK.getAsset('bg_forest', { anchorX: 0, anchorY: 0, x: 0, y: 0 }); bgNode.tint = 0x000000; game.addChildAt(bgNode, 0); } // Level up function levelUp() { currentLevel++; if (currentLevel > levelCount) { LK.showYouWin(); return; } setBackgroundForLevel(currentLevel); levelTxt.setText('Seviye ' + currentLevel); // Difficulty stays constant except for speed scaling after level 10 swatterInterval = 90; // After level 10, increase swatterSpeedBonus by 1% every 10 levels if (currentLevel > 10) { var speedupSteps = Math.floor((currentLevel - 1) / 10); swatterSpeedBonus = 0 * 0.75 + speedupSteps * 0.01; } else { swatterSpeedBonus = 0 * 0.75; } nextLevelScore += levelScoreStep; // Flash background for level up LK.effects.flashScreen(0xffff00, 600); } // Touch/drag controls game.down = function (x, y, obj) { isTouching = true; if (!flyActive) { flyActive = true; } if (fly && typeof fly.flap === "function") { fly.flap(); } }; game.up = function (x, y, obj) { isTouching = false; }; game.move = function (x, y, obj) { // Optional: allow dragging fly up/down if (isTouching && fly) { fly.y = y; } }; // Main update loop game.update = function () { // --- Ava: Block all game logic until instruction message is gone --- if (gameBlocked) { return; } // --- Ava: Fly grace period and falling logic --- if (!flyActive && !flyFell) { // During grace period, keep fly in air if (Date.now() - flyStartTime < flyGracePeriod) { fly.vy = 0; // Keep fly at initial y fly.y = 2732 / 2; } else { // Grace period over, fly falls unless touched flyActive = true; isTouching = false; } } if (flyActive && !isTouching && !flyFell) { // If not touching after grace, let fly fall fly.update(); if (fly.y >= 2732 - fly.height / 2 - 1) { // Fly hit the ground flyFell = true; LK.effects.flashScreen(0x222222, 800); // Show game over popup (score will be shown by LK engine) // Oyun bittiğinde seviye ve skor gösterimi LK.showGameOver ile yapılır LK.showGameOver(); showLeaderboard(); return; } } else if (!flyActive) { // During grace, don't update physics } else if (isTouching && !flyFell) { fly.update(); } else if (!flyFell) { fly.update(); } // --- Ava: Swatters spawn in every row --- if (LK.ticks % swatterInterval === 0) { // --- Ava: Randomize swatter spawn order each wave --- // Create a shuffled copy of swatterRowYs var shuffledRows = []; for (var i = 0; i < swatterRowYs.length; i++) { shuffledRows[i] = swatterRowYs[i]; } // Fisher-Yates shuffle for (var i = shuffledRows.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = shuffledRows[i]; shuffledRows[i] = shuffledRows[j]; shuffledRows[j] = temp; } // --- Ava: For each row, spawn swatter with random delay and random length --- for (var r = 0; r < swatterRows; r++) { (function (rowIdx, rowY) { // Random delay for this row (0-40 ticks, up to ~0.66s) var delayTicks = Math.floor(Math.random() * 40); LK.setTimeout(function () { var swatter = new Swatter(); swatter.speed += swatterSpeedBonus * 0.75; swatter.y = rowY; // Randomize swatter length (scaleX 1.0 to 2.0) var scale = 1 + Math.random(); swatter.scaleX = scale; // Adjust anchor so left edge stays at same place if (swatter.children && swatter.children.length > 0) { // Set anchorX to 0.5 (center) for scaling, already set in Swatter class } swatters.push(swatter); game.addChild(swatter); }, delayTicks * 1000 / 60); // convert ticks to ms })(r, shuffledRows[r]); } } // Update swatters for (var i = swatters.length - 1; i >= 0; i--) { var sw = swatters[i]; sw.update(); // Collision if (fly.intersects(sw)) { LK.effects.flashScreen(0xff0000, 1000); // Show game over popup (score will be shown by LK engine) // Oyun bittiğinde seviye ve skor gösterimi LK.showGameOver ile yapılır LK.showGameOver(); showLeaderboard(); return; } // Off screen if (sw.x < -200) { // Award points for successful dodge LK.setScore(LK.getScore() + sw.points); scoreTxt.setText(LK.getScore()); // Level up if needed if (LK.getScore() >= nextLevelScore) { levelUp(); } sw.destroy(); swatters.splice(i, 1); } } }; // Reset game state on restart LK.on('gameStart', function () { // Reset variables currentLevel = 1; swatterInterval = 90; swatterSpeedBonus = 0 * 0.75; // Reset speed scaling on restart nextLevelScore = 100; levelScoreStep = 110; // %10 daha yavaş seviye atlama (reset) setBackgroundForLevel(currentLevel); levelTxt.setText('Seviye 1'); LK.setScore(0); scoreTxt.setText('0'); // Remove all swatters for (var i = 0; i < swatters.length; i++) { swatters[i].destroy(); } swatters = []; // Reset fly if (fly && fly.parent) { fly.parent.removeChild(fly); fly = null; } flyActive = false; flyFell = false; // Do not reset username, so user is not prompted again // username = ""; // Show instruction message again and block game gameBlocked = true; instructionTxt.setText("Yumurta ilk 5 saniye havada kalır\nOnu düşürmemek için mouse ile tıklayın"); instructionTxt.alpha = 1; instructionTxt.x = 2048 / 2; instructionTxt.y = 2732 / 2; // Show username prompt first, then show instruction, then fade out instruction var storedUsername = storage.username; if (typeof storedUsername === "string" && storedUsername.length > 0) { username = storedUsername.substring(0, 16); // Username already set, skip prompt if (!fly) { fly = new Yumurta(); game.addChild(fly); fly.x = 400; fly.y = 2732 / 2; } if (!instructionTxt.parent) game.addChild(instructionTxt); instructionTxt.alpha = 1; instructionTxt.x = 2048 / 2; instructionTxt.y = 2732 / 2; LK.setTimeout(function () { tween(instructionTxt, { alpha: 0 }, { duration: 700, easing: tween.easeOut, onFinish: function onFinish() { if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt); gameBlocked = false; flyStartTime = Date.now(); } }); }, 2000); } else { showUsernamePrompt(function () { // After username entered, create and show the egg (fly) if (!fly) { fly = new Yumurta(); game.addChild(fly); fly.x = 400; fly.y = 2732 / 2; } if (!instructionTxt.parent) game.addChild(instructionTxt); instructionTxt.alpha = 1; instructionTxt.x = 2048 / 2; instructionTxt.y = 2732 / 2; LK.setTimeout(function () { tween(instructionTxt, { alpha: 0 }, { duration: 700, easing: tween.easeOut, onFinish: function onFinish() { if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt); gameBlocked = false; flyStartTime = Date.now(); } }); }, 2000); }); } }); /* End of MVP */
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
// Swatter class
var Swatter = Container.expand(function () {
var self = Container.call(this);
// Swatter types and their point values
var swatterTypes = [{
id: 'swatter_red',
points: 50
}, {
id: 'swatter_yellow',
points: 35
}, {
id: 'swatter_green',
points: 20
}, {
id: 'swatter_blue',
points: 60
}];
// Randomly select a type
var typeIndex = Math.floor(Math.random() * swatterTypes.length);
self.type = swatterTypes[typeIndex];
self.points = self.type.points;
// Attach asset
var swatterAsset = self.attachAsset(self.type.id, {
anchorX: 0.5,
anchorY: 0.5
});
// Set initial position and speed
self.x = 2048 + 120; // Start just off the right edge
self.y = 200 + Math.floor(Math.random() * (2732 - 400));
self.speed = (12 + Math.random() * 6) * 0.75; // 25% slower
// Allow scaleX to be set after creation for random length
self.scaleX = 1;
// For collision detection
self.update = function () {
self.x -= self.speed;
};
return self;
});
// Yumurta class (formerly Fly)
var Yumurta = Container.expand(function () {
var self = Container.call(this);
var flyAsset = self.attachAsset('fly', {
anchorX: 0.5,
anchorY: 0.5
});
self.width = flyAsset.width;
self.height = flyAsset.height;
// Physics
self.vy = 0;
self.gravity = 1.2;
self.lift = -28;
// For touch controls
self.flap = function () {
self.vy = self.lift;
};
// Update position
self.update = function () {
self.vy += self.gravity;
self.y += self.vy;
// Clamp to screen
if (self.y < self.height / 2) {
self.y = self.height / 2;
self.vy = 0;
}
if (self.y > 2732 - self.height / 2) {
self.y = 2732 - self.height / 2;
self.vy = 0;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 // Initial background: black
});
/****
* Game Code
****/
// Use storage plugin for persistent data
// --- Ava: High Score Table & Username Prompt ---
// Username and leaderboard
var username = "";
var leaderboard = []; // [{name, score}]
// Helper to load leaderboard from storage
function loadLeaderboard() {
var data = storage.leaderboard;
if (data && Array.isArray(data)) {
leaderboard = data;
} else {
leaderboard = [];
}
}
// Helper to save leaderboard to storage
function saveLeaderboard() {
// Only store 1-level deep array of objects with literal values
var safeLeaderboard = [];
for (var i = 0; i < leaderboard.length; i++) {
var entry = leaderboard[i];
// Only keep name and score as literals
safeLeaderboard.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values
// Defensive: ensure only 1-level deep, no nested objects/arrays
var flatLeaderboard = [];
for (var i = 0; i < safeLeaderboard.length; i++) {
var entry = safeLeaderboard[i];
flatLeaderboard.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep, no nested objects/arrays
var leaderboardToStore = [];
for (var i = 0; i < flatLeaderboard.length; i++) {
var entry = flatLeaderboard[i];
leaderboardToStore.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: flatten leaderboardToStore to a 1-level deep array of objects with only string/number values
var leaderboardFlat = [];
for (var i = 0; i < leaderboardToStore.length; i++) {
var entry = leaderboardToStore[i];
leaderboardFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values
var leaderboardFinal = [];
for (var i = 0; i < leaderboardFlat.length; i++) {
var entry = leaderboardFlat[i];
leaderboardFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values
var leaderboardStore = [];
for (var i = 0; i < leaderboardFinal.length; i++) {
var entry = leaderboardFinal[i];
leaderboardStore.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values
var leaderboardToSave = [];
for (var i = 0; i < leaderboardStore.length; i++) {
var entry = leaderboardStore[i];
leaderboardToSave.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values
var leaderboardToSaveFlat = [];
for (var i = 0; i < leaderboardToSave.length; i++) {
var entry = leaderboardToSave[i];
leaderboardToSaveFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafe = [];
for (var i = 0; i < leaderboardToSaveFlat.length; i++) {
var entry = leaderboardToSaveFlat[i];
leaderboardToSaveFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafeFinal = [];
for (var i = 0; i < leaderboardToSaveFlatSafe.length; i++) {
var entry = leaderboardToSaveFlatSafe[i];
leaderboardToSaveFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafeFinalFlat = [];
for (var i = 0; i < leaderboardToSaveFlatSafeFinal.length; i++) {
var entry = leaderboardToSaveFlatSafeFinal[i];
leaderboardToSaveFlatSafeFinalFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafeFinalFlatSafe = [];
for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlat.length; i++) {
var entry = leaderboardToSaveFlatSafeFinalFlat[i];
leaderboardToSaveFlatSafeFinalFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafeFinalFlatSafeSafe = [];
for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafe.length; i++) {
var entry = leaderboardToSaveFlatSafeFinalFlatSafe[i];
leaderboardToSaveFlatSafeFinalFlatSafeSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal = [];
for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafe.length; i++) {
var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafe[i];
leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat = [];
for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal.length; i++) {
var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafeFinal[i];
leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe = [];
for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat.length; i++) {
var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlat[i];
leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinal = [];
for (var i = 0; i < leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe.length; i++) {
var entry = leaderboardToSaveFlatSafeFinalFlatSafeSafeFinalFlatSafe[i];
leaderboardToStoreFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFinal.length; i++) {
var entry = leaderboardToStoreFinal[i];
leaderboardToStoreFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlat = [];
for (var i = 0; i < leaderboardToStoreFinalSafe.length; i++) {
var entry = leaderboardToStoreFinalSafe[i];
leaderboardToStoreFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlat.length; i++) {
var entry = leaderboardToStoreFinalSafeFlat[i];
leaderboardToStoreFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafe.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafe[i];
leaderboardToStoreFinalSafeFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlat = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinal.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinal[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlat.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlat[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinal[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafe[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlat[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafe[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinal[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafe[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlat[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat.length; i++) {
var entry = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlat[i];
leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values
var leaderboardToSaveFinal = [];
var arr = leaderboardToStoreFinalSafeFlatSafeFinalFlatSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFlatSafe;
for (var i = 0; i < arr.length && i < 10; i++) {
var entry = arr[i];
leaderboardToSaveFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store only 1-level deep array of objects with literal values, max 10 entries
var safeLeaderboardToStore = [];
for (var i = 0; i < leaderboardToSaveFinal.length && i < 10; i++) {
var entry = leaderboardToSaveFinal[i];
safeLeaderboardToStore.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving
var leaderboardToStoreFlat = [];
for (var i = 0; i < safeLeaderboardToStore.length && i < 10; i++) {
var entry = safeLeaderboardToStore[i];
leaderboardToStoreFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values
var leaderboardToStoreFlatSafe = [];
for (var i = 0; i < leaderboardToStoreFlat.length && i < 10; i++) {
var entry = leaderboardToStoreFlat[i];
leaderboardToStoreFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFlatSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafe[i];
leaderboardToStoreFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinal.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinal[i];
leaderboardToStoreFlatSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinal.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinal[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinal[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinal[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlat[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinal[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlat[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinal[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafe[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinal[i];
leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafe = [];
for (var i = 0; i < leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatSafeFinalSafeFinalSafeFinalSafeFinalSafeFlatSafeFinalSafeFlatSafeFinalSafeFinalSafe[i];
leaderboardFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlat = [];
for (var i = 0; i < leaderboardFinalSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafe[i];
leaderboardFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlat.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlat[i];
leaderboardFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlat = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafe[i];
leaderboardFinalSafeFlatSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlat.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlat[i];
leaderboardFinalSafeFlatSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlat = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlat.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlat[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlat[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinal[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlat[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlat[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafe[i];
leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardSafeToStore = [];
for (var i = 0; i < leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe.length && i < 10; i++) {
var entry = leaderboardFinalSafeFlatSafeFlatSafeFlatSafeSafeFlatSafeSafeFinalSafeFlatSafeFlatSafeSafe[i];
leaderboardSafeToStore.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: ensure only 1-level deep array of objects with only string/number values before saving, max 10 entries
var leaderboardSafeToStoreFlat = [];
for (var i = 0; i < leaderboardSafeToStore.length && i < 10; i++) {
var entry = leaderboardSafeToStore[i];
leaderboardSafeToStoreFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
var leaderboardToStore = [];
for (var i = 0; i < leaderboardSafeToStoreFlat.length && i < 10; i++) {
var entry = leaderboardSafeToStoreFlat[i];
leaderboardToStore.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
var leaderboardToStoreFlatLiterals = [];
for (var i = 0; i < leaderboardToStore.length && i < 10; i++) {
var entry = leaderboardToStore[i];
leaderboardToStoreFlatLiterals.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
var leaderboardToStoreFlatLiteralsSafe = [];
for (var i = 0; i < leaderboardToStoreFlatLiterals.length && i < 10; i++) {
var entry = leaderboardToStoreFlatLiterals[i];
leaderboardToStoreFlatLiteralsSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
var leaderboardToPersist = [];
for (var i = 0; i < leaderboardToStoreFlatLiteralsSafe.length && i < 10; i++) {
var entry = leaderboardToStoreFlatLiteralsSafe[i];
leaderboardToPersist.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
var leaderboardFlatLiterals = [];
for (var i = 0; i < leaderboardToPersist.length && i < 10; i++) {
var entry = leaderboardToPersist[i];
leaderboardFlatLiterals.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
var leaderboardToStoreLiterals = [];
for (var i = 0; i < leaderboardFlatLiterals.length && i < 10; i++) {
var entry = leaderboardFlatLiterals[i];
leaderboardToStoreLiterals.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
var leaderboardToStoreLiteralsSafe = [];
for (var i = 0; i < leaderboardToStoreLiterals.length && i < 10; i++) {
var entry = leaderboardToStoreLiterals[i];
leaderboardToStoreLiteralsSafe.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Defensive: store leaderboard as a 1-level deep array of objects with only string/number values, max 10 entries
var leaderboardToStoreLiteralsSafeFlat = [];
for (var i = 0; i < leaderboardToStoreLiteralsSafe.length && i < 10; i++) {
var entry = leaderboardToStoreLiteralsSafe[i];
leaderboardToStoreLiteralsSafeFlat.push({
name: typeof entry.name === "string" ? entry.name : "",
score: typeof entry.score === "number" ? entry.score : 0
});
}
// Store leaderboard as a 1-level deep array of objects with only literal values, max 10 entries
storage.leaderboard = leaderboardToStoreLiteralsSafeFlat.length > 10 ? leaderboardToStoreLiteralsSafeFlat.slice(0, 10) : leaderboardToStoreLiteralsSafeFlat;
}
// Helper to show username prompt before game starts
function showUsernamePrompt(onDone) {
// Remove any old prompt
if (typeof usernamePromptBox !== "undefined" && usernamePromptBox.parent) {
usernamePromptBox.parent.removeChild(usernamePromptBox);
}
// Load username from storage if available, fallback to default
var storedUsername = storage.username;
if (typeof storedUsername === "string" && storedUsername.length > 0) {
username = storedUsername.substring(0, 16);
} else {
username = "";
}
// --- Ava: 5cm x 4cm box, white, rounded, centered ---
// iPad Pro 12" portrait: 2048x2732, 1cm ≈ 81.92px (2048/25)
var cmToPx = 2048 / 25.0;
var boxW = Math.round(5 * cmToPx); // 409px
var boxH = Math.round(4 * cmToPx); // 327px
// Main box container
usernamePromptBox = new Container();
// White rounded rectangle
var boxBg = LK.getAsset('bg_forest', {
width: boxW,
height: boxH,
color: 0xffffff,
shape: 'box',
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
});
boxBg.alpha = 1;
boxBg.radius = Math.min(boxH, boxW) / 3; // oval corners
usernamePromptBox.addChild(boxBg);
// Prompt text
var promptTxt = new Text2("Kullanıcı adını gir:", {
size: 70,
fill: 0x222222,
align: "center"
});
promptTxt.anchor.set(0.5, 0);
promptTxt.x = 0;
promptTxt.y = -boxH / 2 + 36;
usernamePromptBox.addChild(promptTxt);
// Input box (simulated as a white rounded rectangle with border)
var inputW = boxW - 80;
var inputH = 90;
var inputBg = LK.getAsset('bg_forest', {
width: inputW,
height: inputH,
color: 0xffffff,
shape: 'box',
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -30
});
inputBg.alpha = 1;
inputBg.radius = inputH / 2;
usernamePromptBox.addChild(inputBg);
// Input text
var initialUsernameText = username && username.length > 0 ? username : "_";
var inputText = new Text2(initialUsernameText, {
size: 70,
fill: 0x222222,
align: "center"
});
inputText.anchor.set(0.5, 0.5);
inputText.x = 0;
inputText.y = -30;
inputText.textValue = username && username.length > 0 ? username : "";
usernamePromptBox.addChild(inputText);
// --- Ava: On-screen keypad for username entry (mobile-friendly) ---
var btnW = 220,
btnH = 80;
// Place the "Tamam" button below the keypad
var btnBg = LK.getAsset('bg_forest', {
width: btnW,
height: btnH,
color: 0xffffff,
shape: 'box',
anchorX: 0.5,
anchorY: 0.5,
x: 0,
// y: below keypad, calculate based on keypad height
y: keyPadStartY + keyRows * keyH + btnH / 2 + 24
});
btnBg.alpha = 1;
btnBg.radius = btnH / 2;
usernamePromptBox.addChild(btnBg);
var btnTxt = new Text2("Tamam", {
size: 60,
fill: 0x222222,
align: "center"
});
btnTxt.anchor.set(0.5, 0.5);
btnTxt.x = 0;
btnTxt.y = keyPadStartY + keyRows * keyH + btnH / 2 + 24;
usernamePromptBox.addChild(btnTxt);
// Add to game
usernamePromptBox.x = 2048 / 2;
usernamePromptBox.y = 2732 / 2;
game.addChild(usernamePromptBox);
// Input logic
inputBg.interactive = false;
inputText.interactive = false;
// Keypad layout (4x7 grid: A-Z, Sil, Temizle, Boşluk)
var keypadKeys = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Sil", "Temizle"];
var keypadBtns = [];
var keyCols = 7;
var keyRows = 4;
var keyW = Math.floor((inputW - 20) / keyCols);
var keyH = 80;
var keyPadStartY = 60;
for (var i = 0; i < keyCols * keyRows; i++) {
var col = i % keyCols;
var row = Math.floor(i / keyCols);
var keyLabel = keypadKeys[i];
if (!keyLabel) continue;
var keyBtn = LK.getAsset('bg_forest', {
width: keyW - 10,
height: keyH - 10,
color: 0xf0f0f0,
shape: 'box',
anchorX: 0.5,
anchorY: 0.5,
x: -((keyCols - 1) * keyW) / 2 + col * keyW,
y: keyPadStartY + row * keyH
});
keyBtn.radius = 18;
keyBtn.interactive = true;
(function (keyLabel, keyBtn) {
keyBtn.down = function () {
if (!inputActive) return;
if (keyLabel === "Sil") {
inputText.textValue = inputText.textValue.slice(0, -1);
} else if (keyLabel === "Temizle") {
inputText.textValue = "";
} else if (inputText.textValue.length < 16 && keyLabel.length === 1) {
inputText.textValue += keyLabel;
}
inputText.setText(inputText.textValue.length > 0 ? inputText.textValue : "_");
};
})(keyLabel, keyBtn);
usernamePromptBox.addChild(keyBtn);
// Key label
var keyTxt = new Text2(keyLabel, {
size: 48,
fill: 0x222222,
align: "center"
});
keyTxt.anchor.set(0.5, 0.5);
keyTxt.x = keyBtn.x;
keyTxt.y = keyBtn.y;
usernamePromptBox.addChild(keyTxt);
keypadBtns.push(keyBtn);
}
// Input logic
var inputActive = true;
function finishInput() {
if (inputText.textValue.length > 0) {
username = inputText.textValue;
if (usernamePromptBox.parent) usernamePromptBox.parent.removeChild(usernamePromptBox);
// Store username in persistent storage for leaderboard
storage.set("username", username);
inputActive = false;
// Remove keypad interactivity after done
for (var i = 0; i < keypadBtns.length; i++) {
keypadBtns[i].interactive = false;
keypadBtns[i].down = null;
}
if (onDone) onDone();
}
}
// "Tamam" button interactivity
btnBg.interactive = true;
btnBg.down = function (x, y, obj) {
if (!inputActive) return;
finishInput();
};
btnTxt.interactive = true;
btnTxt.down = function (x, y, obj) {
if (!inputActive) return;
finishInput();
};
// Remove all keyboard and prompt logic (mobile only, no keyboard or prompt)
}
// Helper to show leaderboard after game over
function showLeaderboard() {
loadLeaderboard();
// Add current score if not already in
var score = LK.getScore();
if (username && score > 0) {
leaderboard = leaderboard.concat([{
name: username,
score: score
}]);
// Sort descending
leaderboard.sort(function (a, b) {
return b.score - a.score;
});
// Keep top 10
leaderboard = leaderboard.slice(0, 10);
saveLeaderboard();
}
// Remove old leaderboard if any
if (typeof leaderboardTxt !== "undefined" && leaderboardTxt.parent) {
leaderboardTxt.parent.removeChild(leaderboardTxt);
}
// Build leaderboard text
var text = "En Yüksek Skorlar\n";
for (var i = 0; i < leaderboard.length; i++) {
var entry = leaderboard[i];
text += i + 1 + ". " + entry.name + " - " + entry.score + "\n";
}
leaderboardTxt = new Text2(text, {
size: 70,
fill: 0xffffff,
align: "center"
});
leaderboardTxt.anchor.set(0.5, 0.5);
leaderboardTxt.x = 2048 / 2;
leaderboardTxt.y = 2732 / 2;
game.addChild(leaderboardTxt);
// Remove after 4 seconds
LK.setTimeout(function () {
if (leaderboardTxt.parent) leaderboardTxt.parent.removeChild(leaderboardTxt);
}, 4000);
}
// --- Ava: End High Score Table & Username Prompt ---
// Level config
// Backgrounds: always black
var levelCount = 100;
var currentLevel = 1;
var swatterInterval = 90; // ticks between swatters, stays constant
var swatterSpeedBonus = 0; // stays constant
// Score
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Level text
var levelTxt = new Text2('Seviye 1', {
size: 70,
fill: 0xFFFFFF
});
levelTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(levelTxt);
levelTxt.y = 120;
// Background node
var bgNode = LK.getAsset('bg_forest', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
bgNode.tint = 0x000000;
game.addChild(bgNode);
// Yumurta
var fly = null; // Will be created after username is entered
// Swatters array
var swatters = [];
// For touch controls
var isTouching = false;
// --- Ava: Fly stays in air for 5 seconds, then falls if not touched ---
// Instruction message before game starts
var instructionTxt = new Text2("Yumurta ilk 5 saniye havada kalır\nOnu düşürmemek için mouse ile tıklayın", {
size: 90,
fill: 0xffffff,
align: "center"
});
instructionTxt.anchor.set(0.5, 0.5);
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
instructionTxt.alpha = 1;
// Block game logic until instruction is gone or username entered
var gameBlocked = true;
// Show username prompt first, then show instruction, then fade out instruction
var storedUsername = storage.username;
if (typeof storedUsername === "string" && storedUsername.length > 0) {
username = storedUsername.substring(0, 16);
// Username already set, skip prompt
if (!fly) {
fly = new Yumurta();
game.addChild(fly);
fly.x = 400;
fly.y = 2732 / 2;
}
if (!instructionTxt.parent) game.addChild(instructionTxt);
instructionTxt.alpha = 1;
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
LK.setTimeout(function () {
tween(instructionTxt, {
alpha: 0
}, {
duration: 700,
easing: tween.easeOut,
onFinish: function onFinish() {
if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt);
gameBlocked = false;
flyStartTime = Date.now(); // Start fly grace period after message
}
});
}, 2000);
} else {
showUsernamePrompt(function () {
// After username entered, create and show the egg (fly)
if (!fly) {
fly = new Yumurta();
game.addChild(fly);
fly.x = 400;
fly.y = 2732 / 2;
}
// After username entered, show instruction
if (!instructionTxt.parent) game.addChild(instructionTxt);
instructionTxt.alpha = 1;
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
LK.setTimeout(function () {
tween(instructionTxt, {
alpha: 0
}, {
duration: 700,
easing: tween.easeOut,
onFinish: function onFinish() {
if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt);
gameBlocked = false;
flyStartTime = Date.now(); // Start fly grace period after message
}
});
}, 2000);
});
}
var flyStartTime = Date.now();
var flyGracePeriod = 5000; // ms
var flyActive = false; // becomes true after first touch or after grace period
var flyFell = false; // if fly has fallen
var swatterRows = 6; // number of swatter rows per spawn
var swatterRowYs = [];
for (var r = 0; r < swatterRows; r++) {
// Evenly space rows, avoid top/bottom 100px
var minY = 100 + 60;
var maxY = 2732 - 100 - 60;
var rowY = minY + r * ((maxY - minY) / (swatterRows - 1));
swatterRowYs.push(rowY);
}
// For level progression
var nextLevelScore = 100;
var levelScoreStep = 110; // %10 daha yavaş seviye atlama
// Set background for level
function setBackgroundForLevel(level) {
// Always keep background black, do not change or add any colored backgrounds
// Remove old background if any
if (bgNode && bgNode.parent) {
bgNode.parent.removeChild(bgNode);
}
// Create a black background node
bgNode = LK.getAsset('bg_forest', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0
});
bgNode.tint = 0x000000;
game.addChildAt(bgNode, 0);
}
// Level up
function levelUp() {
currentLevel++;
if (currentLevel > levelCount) {
LK.showYouWin();
return;
}
setBackgroundForLevel(currentLevel);
levelTxt.setText('Seviye ' + currentLevel);
// Difficulty stays constant except for speed scaling after level 10
swatterInterval = 90;
// After level 10, increase swatterSpeedBonus by 1% every 10 levels
if (currentLevel > 10) {
var speedupSteps = Math.floor((currentLevel - 1) / 10);
swatterSpeedBonus = 0 * 0.75 + speedupSteps * 0.01;
} else {
swatterSpeedBonus = 0 * 0.75;
}
nextLevelScore += levelScoreStep;
// Flash background for level up
LK.effects.flashScreen(0xffff00, 600);
}
// Touch/drag controls
game.down = function (x, y, obj) {
isTouching = true;
if (!flyActive) {
flyActive = true;
}
if (fly && typeof fly.flap === "function") {
fly.flap();
}
};
game.up = function (x, y, obj) {
isTouching = false;
};
game.move = function (x, y, obj) {
// Optional: allow dragging fly up/down
if (isTouching && fly) {
fly.y = y;
}
};
// Main update loop
game.update = function () {
// --- Ava: Block all game logic until instruction message is gone ---
if (gameBlocked) {
return;
}
// --- Ava: Fly grace period and falling logic ---
if (!flyActive && !flyFell) {
// During grace period, keep fly in air
if (Date.now() - flyStartTime < flyGracePeriod) {
fly.vy = 0;
// Keep fly at initial y
fly.y = 2732 / 2;
} else {
// Grace period over, fly falls unless touched
flyActive = true;
isTouching = false;
}
}
if (flyActive && !isTouching && !flyFell) {
// If not touching after grace, let fly fall
fly.update();
if (fly.y >= 2732 - fly.height / 2 - 1) {
// Fly hit the ground
flyFell = true;
LK.effects.flashScreen(0x222222, 800);
// Show game over popup (score will be shown by LK engine)
// Oyun bittiğinde seviye ve skor gösterimi LK.showGameOver ile yapılır
LK.showGameOver();
showLeaderboard();
return;
}
} else if (!flyActive) {
// During grace, don't update physics
} else if (isTouching && !flyFell) {
fly.update();
} else if (!flyFell) {
fly.update();
}
// --- Ava: Swatters spawn in every row ---
if (LK.ticks % swatterInterval === 0) {
// --- Ava: Randomize swatter spawn order each wave ---
// Create a shuffled copy of swatterRowYs
var shuffledRows = [];
for (var i = 0; i < swatterRowYs.length; i++) {
shuffledRows[i] = swatterRowYs[i];
}
// Fisher-Yates shuffle
for (var i = shuffledRows.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = shuffledRows[i];
shuffledRows[i] = shuffledRows[j];
shuffledRows[j] = temp;
}
// --- Ava: For each row, spawn swatter with random delay and random length ---
for (var r = 0; r < swatterRows; r++) {
(function (rowIdx, rowY) {
// Random delay for this row (0-40 ticks, up to ~0.66s)
var delayTicks = Math.floor(Math.random() * 40);
LK.setTimeout(function () {
var swatter = new Swatter();
swatter.speed += swatterSpeedBonus * 0.75;
swatter.y = rowY;
// Randomize swatter length (scaleX 1.0 to 2.0)
var scale = 1 + Math.random();
swatter.scaleX = scale;
// Adjust anchor so left edge stays at same place
if (swatter.children && swatter.children.length > 0) {
// Set anchorX to 0.5 (center) for scaling, already set in Swatter class
}
swatters.push(swatter);
game.addChild(swatter);
}, delayTicks * 1000 / 60); // convert ticks to ms
})(r, shuffledRows[r]);
}
}
// Update swatters
for (var i = swatters.length - 1; i >= 0; i--) {
var sw = swatters[i];
sw.update();
// Collision
if (fly.intersects(sw)) {
LK.effects.flashScreen(0xff0000, 1000);
// Show game over popup (score will be shown by LK engine)
// Oyun bittiğinde seviye ve skor gösterimi LK.showGameOver ile yapılır
LK.showGameOver();
showLeaderboard();
return;
}
// Off screen
if (sw.x < -200) {
// Award points for successful dodge
LK.setScore(LK.getScore() + sw.points);
scoreTxt.setText(LK.getScore());
// Level up if needed
if (LK.getScore() >= nextLevelScore) {
levelUp();
}
sw.destroy();
swatters.splice(i, 1);
}
}
};
// Reset game state on restart
LK.on('gameStart', function () {
// Reset variables
currentLevel = 1;
swatterInterval = 90;
swatterSpeedBonus = 0 * 0.75;
// Reset speed scaling on restart
nextLevelScore = 100;
levelScoreStep = 110; // %10 daha yavaş seviye atlama (reset)
setBackgroundForLevel(currentLevel);
levelTxt.setText('Seviye 1');
LK.setScore(0);
scoreTxt.setText('0');
// Remove all swatters
for (var i = 0; i < swatters.length; i++) {
swatters[i].destroy();
}
swatters = [];
// Reset fly
if (fly && fly.parent) {
fly.parent.removeChild(fly);
fly = null;
}
flyActive = false;
flyFell = false;
// Do not reset username, so user is not prompted again
// username = "";
// Show instruction message again and block game
gameBlocked = true;
instructionTxt.setText("Yumurta ilk 5 saniye havada kalır\nOnu düşürmemek için mouse ile tıklayın");
instructionTxt.alpha = 1;
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
// Show username prompt first, then show instruction, then fade out instruction
var storedUsername = storage.username;
if (typeof storedUsername === "string" && storedUsername.length > 0) {
username = storedUsername.substring(0, 16);
// Username already set, skip prompt
if (!fly) {
fly = new Yumurta();
game.addChild(fly);
fly.x = 400;
fly.y = 2732 / 2;
}
if (!instructionTxt.parent) game.addChild(instructionTxt);
instructionTxt.alpha = 1;
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
LK.setTimeout(function () {
tween(instructionTxt, {
alpha: 0
}, {
duration: 700,
easing: tween.easeOut,
onFinish: function onFinish() {
if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt);
gameBlocked = false;
flyStartTime = Date.now();
}
});
}, 2000);
} else {
showUsernamePrompt(function () {
// After username entered, create and show the egg (fly)
if (!fly) {
fly = new Yumurta();
game.addChild(fly);
fly.x = 400;
fly.y = 2732 / 2;
}
if (!instructionTxt.parent) game.addChild(instructionTxt);
instructionTxt.alpha = 1;
instructionTxt.x = 2048 / 2;
instructionTxt.y = 2732 / 2;
LK.setTimeout(function () {
tween(instructionTxt, {
alpha: 0
}, {
duration: 700,
easing: tween.easeOut,
onFinish: function onFinish() {
if (instructionTxt.parent) instructionTxt.parent.removeChild(instructionTxt);
gameBlocked = false;
flyStartTime = Date.now();
}
});
}, 2000);
});
}
});
/* End of MVP */