/**** * 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();