/**** 
* Plugins
****/ 
var storage = LK.import("@upit/storage.v1", {
	level: 0,
	unlockedCharacters: ["milly"]
});
/**** 
* Classes
****/ 
var Building = Container.expand(function (buildingType, isAvailable) {
	var self = Container.call(this);
	var buildingGraphic = self.attachAsset(buildingType, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.buildingType = buildingType;
	self.isAvailable = isAvailable;
	if (!self.isAvailable) {
		buildingGraphic.alpha = 0.5;
	}
	// Add building label
	var labelText = buildingType === 'foodShop' ? 'Food Shop' : buildingType === 'clothesShop' ? 'Clothes Shop' : buildingType === 'hospital' ? 'Hospital' : 'Gardens';
	self.label = new Text2(labelText, {
		size: 35,
		fill: 0xFFFFFF
	});
	self.label.anchor.set(0.5, 0.5);
	self.label.y = 20;
	self.addChild(self.label);
	if (!self.isAvailable) {
		self.comingSoonText = new Text2('Coming Soon', {
			size: 25,
			fill: 0xFFFF00
		});
		self.comingSoonText.anchor.set(0.5, 0.5);
		self.comingSoonText.y = 50;
		self.addChild(self.comingSoonText);
	}
	self.down = function (x, y, obj) {
		if (self.isAvailable) {
			LK.getSound('click').play();
			showBuildingContent(self.buildingType);
		}
	};
	return self;
});
var Character = Container.expand(function (characterType) {
	var self = Container.call(this);
	var characterGraphic = self.attachAsset(characterType + 'Character', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.characterType = characterType;
	self.isUnlocked = storage.unlockedCharacters.indexOf(characterType) !== -1;
	if (!self.isUnlocked) {
		characterGraphic.alpha = 0.3;
	}
	self.down = function (x, y, obj) {
		if (self.isUnlocked) {
			LK.getSound('click').play();
			showCharacterDetail(self.characterType);
		}
	};
	return self;
});
var House = Container.expand(function (houseType, isAvailable) {
	var self = Container.call(this);
	var houseGraphic = self.attachAsset(houseType + 'House', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.houseType = houseType;
	self.isAvailable = isAvailable;
	if (!self.isAvailable) {
		houseGraphic.alpha = 0.5;
	}
	// Add house label
	self.label = new Text2(houseType.charAt(0).toUpperCase() + houseType.slice(1), {
		size: 40,
		fill: 0xFFFFFF
	});
	self.label.anchor.set(0.5, 0.5);
	self.label.y = 20;
	self.addChild(self.label);
	if (!self.isAvailable) {
		self.comingSoonText = new Text2('Coming Soon', {
			size: 30,
			fill: 0xFFFF00
		});
		self.comingSoonText.anchor.set(0.5, 0.5);
		self.comingSoonText.y = 60;
		self.addChild(self.comingSoonText);
	}
	self.down = function (x, y, obj) {
		if (self.isAvailable) {
			LK.getSound('click').play();
			showHouseRooms(self.houseType);
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87ceeb
});
/**** 
* Game Code
****/ 
// UI elements
// Room asset
// Building assets
// House assets
// Character assets
// Game state variables
var currentScreen = 'main';
var characters = [];
var houses = [];
var buildings = [];
// UI elements
var levelText;
var backButton;
// Initialize level and character unlocking
function checkUnlocks() {
	var currentLevel = storage.level;
	var unlockedChars = storage.unlockedCharacters.slice();
	if (currentLevel >= 1 && unlockedChars.indexOf('joy') === -1) {
		unlockedChars.push('joy');
		LK.getSound('unlock').play();
	}
	if (currentLevel >= 2 && unlockedChars.indexOf('simone') === -1) {
		unlockedChars.push('simone');
		LK.getSound('unlock').play();
	}
	storage.unlockedCharacters = unlockedChars;
}
// Create main menu screen
function createMainScreen() {
	clearScreen();
	currentScreen = 'main';
	// Level display
	levelText = new Text2('Level ' + storage.level, {
		size: 60,
		fill: 0xFFFFFF
	});
	levelText.anchor.set(0.5, 0);
	LK.gui.top.addChild(levelText);
	levelText.y = 150;
	// Title
	var titleText = new Text2('Fruitsies TV Show', {
		size: 80,
		fill: 0xFF1493
	});
	titleText.anchor.set(0.5, 0.5);
	titleText.x = 1024;
	titleText.y = 300;
	game.addChild(titleText);
	// Create characters section
	var charSectionTitle = new Text2('Characters', {
		size: 50,
		fill: 0xFFFFFF
	});
	charSectionTitle.anchor.set(0.5, 0.5);
	charSectionTitle.x = 1024;
	charSectionTitle.y = 450;
	game.addChild(charSectionTitle);
	// Add characters
	var milly = new Character('milly');
	milly.x = 700;
	milly.y = 550;
	game.addChild(milly);
	characters.push(milly);
	var joy = new Character('joy');
	joy.x = 1024;
	joy.y = 550;
	game.addChild(joy);
	characters.push(joy);
	var simone = new Character('simone');
	simone.x = 1348;
	simone.y = 550;
	game.addChild(simone);
	characters.push(simone);
	// Create houses section
	var houseSectionTitle = new Text2('Houses', {
		size: 50,
		fill: 0xFFFFFF
	});
	houseSectionTitle.anchor.set(0.5, 0.5);
	houseSectionTitle.x = 1024;
	houseSectionTitle.y = 750;
	game.addChild(houseSectionTitle);
	// Add houses
	var strawberryHouse = new House('strawberry', true);
	strawberryHouse.x = 400;
	strawberryHouse.y = 950;
	game.addChild(strawberryHouse);
	houses.push(strawberryHouse);
	var greenAppleHouse = new House('greenApple', true);
	greenAppleHouse.x = 750;
	greenAppleHouse.y = 950;
	game.addChild(greenAppleHouse);
	houses.push(greenAppleHouse);
	var grapeHouse = new House('grape', true);
	grapeHouse.x = 1100;
	grapeHouse.y = 950;
	game.addChild(grapeHouse);
	houses.push(grapeHouse);
	var bananaHouse = new House('banana', false);
	bananaHouse.x = 1450;
	bananaHouse.y = 950;
	game.addChild(bananaHouse);
	houses.push(bananaHouse);
	var passionFruitHouse = new House('passionFruit', false);
	passionFruitHouse.x = 1024;
	passionFruitHouse.y = 1200;
	game.addChild(passionFruitHouse);
	houses.push(passionFruitHouse);
	// Create buildings section
	var buildingSectionTitle = new Text2('Buildings', {
		size: 50,
		fill: 0xFFFFFF
	});
	buildingSectionTitle.anchor.set(0.5, 0.5);
	buildingSectionTitle.x = 1024;
	buildingSectionTitle.y = 1450;
	game.addChild(buildingSectionTitle);
	// Add buildings
	var foodShop = new Building('foodShop', true);
	foodShop.x = 500;
	foodShop.y = 1600;
	game.addChild(foodShop);
	buildings.push(foodShop);
	var clothesShop = new Building('clothesShop', true);
	clothesShop.x = 900;
	clothesShop.y = 1600;
	game.addChild(clothesShop);
	buildings.push(clothesShop);
	var hospital = new Building('hospital', false);
	hospital.x = 1300;
	hospital.y = 1600;
	game.addChild(hospital);
	buildings.push(hospital);
	var gardens = new Building('gardens', false);
	gardens.x = 1024;
	gardens.y = 1800;
	game.addChild(gardens);
	buildings.push(gardens);
	// Level up button (for testing)
	var levelUpButton = new Text2('Level Up!', {
		size: 40,
		fill: 0x00FF00
	});
	levelUpButton.anchor.set(0.5, 0.5);
	levelUpButton.x = 1024;
	levelUpButton.y = 2000;
	game.addChild(levelUpButton);
	levelUpButton.down = function (x, y, obj) {
		storage.level++;
		checkUnlocks();
		createMainScreen();
	};
}
// Show character detail screen
function showCharacterDetail(characterType) {
	clearScreen();
	currentScreen = 'character';
	var characterNames = {
		'milly': 'Milly The Strawberry Monkey',
		'joy': 'Joy The Green Apple Dog',
		'simone': 'Simone The Grape Frog'
	};
	var characterName = new Text2(characterNames[characterType], {
		size: 60,
		fill: 0xFFFFFF
	});
	characterName.anchor.set(0.5, 0.5);
	characterName.x = 1024;
	characterName.y = 400;
	game.addChild(characterName);
	var character = new Character(characterType);
	character.x = 1024;
	character.y = 600;
	game.addChild(character);
	createBackButton();
}
// Show house rooms
function showHouseRooms(houseType) {
	clearScreen();
	currentScreen = 'house';
	var houseTitle = new Text2(houseType.charAt(0).toUpperCase() + houseType.slice(1) + ' House', {
		size: 60,
		fill: 0xFFFFFF
	});
	houseTitle.anchor.set(0.5, 0.5);
	houseTitle.x = 1024;
	houseTitle.y = 300;
	game.addChild(houseTitle);
	// Character room
	var characterRoom = LK.getAsset('characterRoom', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	characterRoom.x = 1024;
	characterRoom.y = 800;
	game.addChild(characterRoom);
	var roomText = new Text2('Character Room', {
		size: 40,
		fill: 0x000000
	});
	roomText.anchor.set(0.5, 0.5);
	roomText.x = 1024;
	roomText.y = 800;
	game.addChild(roomText);
	characterRoom.down = function (x, y, obj) {
		LK.getSound('click').play();
		// Show room contents would go here
	};
	createBackButton();
}
// Show building content
function showBuildingContent(buildingType) {
	clearScreen();
	currentScreen = 'building';
	var buildingNames = {
		'foodShop': 'Food Shop',
		'clothesShop': 'Clothes Shop'
	};
	var buildingTitle = new Text2(buildingNames[buildingType], {
		size: 60,
		fill: 0xFFFFFF
	});
	buildingTitle.anchor.set(0.5, 0.5);
	buildingTitle.x = 1024;
	buildingTitle.y = 400;
	game.addChild(buildingTitle);
	var contentText = new Text2('Welcome to the ' + buildingNames[buildingType] + '!', {
		size: 40,
		fill: 0xFFFFFF
	});
	contentText.anchor.set(0.5, 0.5);
	contentText.x = 1024;
	contentText.y = 600;
	game.addChild(contentText);
	createBackButton();
}
// Create back button
function createBackButton() {
	backButton = LK.getAsset('backButton', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	backButton.x = 200;
	backButton.y = 200;
	game.addChild(backButton);
	var backText = new Text2('Back', {
		size: 30,
		fill: 0xFFFFFF
	});
	backText.anchor.set(0.5, 0.5);
	backText.x = 200;
	backText.y = 200;
	game.addChild(backText);
	backButton.down = function (x, y, obj) {
		LK.getSound('click').play();
		createMainScreen();
	};
}
// Clear screen
function clearScreen() {
	// Remove all children from game
	while (game.children.length > 0) {
		var child = game.children[0];
		child.destroy();
	}
	// Clear GUI
	while (LK.gui.top.children.length > 0) {
		var guiChild = LK.gui.top.children[0];
		guiChild.destroy();
	}
	// Reset arrays
	characters = [];
	houses = [];
	buildings = [];
}
// Initialize game
checkUnlocks();
createMainScreen(); /**** 
* Plugins
****/ 
var storage = LK.import("@upit/storage.v1", {
	level: 0,
	unlockedCharacters: ["milly"]
});
/**** 
* Classes
****/ 
var Building = Container.expand(function (buildingType, isAvailable) {
	var self = Container.call(this);
	var buildingGraphic = self.attachAsset(buildingType, {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.buildingType = buildingType;
	self.isAvailable = isAvailable;
	if (!self.isAvailable) {
		buildingGraphic.alpha = 0.5;
	}
	// Add building label
	var labelText = buildingType === 'foodShop' ? 'Food Shop' : buildingType === 'clothesShop' ? 'Clothes Shop' : buildingType === 'hospital' ? 'Hospital' : 'Gardens';
	self.label = new Text2(labelText, {
		size: 35,
		fill: 0xFFFFFF
	});
	self.label.anchor.set(0.5, 0.5);
	self.label.y = 20;
	self.addChild(self.label);
	if (!self.isAvailable) {
		self.comingSoonText = new Text2('Coming Soon', {
			size: 25,
			fill: 0xFFFF00
		});
		self.comingSoonText.anchor.set(0.5, 0.5);
		self.comingSoonText.y = 50;
		self.addChild(self.comingSoonText);
	}
	self.down = function (x, y, obj) {
		if (self.isAvailable) {
			LK.getSound('click').play();
			showBuildingContent(self.buildingType);
		}
	};
	return self;
});
var Character = Container.expand(function (characterType) {
	var self = Container.call(this);
	var characterGraphic = self.attachAsset(characterType + 'Character', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.characterType = characterType;
	self.isUnlocked = storage.unlockedCharacters.indexOf(characterType) !== -1;
	if (!self.isUnlocked) {
		characterGraphic.alpha = 0.3;
	}
	self.down = function (x, y, obj) {
		if (self.isUnlocked) {
			LK.getSound('click').play();
			showCharacterDetail(self.characterType);
		}
	};
	return self;
});
var House = Container.expand(function (houseType, isAvailable) {
	var self = Container.call(this);
	var houseGraphic = self.attachAsset(houseType + 'House', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	self.houseType = houseType;
	self.isAvailable = isAvailable;
	if (!self.isAvailable) {
		houseGraphic.alpha = 0.5;
	}
	// Add house label
	self.label = new Text2(houseType.charAt(0).toUpperCase() + houseType.slice(1), {
		size: 40,
		fill: 0xFFFFFF
	});
	self.label.anchor.set(0.5, 0.5);
	self.label.y = 20;
	self.addChild(self.label);
	if (!self.isAvailable) {
		self.comingSoonText = new Text2('Coming Soon', {
			size: 30,
			fill: 0xFFFF00
		});
		self.comingSoonText.anchor.set(0.5, 0.5);
		self.comingSoonText.y = 60;
		self.addChild(self.comingSoonText);
	}
	self.down = function (x, y, obj) {
		if (self.isAvailable) {
			LK.getSound('click').play();
			showHouseRooms(self.houseType);
		}
	};
	return self;
});
/**** 
* Initialize Game
****/ 
var game = new LK.Game({
	backgroundColor: 0x87ceeb
});
/**** 
* Game Code
****/ 
// UI elements
// Room asset
// Building assets
// House assets
// Character assets
// Game state variables
var currentScreen = 'main';
var characters = [];
var houses = [];
var buildings = [];
// UI elements
var levelText;
var backButton;
// Initialize level and character unlocking
function checkUnlocks() {
	var currentLevel = storage.level;
	var unlockedChars = storage.unlockedCharacters.slice();
	if (currentLevel >= 1 && unlockedChars.indexOf('joy') === -1) {
		unlockedChars.push('joy');
		LK.getSound('unlock').play();
	}
	if (currentLevel >= 2 && unlockedChars.indexOf('simone') === -1) {
		unlockedChars.push('simone');
		LK.getSound('unlock').play();
	}
	storage.unlockedCharacters = unlockedChars;
}
// Create main menu screen
function createMainScreen() {
	clearScreen();
	currentScreen = 'main';
	// Level display
	levelText = new Text2('Level ' + storage.level, {
		size: 60,
		fill: 0xFFFFFF
	});
	levelText.anchor.set(0.5, 0);
	LK.gui.top.addChild(levelText);
	levelText.y = 150;
	// Title
	var titleText = new Text2('Fruitsies TV Show', {
		size: 80,
		fill: 0xFF1493
	});
	titleText.anchor.set(0.5, 0.5);
	titleText.x = 1024;
	titleText.y = 300;
	game.addChild(titleText);
	// Create characters section
	var charSectionTitle = new Text2('Characters', {
		size: 50,
		fill: 0xFFFFFF
	});
	charSectionTitle.anchor.set(0.5, 0.5);
	charSectionTitle.x = 1024;
	charSectionTitle.y = 450;
	game.addChild(charSectionTitle);
	// Add characters
	var milly = new Character('milly');
	milly.x = 700;
	milly.y = 550;
	game.addChild(milly);
	characters.push(milly);
	var joy = new Character('joy');
	joy.x = 1024;
	joy.y = 550;
	game.addChild(joy);
	characters.push(joy);
	var simone = new Character('simone');
	simone.x = 1348;
	simone.y = 550;
	game.addChild(simone);
	characters.push(simone);
	// Create houses section
	var houseSectionTitle = new Text2('Houses', {
		size: 50,
		fill: 0xFFFFFF
	});
	houseSectionTitle.anchor.set(0.5, 0.5);
	houseSectionTitle.x = 1024;
	houseSectionTitle.y = 750;
	game.addChild(houseSectionTitle);
	// Add houses
	var strawberryHouse = new House('strawberry', true);
	strawberryHouse.x = 400;
	strawberryHouse.y = 950;
	game.addChild(strawberryHouse);
	houses.push(strawberryHouse);
	var greenAppleHouse = new House('greenApple', true);
	greenAppleHouse.x = 750;
	greenAppleHouse.y = 950;
	game.addChild(greenAppleHouse);
	houses.push(greenAppleHouse);
	var grapeHouse = new House('grape', true);
	grapeHouse.x = 1100;
	grapeHouse.y = 950;
	game.addChild(grapeHouse);
	houses.push(grapeHouse);
	var bananaHouse = new House('banana', false);
	bananaHouse.x = 1450;
	bananaHouse.y = 950;
	game.addChild(bananaHouse);
	houses.push(bananaHouse);
	var passionFruitHouse = new House('passionFruit', false);
	passionFruitHouse.x = 1024;
	passionFruitHouse.y = 1200;
	game.addChild(passionFruitHouse);
	houses.push(passionFruitHouse);
	// Create buildings section
	var buildingSectionTitle = new Text2('Buildings', {
		size: 50,
		fill: 0xFFFFFF
	});
	buildingSectionTitle.anchor.set(0.5, 0.5);
	buildingSectionTitle.x = 1024;
	buildingSectionTitle.y = 1450;
	game.addChild(buildingSectionTitle);
	// Add buildings
	var foodShop = new Building('foodShop', true);
	foodShop.x = 500;
	foodShop.y = 1600;
	game.addChild(foodShop);
	buildings.push(foodShop);
	var clothesShop = new Building('clothesShop', true);
	clothesShop.x = 900;
	clothesShop.y = 1600;
	game.addChild(clothesShop);
	buildings.push(clothesShop);
	var hospital = new Building('hospital', false);
	hospital.x = 1300;
	hospital.y = 1600;
	game.addChild(hospital);
	buildings.push(hospital);
	var gardens = new Building('gardens', false);
	gardens.x = 1024;
	gardens.y = 1800;
	game.addChild(gardens);
	buildings.push(gardens);
	// Level up button (for testing)
	var levelUpButton = new Text2('Level Up!', {
		size: 40,
		fill: 0x00FF00
	});
	levelUpButton.anchor.set(0.5, 0.5);
	levelUpButton.x = 1024;
	levelUpButton.y = 2000;
	game.addChild(levelUpButton);
	levelUpButton.down = function (x, y, obj) {
		storage.level++;
		checkUnlocks();
		createMainScreen();
	};
}
// Show character detail screen
function showCharacterDetail(characterType) {
	clearScreen();
	currentScreen = 'character';
	var characterNames = {
		'milly': 'Milly The Strawberry Monkey',
		'joy': 'Joy The Green Apple Dog',
		'simone': 'Simone The Grape Frog'
	};
	var characterName = new Text2(characterNames[characterType], {
		size: 60,
		fill: 0xFFFFFF
	});
	characterName.anchor.set(0.5, 0.5);
	characterName.x = 1024;
	characterName.y = 400;
	game.addChild(characterName);
	var character = new Character(characterType);
	character.x = 1024;
	character.y = 600;
	game.addChild(character);
	createBackButton();
}
// Show house rooms
function showHouseRooms(houseType) {
	clearScreen();
	currentScreen = 'house';
	var houseTitle = new Text2(houseType.charAt(0).toUpperCase() + houseType.slice(1) + ' House', {
		size: 60,
		fill: 0xFFFFFF
	});
	houseTitle.anchor.set(0.5, 0.5);
	houseTitle.x = 1024;
	houseTitle.y = 300;
	game.addChild(houseTitle);
	// Character room
	var characterRoom = LK.getAsset('characterRoom', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	characterRoom.x = 1024;
	characterRoom.y = 800;
	game.addChild(characterRoom);
	var roomText = new Text2('Character Room', {
		size: 40,
		fill: 0x000000
	});
	roomText.anchor.set(0.5, 0.5);
	roomText.x = 1024;
	roomText.y = 800;
	game.addChild(roomText);
	characterRoom.down = function (x, y, obj) {
		LK.getSound('click').play();
		// Show room contents would go here
	};
	createBackButton();
}
// Show building content
function showBuildingContent(buildingType) {
	clearScreen();
	currentScreen = 'building';
	var buildingNames = {
		'foodShop': 'Food Shop',
		'clothesShop': 'Clothes Shop'
	};
	var buildingTitle = new Text2(buildingNames[buildingType], {
		size: 60,
		fill: 0xFFFFFF
	});
	buildingTitle.anchor.set(0.5, 0.5);
	buildingTitle.x = 1024;
	buildingTitle.y = 400;
	game.addChild(buildingTitle);
	var contentText = new Text2('Welcome to the ' + buildingNames[buildingType] + '!', {
		size: 40,
		fill: 0xFFFFFF
	});
	contentText.anchor.set(0.5, 0.5);
	contentText.x = 1024;
	contentText.y = 600;
	game.addChild(contentText);
	createBackButton();
}
// Create back button
function createBackButton() {
	backButton = LK.getAsset('backButton', {
		anchorX: 0.5,
		anchorY: 0.5
	});
	backButton.x = 200;
	backButton.y = 200;
	game.addChild(backButton);
	var backText = new Text2('Back', {
		size: 30,
		fill: 0xFFFFFF
	});
	backText.anchor.set(0.5, 0.5);
	backText.x = 200;
	backText.y = 200;
	game.addChild(backText);
	backButton.down = function (x, y, obj) {
		LK.getSound('click').play();
		createMainScreen();
	};
}
// Clear screen
function clearScreen() {
	// Remove all children from game
	while (game.children.length > 0) {
		var child = game.children[0];
		child.destroy();
	}
	// Clear GUI
	while (LK.gui.top.children.length > 0) {
		var guiChild = LK.gui.top.children[0];
		guiChild.destroy();
	}
	// Reset arrays
	characters = [];
	houses = [];
	buildings = [];
}
// Initialize game
checkUnlocks();
createMainScreen();