/****
* Classes
****/
var CharacterButton = Container.expand(function (characterType, characterName) {
var self = Container.call(this);
self.characterType = characterType;
self.characterName = characterName;
var buttonBg = self.attachAsset('characterButton', {
anchorX: 0.5,
anchorY: 0.5
});
var characterPreview = self.attachAsset(characterType, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.3,
scaleY: 0.3
});
var nameText = new Text2(characterName, {
size: 30,
fill: 0xFFFFFF
});
nameText.anchor.set(0.5, 0.5);
nameText.y = 80;
self.addChild(nameText);
self.down = function (x, y, obj) {
LK.getSound('select').play();
selectedCharacter = self.characterType;
gameState = 'dressUp';
showDressUpScreen();
};
return self;
});
var ClothingItem = Container.expand(function (itemType, itemName) {
var self = Container.call(this);
self.itemType = itemType;
self.itemName = itemName;
self.originalX = 0;
self.originalY = 0;
var itemBg = self.attachAsset('clothingSlot', {
anchorX: 0.5,
anchorY: 0.5
});
var itemGraphic = self.attachAsset(itemType, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.4,
scaleY: 0.4
});
self.down = function (x, y, obj) {
if (gameState === 'dressUp') {
draggedItem = self;
self.originalX = self.x;
self.originalY = self.y;
}
};
return self;
});
var DressedCharacter = Container.expand(function (characterType) {
var self = Container.call(this);
self.characterType = characterType;
self.equippedItems = {};
var characterBase = self.attachAsset(characterType, {
anchorX: 0.5,
anchorY: 0.5
});
self.equipItem = function (itemType, itemName) {
if (self.equippedItems[itemName]) {
self.removeChild(self.equippedItems[itemName]);
}
var equippedItem = self.attachAsset(itemType, {
anchorX: 0.5,
anchorY: 0.5
});
// Position items based on type
if (itemType.includes('Hat') || itemType.includes('Glasses')) {
equippedItem.y = -200;
} else if (itemType.includes('Shirt') || itemType.includes('Coat') || itemType.includes('Vest') || itemType.includes('sweater')) {
equippedItem.y = -50;
} else if (itemType.includes('Pants') || itemType.includes('skirt')) {
equippedItem.y = 150;
} else if (itemType.includes('Badge') || itemType.includes('stethoscope') || itemType.includes('magnifyingGlass')) {
equippedItem.x = 100;
equippedItem.y = 0;
}
self.equippedItems[itemName] = equippedItem;
LK.getSound('dress').play();
};
return self;
});
var LevelButton = Container.expand(function (levelType, levelName) {
var self = Container.call(this);
self.levelType = levelType;
self.levelName = levelName;
var buttonBg = self.attachAsset('levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2(levelName, {
size: 40,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.down = function (x, y, obj) {
LK.getSound('select').play();
gameState = 'characterSelect';
selectedLevel = self.levelType;
showCharacterSelection();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// UI elements
// Clothing items - Glasses
// Clothing items - Gunner
// Clothing items - Detective
// Clothing items - Doctor
// Clothing items - Police
// Profession level backgrounds
// Character bases
var gameState = 'levelSelect'; // 'levelSelect', 'characterSelect', 'dressUp'
var selectedLevel = '';
var selectedCharacter = '';
var draggedItem = null;
var dressedCharacter = null;
// Game containers
var levelSelectContainer = new Container();
var characterSelectContainer = new Container();
var dressUpContainer = new Container();
// Level data
var levels = [{
type: 'police',
name: 'Police Officer',
items: ['policeHat', 'policeShirt', 'policePants', 'policeBadge']
}, {
type: 'doctor',
name: 'Doctor',
items: ['doctorHat', 'doctorCoat', 'stethoscope']
}, {
type: 'detective',
name: 'Detective',
items: ['detectiveHat', 'detectiveCoat', 'magnifyingGlass']
}, {
type: 'gunner',
name: 'Gunner',
items: ['gunnerHat', 'gunnerVest', 'gunnerPants']
}, {
type: 'glasses',
name: 'Scholar',
items: ['nerdGlasses', 'sweater', 'skirt']
}];
var characters = [{
type: 'blossom',
name: 'Blossom'
}, {
type: 'bubbles',
name: 'Bubbles'
}, {
type: 'buttercup',
name: 'Buttercup'
}];
// Initialize level selection screen
function showLevelSelection() {
game.removeChildren();
levelSelectContainer.removeChildren();
var titleText = new Text2('Choose Your Profession', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 300;
levelSelectContainer.addChild(titleText);
for (var i = 0; i < levels.length; i++) {
var levelButton = new LevelButton(levels[i].type, levels[i].name);
levelButton.x = 1024;
levelButton.y = 500 + i * 200;
levelSelectContainer.addChild(levelButton);
}
game.addChild(levelSelectContainer);
}
// Initialize character selection screen
function showCharacterSelection() {
game.removeChildren();
characterSelectContainer.removeChildren();
var titleText = new Text2('Choose Your Character', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 400;
characterSelectContainer.addChild(titleText);
for (var i = 0; i < characters.length; i++) {
var characterButton = new CharacterButton(characters[i].type, characters[i].name);
characterButton.x = 400 + i * 400;
characterButton.y = 800;
characterSelectContainer.addChild(characterButton);
}
// Back button
var backButton = new LevelButton('back', 'Back to Levels');
backButton.x = 1024;
backButton.y = 1200;
backButton.down = function () {
gameState = 'levelSelect';
showLevelSelection();
};
characterSelectContainer.addChild(backButton);
game.addChild(characterSelectContainer);
}
// Initialize dress-up screen
function showDressUpScreen() {
game.removeChildren();
dressUpContainer.removeChildren();
// Add background based on selected level
var levelData = levels.find(function (level) {
return level.type === selectedLevel;
});
var background = LK.getAsset(selectedLevel + 'Level', {
anchorX: 0,
anchorY: 0,
alpha: 0.3
});
dressUpContainer.addChild(background);
// Create dressed character
dressedCharacter = new DressedCharacter(selectedCharacter);
dressedCharacter.x = 1024;
dressedCharacter.y = 1000;
dressUpContainer.addChild(dressedCharacter);
// Create clothing items panel
var clothingPanel = new Container();
clothingPanel.x = 100;
clothingPanel.y = 400;
for (var i = 0; i < levelData.items.length; i++) {
var clothingItem = new ClothingItem(levelData.items[i], levelData.items[i]);
clothingItem.x = i % 3 * 200;
clothingItem.y = Math.floor(i / 3) * 200;
clothingPanel.addChild(clothingItem);
}
dressUpContainer.addChild(clothingPanel);
// Back button
var backButton = new LevelButton('back', 'Back');
backButton.x = 1024;
backButton.y = 200;
backButton.down = function () {
gameState = 'characterSelect';
showCharacterSelection();
};
dressUpContainer.addChild(backButton);
game.addChild(dressUpContainer);
}
// Handle dragging
game.move = function (x, y, obj) {
if (draggedItem && gameState === 'dressUp') {
draggedItem.x = x;
draggedItem.y = y;
}
};
game.up = function (x, y, obj) {
if (draggedItem && gameState === 'dressUp') {
// Check if item was dropped on character
if (dressedCharacter && draggedItem.intersects(dressedCharacter)) {
dressedCharacter.equipItem(draggedItem.itemType, draggedItem.itemName);
}
// Return item to original position
draggedItem.x = draggedItem.originalX;
draggedItem.y = draggedItem.originalY;
draggedItem = null;
}
};
// Start the game
showLevelSelection(); /****
* Classes
****/
var CharacterButton = Container.expand(function (characterType, characterName) {
var self = Container.call(this);
self.characterType = characterType;
self.characterName = characterName;
var buttonBg = self.attachAsset('characterButton', {
anchorX: 0.5,
anchorY: 0.5
});
var characterPreview = self.attachAsset(characterType, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.3,
scaleY: 0.3
});
var nameText = new Text2(characterName, {
size: 30,
fill: 0xFFFFFF
});
nameText.anchor.set(0.5, 0.5);
nameText.y = 80;
self.addChild(nameText);
self.down = function (x, y, obj) {
LK.getSound('select').play();
selectedCharacter = self.characterType;
gameState = 'dressUp';
showDressUpScreen();
};
return self;
});
var ClothingItem = Container.expand(function (itemType, itemName) {
var self = Container.call(this);
self.itemType = itemType;
self.itemName = itemName;
self.originalX = 0;
self.originalY = 0;
var itemBg = self.attachAsset('clothingSlot', {
anchorX: 0.5,
anchorY: 0.5
});
var itemGraphic = self.attachAsset(itemType, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.4,
scaleY: 0.4
});
self.down = function (x, y, obj) {
if (gameState === 'dressUp') {
draggedItem = self;
self.originalX = self.x;
self.originalY = self.y;
}
};
return self;
});
var DressedCharacter = Container.expand(function (characterType) {
var self = Container.call(this);
self.characterType = characterType;
self.equippedItems = {};
var characterBase = self.attachAsset(characterType, {
anchorX: 0.5,
anchorY: 0.5
});
self.equipItem = function (itemType, itemName) {
if (self.equippedItems[itemName]) {
self.removeChild(self.equippedItems[itemName]);
}
var equippedItem = self.attachAsset(itemType, {
anchorX: 0.5,
anchorY: 0.5
});
// Position items based on type
if (itemType.includes('Hat') || itemType.includes('Glasses')) {
equippedItem.y = -200;
} else if (itemType.includes('Shirt') || itemType.includes('Coat') || itemType.includes('Vest') || itemType.includes('sweater')) {
equippedItem.y = -50;
} else if (itemType.includes('Pants') || itemType.includes('skirt')) {
equippedItem.y = 150;
} else if (itemType.includes('Badge') || itemType.includes('stethoscope') || itemType.includes('magnifyingGlass')) {
equippedItem.x = 100;
equippedItem.y = 0;
}
self.equippedItems[itemName] = equippedItem;
LK.getSound('dress').play();
};
return self;
});
var LevelButton = Container.expand(function (levelType, levelName) {
var self = Container.call(this);
self.levelType = levelType;
self.levelName = levelName;
var buttonBg = self.attachAsset('levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
var buttonText = new Text2(levelName, {
size: 40,
fill: 0xFFFFFF
});
buttonText.anchor.set(0.5, 0.5);
self.addChild(buttonText);
self.down = function (x, y, obj) {
LK.getSound('select').play();
gameState = 'characterSelect';
selectedLevel = self.levelType;
showCharacterSelection();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
// UI elements
// Clothing items - Glasses
// Clothing items - Gunner
// Clothing items - Detective
// Clothing items - Doctor
// Clothing items - Police
// Profession level backgrounds
// Character bases
var gameState = 'levelSelect'; // 'levelSelect', 'characterSelect', 'dressUp'
var selectedLevel = '';
var selectedCharacter = '';
var draggedItem = null;
var dressedCharacter = null;
// Game containers
var levelSelectContainer = new Container();
var characterSelectContainer = new Container();
var dressUpContainer = new Container();
// Level data
var levels = [{
type: 'police',
name: 'Police Officer',
items: ['policeHat', 'policeShirt', 'policePants', 'policeBadge']
}, {
type: 'doctor',
name: 'Doctor',
items: ['doctorHat', 'doctorCoat', 'stethoscope']
}, {
type: 'detective',
name: 'Detective',
items: ['detectiveHat', 'detectiveCoat', 'magnifyingGlass']
}, {
type: 'gunner',
name: 'Gunner',
items: ['gunnerHat', 'gunnerVest', 'gunnerPants']
}, {
type: 'glasses',
name: 'Scholar',
items: ['nerdGlasses', 'sweater', 'skirt']
}];
var characters = [{
type: 'blossom',
name: 'Blossom'
}, {
type: 'bubbles',
name: 'Bubbles'
}, {
type: 'buttercup',
name: 'Buttercup'
}];
// Initialize level selection screen
function showLevelSelection() {
game.removeChildren();
levelSelectContainer.removeChildren();
var titleText = new Text2('Choose Your Profession', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 300;
levelSelectContainer.addChild(titleText);
for (var i = 0; i < levels.length; i++) {
var levelButton = new LevelButton(levels[i].type, levels[i].name);
levelButton.x = 1024;
levelButton.y = 500 + i * 200;
levelSelectContainer.addChild(levelButton);
}
game.addChild(levelSelectContainer);
}
// Initialize character selection screen
function showCharacterSelection() {
game.removeChildren();
characterSelectContainer.removeChildren();
var titleText = new Text2('Choose Your Character', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 400;
characterSelectContainer.addChild(titleText);
for (var i = 0; i < characters.length; i++) {
var characterButton = new CharacterButton(characters[i].type, characters[i].name);
characterButton.x = 400 + i * 400;
characterButton.y = 800;
characterSelectContainer.addChild(characterButton);
}
// Back button
var backButton = new LevelButton('back', 'Back to Levels');
backButton.x = 1024;
backButton.y = 1200;
backButton.down = function () {
gameState = 'levelSelect';
showLevelSelection();
};
characterSelectContainer.addChild(backButton);
game.addChild(characterSelectContainer);
}
// Initialize dress-up screen
function showDressUpScreen() {
game.removeChildren();
dressUpContainer.removeChildren();
// Add background based on selected level
var levelData = levels.find(function (level) {
return level.type === selectedLevel;
});
var background = LK.getAsset(selectedLevel + 'Level', {
anchorX: 0,
anchorY: 0,
alpha: 0.3
});
dressUpContainer.addChild(background);
// Create dressed character
dressedCharacter = new DressedCharacter(selectedCharacter);
dressedCharacter.x = 1024;
dressedCharacter.y = 1000;
dressUpContainer.addChild(dressedCharacter);
// Create clothing items panel
var clothingPanel = new Container();
clothingPanel.x = 100;
clothingPanel.y = 400;
for (var i = 0; i < levelData.items.length; i++) {
var clothingItem = new ClothingItem(levelData.items[i], levelData.items[i]);
clothingItem.x = i % 3 * 200;
clothingItem.y = Math.floor(i / 3) * 200;
clothingPanel.addChild(clothingItem);
}
dressUpContainer.addChild(clothingPanel);
// Back button
var backButton = new LevelButton('back', 'Back');
backButton.x = 1024;
backButton.y = 200;
backButton.down = function () {
gameState = 'characterSelect';
showCharacterSelection();
};
dressUpContainer.addChild(backButton);
game.addChild(dressUpContainer);
}
// Handle dragging
game.move = function (x, y, obj) {
if (draggedItem && gameState === 'dressUp') {
draggedItem.x = x;
draggedItem.y = y;
}
};
game.up = function (x, y, obj) {
if (draggedItem && gameState === 'dressUp') {
// Check if item was dropped on character
if (dressedCharacter && draggedItem.intersects(dressedCharacter)) {
dressedCharacter.equipItem(draggedItem.itemType, draggedItem.itemName);
}
// Return item to original position
draggedItem.x = draggedItem.originalX;
draggedItem.y = draggedItem.originalY;
draggedItem = null;
}
};
// Start the game
showLevelSelection();