/**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var DropZone = Container.expand(function (index) {
	var self = Container.call(this);
	self.index = index;
	self.occupiedTile = null;
	self.background = self.attachAsset('dropZone', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add text display for showing placed letter
	self.placedLetterText = new Text2('', {
		size: 40,
		fill: 0x333333
	});
	self.placedLetterText.anchor.set(0.5, 0.5);
	self.placedLetterText.y = -80; // Position above the drop zone
	self.addChild(self.placedLetterText);
	self.isEmpty = function () {
		return self.occupiedTile === null;
	};
	self.placeTile = function (tile) {
		if (self.occupiedTile) {
			self.occupiedTile.isPlaced = false;
		}
		self.occupiedTile = tile;
		tile.isPlaced = true;
		tile.x = self.x;
		tile.y = self.y;
		// Update the text display to show the placed letter
		self.placedLetterText.setText(tile.letter);
	};
	self.removeTile = function () {
		if (self.occupiedTile) {
			self.occupiedTile.isPlaced = false;
			self.occupiedTile = null;
		}
		// Clear the text display when tile is removed
		self.placedLetterText.setText('');
	};
	return self;
});
var LetterTile = Container.expand(function (letter, isCorrect) {
	var self = Container.call(this);
	self.letter = letter;
	self.isCorrect = isCorrect || false;
	self.isPlaced = false;
	self.originalX = 0;
	self.originalY = 0;
	self.isDragging = false;
	self.background = self.attachAsset('letterTile', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.letterText = new Text2(letter, {
		size: 60,
		fill: 0x000000
	});
	self.letterText.anchor.set(0.5, 0.5);
	self.addChild(self.letterText);
	self.setCorrect = function () {
		self.removeChild(self.background);
		self.background = self.attachAsset('correctTile', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.addChildAt(self.background, 0);
		self.isCorrect = true;
	};
	self.setWrong = function () {
		self.removeChild(self.background);
		self.background = self.attachAsset('wrongTile', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.addChildAt(self.background, 0);
		tween(self.background, {
			tint: 0xffffff
		}, {
			duration: 1000
		});
	};
	self.resetTile = function () {
		self.removeChild(self.background);
		self.background = self.attachAsset('letterTile', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.addChildAt(self.background, 0);
		self.isCorrect = false;
		self.isPlaced = false;
	};
	self.down = function (x, y, obj) {
		if (!self.isCorrect) {
			self.isDragging = true;
			draggedTile = self;
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0xf5f5f5
});
/**** 
* Game Code
****/ 
var words = [{
	english: "CAT",
	hindi: "बिल्ली",
	letters: ["बि", "ल्ली"]
}, {
	english: "DOG",
	hindi: "कुत्ता",
	letters: ["कु", "त्ता"]
}, {
	english: "BOOK",
	hindi: "किताब",
	letters: ["कि", "ता", "ब"]
}, {
	english: "WATER",
	hindi: "पानी",
	letters: ["पा", "नी"]
}, {
	english: "HOUSE",
	hindi: "घर",
	letters: ["घ", "र"]
}, {
	english: "FLOWER",
	hindi: "फूल",
	letters: ["फू", "ल"]
}, {
	english: "TREE",
	hindi: "पेड़",
	letters: ["पे", "ड़"]
}, {
	english: "BIRD",
	hindi: "पक्षी",
	letters: ["प", "क्षी"]
}, {
	english: "FISH",
	hindi: "मछली",
	letters: ["म", "छ", "ली"]
}, {
	english: "STAR",
	hindi: "तारा",
	letters: ["ता", "रा"]
}];
// Shuffle all words at game start
words = shuffleArray(words);
var currentWordIndex = 0;
var currentWord = words[currentWordIndex];
var letterTiles = [];
var dropZones = [];
var draggedTile = null;
var gameCompleted = false;
var currentLevel = 1;
var wordsPerLevel = 3;
var totalLevels = Math.ceil(words.length / wordsPerLevel);
var wordsCompletedInLevel = 0;
var levelScore = 0;
var maxLives = 3;
var currentLives = maxLives;
var wrongAttempts = 0;
var maxWrongAttempts = 2; // Allow 2 wrong attempts per word before losing a life
// UI Elements
var englishWordText = new Text2('', {
	size: 80,
	fill: 0x333333
});
englishWordText.anchor.set(0.5, 0.5);
englishWordText.x = 1024;
englishWordText.y = 300;
game.addChild(englishWordText);
var hindiWordText = new Text2('', {
	size: 60,
	fill: 0x666666
});
hindiWordText.anchor.set(0.5, 0.5);
hindiWordText.x = 1024;
hindiWordText.y = 380;
game.addChild(hindiWordText);
var instructionText = new Text2('Drag the Hindi letters to form the word:', {
	size: 40,
	fill: 0x888888
});
instructionText.anchor.set(0.5, 0.5);
instructionText.x = 1024;
instructionText.y = 500;
game.addChild(instructionText);
// Score display
var scoreText = new Text2('Score: 0', {
	size: 50,
	fill: 0x333333
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Level display
var levelText = new Text2('Level: 1', {
	size: 50,
	fill: 0x333333
});
levelText.anchor.set(0.5, 0);
levelText.x = 300;
LK.gui.top.addChild(levelText);
// Lives display
var livesText = new Text2('Lives: ♥♥♥', {
	size: 50,
	fill: 0xff0000
});
livesText.anchor.set(0.5, 0);
livesText.x = -300;
LK.gui.top.addChild(livesText);
function updateLivesDisplay() {
	var heartsText = '';
	for (var i = 0; i < currentLives; i++) {
		heartsText += '♥';
	}
	for (var i = currentLives; i < maxLives; i++) {
		heartsText += '♡';
	}
	livesText.setText('Lives: ' + heartsText);
}
function shuffleArray(array) {
	var shuffled = array.slice();
	for (var i = shuffled.length - 1; i > 0; i--) {
		var j = Math.floor(Math.random() * (i + 1));
		var temp = shuffled[i];
		shuffled[i] = shuffled[j];
		shuffled[j] = temp;
	}
	return shuffled;
}
function createLetterTiles() {
	// Clear existing tiles
	for (var i = 0; i < letterTiles.length; i++) {
		letterTiles[i].destroy();
	}
	letterTiles = [];
	var shuffledLetters = shuffleArray(currentWord.letters);
	var startX = 1024 - (shuffledLetters.length - 1) * 140 / 2;
	for (var i = 0; i < shuffledLetters.length; i++) {
		var tile = new LetterTile(shuffledLetters[i]);
		tile.x = startX + i * 140;
		tile.y = 2000;
		tile.originalX = tile.x;
		tile.originalY = tile.y;
		letterTiles.push(tile);
		game.addChild(tile);
	}
}
function createDropZones() {
	// Clear existing zones
	for (var i = 0; i < dropZones.length; i++) {
		dropZones[i].destroy();
	}
	dropZones = [];
	var startX = 1024 - (currentWord.letters.length - 1) * 140 / 2;
	for (var i = 0; i < currentWord.letters.length; i++) {
		var zone = new DropZone(i);
		zone.x = startX + i * 140;
		zone.y = 1200;
		dropZones.push(zone);
		game.addChild(zone);
	}
}
function checkWord() {
	var formedWord = "";
	var allPlaced = true;
	for (var i = 0; i < dropZones.length; i++) {
		if (dropZones[i].occupiedTile) {
			formedWord += dropZones[i].occupiedTile.letter;
		} else {
			allPlaced = false;
			break;
		}
	}
	if (allPlaced) {
		if (formedWord === currentWord.hindi) {
			// Correct word
			LK.getSound('correct').play();
			var pointsAwarded = 10 * currentLevel; // More points for higher levels
			LK.setScore(LK.getScore() + pointsAwarded);
			scoreText.setText('Score: ' + LK.getScore());
			// Mark tiles as correct
			for (var i = 0; i < dropZones.length; i++) {
				if (dropZones[i].occupiedTile) {
					dropZones[i].occupiedTile.setCorrect();
				}
			}
			// Show correct Hindi word
			hindiWordText.setText('✓ ' + currentWord.hindi);
			hindiWordText.tint = 0x00aa00;
			// Move to next word after delay - less time for higher levels
			var delayTime = Math.max(1000, 2500 - currentLevel * 200);
			LK.setTimeout(function () {
				nextWord();
			}, delayTime);
		} else {
			// Wrong word
			LK.getSound('wrong').play();
			wrongAttempts++;
			// Reduce life immediately for wrong answer
			currentLives--;
			updateLivesDisplay();
			// Show wrong feedback
			for (var i = 0; i < dropZones.length; i++) {
				if (dropZones[i].occupiedTile) {
					dropZones[i].occupiedTile.setWrong();
				}
			}
			// Check for game over
			if (currentLives <= 0) {
				LK.setTimeout(function () {
					LK.showGameOver();
				}, 1500);
				return;
			}
			// Show life lost message
			var lifeLostText = new Text2('Life Lost!', {
				size: 60,
				fill: 0xff0000
			});
			lifeLostText.anchor.set(0.5, 0.5);
			lifeLostText.x = 1024;
			lifeLostText.y = 900;
			game.addChild(lifeLostText);
			LK.setTimeout(function () {
				lifeLostText.destroy();
			}, 1500);
			// Reset after delay
			LK.setTimeout(function () {
				resetCurrentWord();
			}, 1500);
		}
	}
}
function nextLevel() {
	currentLevel++;
	wordsCompletedInLevel = 0;
	levelScore = 0;
	// Update level display
	levelText.setText('Level: ' + currentLevel);
	// Show level complete message
	var levelCompleteText = new Text2('Level ' + (currentLevel - 1) + ' Complete!', {
		size: 60,
		fill: 0x00aa00
	});
	levelCompleteText.anchor.set(0.5, 0.5);
	levelCompleteText.x = 1024;
	levelCompleteText.y = 800;
	game.addChild(levelCompleteText);
	// Create options for player
	var winOptionText = new Text2('You Won This Level!', {
		size: 50,
		fill: 0x00aa00
	});
	winOptionText.anchor.set(0.5, 0.5);
	winOptionText.x = 1024;
	winOptionText.y = 900;
	game.addChild(winOptionText);
	var playNextButton = new Text2('Play Next', {
		size: 40,
		fill: 0x0066cc
	});
	playNextButton.anchor.set(0.5, 0.5);
	playNextButton.x = 1024;
	playNextButton.y = 1000;
	game.addChild(playNextButton);
	var playAgainButton = new Text2('Play Again', {
		size: 40,
		fill: 0xcc6600
	});
	playAgainButton.anchor.set(0.5, 0.5);
	playAgainButton.x = 1024;
	playAgainButton.y = 1100;
	game.addChild(playAgainButton);
	// Add button functionality
	playNextButton.down = function () {
		levelCompleteText.destroy();
		winOptionText.destroy();
		playNextButton.destroy();
		playAgainButton.destroy();
	};
	playAgainButton.down = function () {
		// Reset to current level beginning
		currentWordIndex = (currentLevel - 1) * wordsPerLevel;
		wordsCompletedInLevel = 0;
		currentWord = words[currentWordIndex];
		levelCompleteText.destroy();
		winOptionText.destroy();
		playNextButton.destroy();
		playAgainButton.destroy();
		setupWord();
	};
	// Flash effect for visual feedback
	LK.effects.flashObject(levelCompleteText, 0x00aa00, 2000);
}
function nextWord() {
	currentWordIndex++;
	wordsCompletedInLevel++;
	levelScore += 10;
	wrongAttempts = 0; // Reset wrong attempts for new word
	// Check if level is complete
	if (wordsCompletedInLevel >= wordsPerLevel) {
		// Level completed
		if (currentLevel >= totalLevels) {
			// Game completed - all levels finished
			gameCompleted = true;
			LK.getSound('complete').play();
			LK.showYouWin();
			return;
		} else {
			// Move to next level
			nextLevel();
		}
	}
	if (currentWordIndex >= words.length) {
		// All words completed
		gameCompleted = true;
		LK.getSound('complete').play();
		LK.showYouWin();
		return;
	}
	currentWord = words[currentWordIndex];
	setupWord();
}
function resetCurrentWord() {
	for (var i = 0; i < letterTiles.length; i++) {
		letterTiles[i].resetTile();
		letterTiles[i].x = letterTiles[i].originalX;
		letterTiles[i].y = letterTiles[i].originalY;
	}
	for (var i = 0; i < dropZones.length; i++) {
		dropZones[i].removeTile();
	}
	hindiWordText.setText('');
	hindiWordText.tint = 0x666666;
}
function setupWord() {
	englishWordText.setText(currentWord.english);
	hindiWordText.setText('');
	hindiWordText.tint = 0x666666;
	createLetterTiles();
	createDropZones();
}
function findNearestDropZone(x, y) {
	var nearest = null;
	var minDistance = Infinity;
	for (var i = 0; i < dropZones.length; i++) {
		var dx = x - dropZones[i].x;
		var dy = y - dropZones[i].y;
		var distance = Math.sqrt(dx * dx + dy * dy);
		if (distance < minDistance && distance < 100) {
			minDistance = distance;
			nearest = dropZones[i];
		}
	}
	return nearest;
}
// Initialize lives display
updateLivesDisplay();
// Initialize first word
setupWord();
// Game controls
game.move = function (x, y, obj) {
	if (draggedTile && draggedTile.isDragging) {
		draggedTile.x = x;
		draggedTile.y = y;
	}
};
game.up = function (x, y, obj) {
	if (draggedTile && draggedTile.isDragging) {
		draggedTile.isDragging = false;
		var nearestZone = findNearestDropZone(x, y);
		if (nearestZone) {
			// Remove tile from previous zone if it was placed
			for (var i = 0; i < dropZones.length; i++) {
				if (dropZones[i].occupiedTile === draggedTile) {
					dropZones[i].removeTile();
					break;
				}
			}
			// Place tile in new zone
			nearestZone.placeTile(draggedTile);
			// Check if word is complete
			LK.setTimeout(function () {
				checkWord();
			}, 100);
		} else {
			// Return to original position
			if (draggedTile.isPlaced) {
				// Find and remove from current zone
				for (var i = 0; i < dropZones.length; i++) {
					if (dropZones[i].occupiedTile === draggedTile) {
						dropZones[i].removeTile();
						break;
					}
				}
			}
			tween(draggedTile, {
				x: draggedTile.originalX,
				y: draggedTile.originalY
			}, {
				duration: 300,
				easing: tween.easeOut
			});
		}
		draggedTile = null;
	}
};
game.update = function () {
	// Update score display
	scoreText.setText('Score: ' + LK.getScore());
	// Update level display
	levelText.setText('Level: ' + currentLevel + ' (' + wordsCompletedInLevel + '/' + wordsPerLevel + ')');
	// Update lives display
	updateLivesDisplay();
}; /**** 
* Plugins
****/ 
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/**** 
* Classes
****/ 
var DropZone = Container.expand(function (index) {
	var self = Container.call(this);
	self.index = index;
	self.occupiedTile = null;
	self.background = self.attachAsset('dropZone', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	// Add text display for showing placed letter
	self.placedLetterText = new Text2('', {
		size: 40,
		fill: 0x333333
	});
	self.placedLetterText.anchor.set(0.5, 0.5);
	self.placedLetterText.y = -80; // Position above the drop zone
	self.addChild(self.placedLetterText);
	self.isEmpty = function () {
		return self.occupiedTile === null;
	};
	self.placeTile = function (tile) {
		if (self.occupiedTile) {
			self.occupiedTile.isPlaced = false;
		}
		self.occupiedTile = tile;
		tile.isPlaced = true;
		tile.x = self.x;
		tile.y = self.y;
		// Update the text display to show the placed letter
		self.placedLetterText.setText(tile.letter);
	};
	self.removeTile = function () {
		if (self.occupiedTile) {
			self.occupiedTile.isPlaced = false;
			self.occupiedTile = null;
		}
		// Clear the text display when tile is removed
		self.placedLetterText.setText('');
	};
	return self;
});
var LetterTile = Container.expand(function (letter, isCorrect) {
	var self = Container.call(this);
	self.letter = letter;
	self.isCorrect = isCorrect || false;
	self.isPlaced = false;
	self.originalX = 0;
	self.originalY = 0;
	self.isDragging = false;
	self.background = self.attachAsset('letterTile', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.letterText = new Text2(letter, {
		size: 60,
		fill: 0x000000
	});
	self.letterText.anchor.set(0.5, 0.5);
	self.addChild(self.letterText);
	self.setCorrect = function () {
		self.removeChild(self.background);
		self.background = self.attachAsset('correctTile', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.addChildAt(self.background, 0);
		self.isCorrect = true;
	};
	self.setWrong = function () {
		self.removeChild(self.background);
		self.background = self.attachAsset('wrongTile', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.addChildAt(self.background, 0);
		tween(self.background, {
			tint: 0xffffff
		}, {
			duration: 1000
		});
	};
	self.resetTile = function () {
		self.removeChild(self.background);
		self.background = self.attachAsset('letterTile', {
			anchorX: 0.5,
			anchorY: 0.5
		});
		self.addChildAt(self.background, 0);
		self.isCorrect = false;
		self.isPlaced = false;
	};
	self.down = function (x, y, obj) {
		if (!self.isCorrect) {
			self.isDragging = true;
			draggedTile = self;
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0xf5f5f5
});
/**** 
* Game Code
****/ 
var words = [{
	english: "CAT",
	hindi: "बिल्ली",
	letters: ["बि", "ल्ली"]
}, {
	english: "DOG",
	hindi: "कुत्ता",
	letters: ["कु", "त्ता"]
}, {
	english: "BOOK",
	hindi: "किताब",
	letters: ["कि", "ता", "ब"]
}, {
	english: "WATER",
	hindi: "पानी",
	letters: ["पा", "नी"]
}, {
	english: "HOUSE",
	hindi: "घर",
	letters: ["घ", "र"]
}, {
	english: "FLOWER",
	hindi: "फूल",
	letters: ["फू", "ल"]
}, {
	english: "TREE",
	hindi: "पेड़",
	letters: ["पे", "ड़"]
}, {
	english: "BIRD",
	hindi: "पक्षी",
	letters: ["प", "क्षी"]
}, {
	english: "FISH",
	hindi: "मछली",
	letters: ["म", "छ", "ली"]
}, {
	english: "STAR",
	hindi: "तारा",
	letters: ["ता", "रा"]
}];
// Shuffle all words at game start
words = shuffleArray(words);
var currentWordIndex = 0;
var currentWord = words[currentWordIndex];
var letterTiles = [];
var dropZones = [];
var draggedTile = null;
var gameCompleted = false;
var currentLevel = 1;
var wordsPerLevel = 3;
var totalLevels = Math.ceil(words.length / wordsPerLevel);
var wordsCompletedInLevel = 0;
var levelScore = 0;
var maxLives = 3;
var currentLives = maxLives;
var wrongAttempts = 0;
var maxWrongAttempts = 2; // Allow 2 wrong attempts per word before losing a life
// UI Elements
var englishWordText = new Text2('', {
	size: 80,
	fill: 0x333333
});
englishWordText.anchor.set(0.5, 0.5);
englishWordText.x = 1024;
englishWordText.y = 300;
game.addChild(englishWordText);
var hindiWordText = new Text2('', {
	size: 60,
	fill: 0x666666
});
hindiWordText.anchor.set(0.5, 0.5);
hindiWordText.x = 1024;
hindiWordText.y = 380;
game.addChild(hindiWordText);
var instructionText = new Text2('Drag the Hindi letters to form the word:', {
	size: 40,
	fill: 0x888888
});
instructionText.anchor.set(0.5, 0.5);
instructionText.x = 1024;
instructionText.y = 500;
game.addChild(instructionText);
// Score display
var scoreText = new Text2('Score: 0', {
	size: 50,
	fill: 0x333333
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Level display
var levelText = new Text2('Level: 1', {
	size: 50,
	fill: 0x333333
});
levelText.anchor.set(0.5, 0);
levelText.x = 300;
LK.gui.top.addChild(levelText);
// Lives display
var livesText = new Text2('Lives: ♥♥♥', {
	size: 50,
	fill: 0xff0000
});
livesText.anchor.set(0.5, 0);
livesText.x = -300;
LK.gui.top.addChild(livesText);
function updateLivesDisplay() {
	var heartsText = '';
	for (var i = 0; i < currentLives; i++) {
		heartsText += '♥';
	}
	for (var i = currentLives; i < maxLives; i++) {
		heartsText += '♡';
	}
	livesText.setText('Lives: ' + heartsText);
}
function shuffleArray(array) {
	var shuffled = array.slice();
	for (var i = shuffled.length - 1; i > 0; i--) {
		var j = Math.floor(Math.random() * (i + 1));
		var temp = shuffled[i];
		shuffled[i] = shuffled[j];
		shuffled[j] = temp;
	}
	return shuffled;
}
function createLetterTiles() {
	// Clear existing tiles
	for (var i = 0; i < letterTiles.length; i++) {
		letterTiles[i].destroy();
	}
	letterTiles = [];
	var shuffledLetters = shuffleArray(currentWord.letters);
	var startX = 1024 - (shuffledLetters.length - 1) * 140 / 2;
	for (var i = 0; i < shuffledLetters.length; i++) {
		var tile = new LetterTile(shuffledLetters[i]);
		tile.x = startX + i * 140;
		tile.y = 2000;
		tile.originalX = tile.x;
		tile.originalY = tile.y;
		letterTiles.push(tile);
		game.addChild(tile);
	}
}
function createDropZones() {
	// Clear existing zones
	for (var i = 0; i < dropZones.length; i++) {
		dropZones[i].destroy();
	}
	dropZones = [];
	var startX = 1024 - (currentWord.letters.length - 1) * 140 / 2;
	for (var i = 0; i < currentWord.letters.length; i++) {
		var zone = new DropZone(i);
		zone.x = startX + i * 140;
		zone.y = 1200;
		dropZones.push(zone);
		game.addChild(zone);
	}
}
function checkWord() {
	var formedWord = "";
	var allPlaced = true;
	for (var i = 0; i < dropZones.length; i++) {
		if (dropZones[i].occupiedTile) {
			formedWord += dropZones[i].occupiedTile.letter;
		} else {
			allPlaced = false;
			break;
		}
	}
	if (allPlaced) {
		if (formedWord === currentWord.hindi) {
			// Correct word
			LK.getSound('correct').play();
			var pointsAwarded = 10 * currentLevel; // More points for higher levels
			LK.setScore(LK.getScore() + pointsAwarded);
			scoreText.setText('Score: ' + LK.getScore());
			// Mark tiles as correct
			for (var i = 0; i < dropZones.length; i++) {
				if (dropZones[i].occupiedTile) {
					dropZones[i].occupiedTile.setCorrect();
				}
			}
			// Show correct Hindi word
			hindiWordText.setText('✓ ' + currentWord.hindi);
			hindiWordText.tint = 0x00aa00;
			// Move to next word after delay - less time for higher levels
			var delayTime = Math.max(1000, 2500 - currentLevel * 200);
			LK.setTimeout(function () {
				nextWord();
			}, delayTime);
		} else {
			// Wrong word
			LK.getSound('wrong').play();
			wrongAttempts++;
			// Reduce life immediately for wrong answer
			currentLives--;
			updateLivesDisplay();
			// Show wrong feedback
			for (var i = 0; i < dropZones.length; i++) {
				if (dropZones[i].occupiedTile) {
					dropZones[i].occupiedTile.setWrong();
				}
			}
			// Check for game over
			if (currentLives <= 0) {
				LK.setTimeout(function () {
					LK.showGameOver();
				}, 1500);
				return;
			}
			// Show life lost message
			var lifeLostText = new Text2('Life Lost!', {
				size: 60,
				fill: 0xff0000
			});
			lifeLostText.anchor.set(0.5, 0.5);
			lifeLostText.x = 1024;
			lifeLostText.y = 900;
			game.addChild(lifeLostText);
			LK.setTimeout(function () {
				lifeLostText.destroy();
			}, 1500);
			// Reset after delay
			LK.setTimeout(function () {
				resetCurrentWord();
			}, 1500);
		}
	}
}
function nextLevel() {
	currentLevel++;
	wordsCompletedInLevel = 0;
	levelScore = 0;
	// Update level display
	levelText.setText('Level: ' + currentLevel);
	// Show level complete message
	var levelCompleteText = new Text2('Level ' + (currentLevel - 1) + ' Complete!', {
		size: 60,
		fill: 0x00aa00
	});
	levelCompleteText.anchor.set(0.5, 0.5);
	levelCompleteText.x = 1024;
	levelCompleteText.y = 800;
	game.addChild(levelCompleteText);
	// Create options for player
	var winOptionText = new Text2('You Won This Level!', {
		size: 50,
		fill: 0x00aa00
	});
	winOptionText.anchor.set(0.5, 0.5);
	winOptionText.x = 1024;
	winOptionText.y = 900;
	game.addChild(winOptionText);
	var playNextButton = new Text2('Play Next', {
		size: 40,
		fill: 0x0066cc
	});
	playNextButton.anchor.set(0.5, 0.5);
	playNextButton.x = 1024;
	playNextButton.y = 1000;
	game.addChild(playNextButton);
	var playAgainButton = new Text2('Play Again', {
		size: 40,
		fill: 0xcc6600
	});
	playAgainButton.anchor.set(0.5, 0.5);
	playAgainButton.x = 1024;
	playAgainButton.y = 1100;
	game.addChild(playAgainButton);
	// Add button functionality
	playNextButton.down = function () {
		levelCompleteText.destroy();
		winOptionText.destroy();
		playNextButton.destroy();
		playAgainButton.destroy();
	};
	playAgainButton.down = function () {
		// Reset to current level beginning
		currentWordIndex = (currentLevel - 1) * wordsPerLevel;
		wordsCompletedInLevel = 0;
		currentWord = words[currentWordIndex];
		levelCompleteText.destroy();
		winOptionText.destroy();
		playNextButton.destroy();
		playAgainButton.destroy();
		setupWord();
	};
	// Flash effect for visual feedback
	LK.effects.flashObject(levelCompleteText, 0x00aa00, 2000);
}
function nextWord() {
	currentWordIndex++;
	wordsCompletedInLevel++;
	levelScore += 10;
	wrongAttempts = 0; // Reset wrong attempts for new word
	// Check if level is complete
	if (wordsCompletedInLevel >= wordsPerLevel) {
		// Level completed
		if (currentLevel >= totalLevels) {
			// Game completed - all levels finished
			gameCompleted = true;
			LK.getSound('complete').play();
			LK.showYouWin();
			return;
		} else {
			// Move to next level
			nextLevel();
		}
	}
	if (currentWordIndex >= words.length) {
		// All words completed
		gameCompleted = true;
		LK.getSound('complete').play();
		LK.showYouWin();
		return;
	}
	currentWord = words[currentWordIndex];
	setupWord();
}
function resetCurrentWord() {
	for (var i = 0; i < letterTiles.length; i++) {
		letterTiles[i].resetTile();
		letterTiles[i].x = letterTiles[i].originalX;
		letterTiles[i].y = letterTiles[i].originalY;
	}
	for (var i = 0; i < dropZones.length; i++) {
		dropZones[i].removeTile();
	}
	hindiWordText.setText('');
	hindiWordText.tint = 0x666666;
}
function setupWord() {
	englishWordText.setText(currentWord.english);
	hindiWordText.setText('');
	hindiWordText.tint = 0x666666;
	createLetterTiles();
	createDropZones();
}
function findNearestDropZone(x, y) {
	var nearest = null;
	var minDistance = Infinity;
	for (var i = 0; i < dropZones.length; i++) {
		var dx = x - dropZones[i].x;
		var dy = y - dropZones[i].y;
		var distance = Math.sqrt(dx * dx + dy * dy);
		if (distance < minDistance && distance < 100) {
			minDistance = distance;
			nearest = dropZones[i];
		}
	}
	return nearest;
}
// Initialize lives display
updateLivesDisplay();
// Initialize first word
setupWord();
// Game controls
game.move = function (x, y, obj) {
	if (draggedTile && draggedTile.isDragging) {
		draggedTile.x = x;
		draggedTile.y = y;
	}
};
game.up = function (x, y, obj) {
	if (draggedTile && draggedTile.isDragging) {
		draggedTile.isDragging = false;
		var nearestZone = findNearestDropZone(x, y);
		if (nearestZone) {
			// Remove tile from previous zone if it was placed
			for (var i = 0; i < dropZones.length; i++) {
				if (dropZones[i].occupiedTile === draggedTile) {
					dropZones[i].removeTile();
					break;
				}
			}
			// Place tile in new zone
			nearestZone.placeTile(draggedTile);
			// Check if word is complete
			LK.setTimeout(function () {
				checkWord();
			}, 100);
		} else {
			// Return to original position
			if (draggedTile.isPlaced) {
				// Find and remove from current zone
				for (var i = 0; i < dropZones.length; i++) {
					if (dropZones[i].occupiedTile === draggedTile) {
						dropZones[i].removeTile();
						break;
					}
				}
			}
			tween(draggedTile, {
				x: draggedTile.originalX,
				y: draggedTile.originalY
			}, {
				duration: 300,
				easing: tween.easeOut
			});
		}
		draggedTile = null;
	}
};
game.update = function () {
	// Update score display
	scoreText.setText('Score: ' + LK.getScore());
	// Update level display
	levelText.setText('Level: ' + currentLevel + ' (' + wordsCompletedInLevel + '/' + wordsPerLevel + ')');
	// Update lives display
	updateLivesDisplay();
};