/****
* Plugins
****/
var storage = LK.import("@upit/storage.v1", {
unlockedLevel: 1
});
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var GameLevel = Container.expand(function (levelNumber) {
var self = Container.call(this);
self.levelNumber = levelNumber;
self.gingerFound = false;
var backgroundAsset = '';
var gingerX = 0;
var gingerY = 0;
switch (levelNumber) {
case 1:
// Safari
backgroundAsset = 'safariBackground';
gingerX = 400 + Math.random() * 800;
gingerY = 600 + Math.random() * 800;
break;
case 2:
// Train
backgroundAsset = 'trainBackground';
gingerX = 500 + Math.random() * 700;
gingerY = 700 + Math.random() * 600;
break;
case 3:
// Snow
backgroundAsset = 'snowBackground';
gingerX = 600 + Math.random() * 600;
gingerY = 800 + Math.random() * 500;
break;
case 4:
// Kids Bedroom
backgroundAsset = 'bedroomBackground';
gingerX = 700 + Math.random() * 500;
gingerY = 900 + Math.random() * 400;
break;
case 5:
// Banana Land
backgroundAsset = 'bananaBackground';
gingerX = 800 + Math.random() * 400;
gingerY = 1000 + Math.random() * 300;
break;
}
var background = self.attachAsset(backgroundAsset, {
anchorX: 0,
anchorY: 0
});
self.createSceneObjects = function () {
if (levelNumber === 1) {
// Safari
for (var i = 0; i < 8; i++) {
var tree = self.addChild(LK.getAsset('tree', {
anchorX: 0.5,
anchorY: 1
}));
tree.x = 200 + Math.random() * 1600;
tree.y = 400 + Math.random() * 1800;
}
for (var i = 0; i < 12; i++) {
var rock = self.addChild(LK.getAsset('rock', {
anchorX: 0.5,
anchorY: 0.5
}));
rock.x = 100 + Math.random() * 1800;
rock.y = 300 + Math.random() * 2000;
}
for (var i = 0; i < 10; i++) {
var bush = self.addChild(LK.getAsset('bush', {
anchorX: 0.5,
anchorY: 0.5
}));
bush.x = 150 + Math.random() * 1700;
bush.y = 400 + Math.random() * 1900;
}
} else if (levelNumber === 2) {
// Train
for (var i = 0; i < 6; i++) {
var trainCar = self.addChild(LK.getAsset('trainCar', {
anchorX: 0.5,
anchorY: 0.5
}));
trainCar.x = 300 + i * 250;
trainCar.y = 800 + Math.random() * 400;
var wheel1 = self.addChild(LK.getAsset('wheel', {
anchorX: 0.5,
anchorY: 0.5
}));
wheel1.x = trainCar.x - 60;
wheel1.y = trainCar.y + 70;
var wheel2 = self.addChild(LK.getAsset('wheel', {
anchorX: 0.5,
anchorY: 0.5
}));
wheel2.x = trainCar.x + 60;
wheel2.y = trainCar.y + 70;
}
} else if (levelNumber === 3) {
// Snow
for (var i = 0; i < 8; i++) {
var snowman = self.addChild(LK.getAsset('snowman', {
anchorX: 0.5,
anchorY: 1
}));
snowman.x = 200 + Math.random() * 1600;
snowman.y = 500 + Math.random() * 1800;
}
for (var i = 0; i < 15; i++) {
var rock = self.addChild(LK.getAsset('rock', {
anchorX: 0.5,
anchorY: 0.5
}));
rock.x = 100 + Math.random() * 1800;
rock.y = 400 + Math.random() * 2000;
}
} else if (levelNumber === 4) {
// Kids Bedroom
for (var i = 0; i < 4; i++) {
var bed = self.addChild(LK.getAsset('bed', {
anchorX: 0.5,
anchorY: 0.5
}));
bed.x = 300 + i * 400;
bed.y = 600 + Math.random() * 800;
}
for (var i = 0; i < 20; i++) {
var toy = self.addChild(LK.getAsset('toy', {
anchorX: 0.5,
anchorY: 0.5
}));
toy.x = 150 + Math.random() * 1700;
toy.y = 400 + Math.random() * 2000;
}
} else if (levelNumber === 5) {
// Banana Land
for (var i = 0; i < 50; i++) {
var banana = self.addChild(LK.getAsset('banana', {
anchorX: 0.5,
anchorY: 0.5
}));
banana.x = 100 + Math.random() * 1800;
banana.y = 300 + Math.random() * 2100;
}
}
};
self.createSceneObjects();
var gingerSprite = self.addChild(LK.getAsset('ginger', {
anchorX: 0.5,
anchorY: 0.5
}));
gingerSprite.x = gingerX;
gingerSprite.y = gingerY;
gingerSprite.down = function (x, y, obj) {
if (!self.gingerFound) {
self.gingerFound = true;
LK.getSound('found').play();
tween(gingerSprite, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300
});
LK.effects.flashObject(gingerSprite, 0x00ff00, 500);
LK.setTimeout(function () {
var nextLevel = levelNumber + 1;
if (nextLevel <= 5) {
storage.unlockedLevel = Math.max(storage.unlockedLevel, nextLevel);
levelButtons[nextLevel - 1].unlock();
}
if (nextLevel <= 5) {
currentLevel = nextLevel;
showGameplay();
} else {
LK.showYouWin();
}
}, 1000);
}
};
return self;
});
var LevelButton = Container.expand(function (levelNumber, levelName, isLocked) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset(isLocked ? 'lockedButton' : 'levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
var labelText = new Text2(levelName, {
size: 40,
fill: isLocked ? "#666666" : "#ffffff"
});
labelText.anchor.set(0.5, 0.5);
self.addChild(labelText);
self.levelNumber = levelNumber;
self.isLocked = isLocked;
self.down = function (x, y, obj) {
if (!self.isLocked) {
currentLevel = self.levelNumber;
showGameplay();
}
};
self.unlock = function () {
self.isLocked = false;
buttonGraphics.destroy();
var newButton = self.attachAsset('levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
labelText.fill = "#ffffff";
LK.getSound('unlock').play();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
var currentScreen = 'menu'; // 'menu' or 'gameplay'
var currentLevel = 1;
var levelButtons = [];
var currentGameLevel = null;
var titleText = new Text2("Where's Ginger?", {
size: 80,
fill: 0x2C3E50
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 300;
game.addChild(titleText);
var subtitleText = new Text2("Find Ginger hiding in each scene!", {
size: 40,
fill: 0x34495E
});
subtitleText.anchor.set(0.5, 0.5);
subtitleText.x = 1024;
subtitleText.y = 400;
game.addChild(subtitleText);
var levelNames = ['Safari', 'Train', 'Snow', 'Kids Bedroom', 'Banana Land'];
for (var i = 0; i < 5; i++) {
var isLocked = i + 1 > storage.unlockedLevel;
var button = new LevelButton(i + 1, levelNames[i], isLocked);
button.x = 1024;
button.y = 600 + i * 150;
levelButtons.push(button);
game.addChild(button);
}
var backButton = new Text2("← Back to Menu", {
size: 50,
fill: 0xFFFFFF
});
backButton.anchor.set(0, 0.5);
backButton.x = 50;
backButton.y = 150;
backButton.down = function (x, y, obj) {
showMenu();
};
function showMenu() {
currentScreen = 'menu';
if (currentGameLevel) {
currentGameLevel.destroy();
currentGameLevel = null;
}
if (backButton.parent) {
game.removeChild(backButton);
}
titleText.visible = true;
subtitleText.visible = true;
for (var i = 0; i < levelButtons.length; i++) {
levelButtons[i].visible = true;
}
}
function showGameplay() {
currentScreen = 'gameplay';
titleText.visible = false;
subtitleText.visible = false;
for (var i = 0; i < levelButtons.length; i++) {
levelButtons[i].visible = false;
}
if (currentGameLevel) {
currentGameLevel.destroy();
}
currentGameLevel = game.addChild(new GameLevel(currentLevel));
game.addChild(backButton);
} /****
* Plugins
****/
var storage = LK.import("@upit/storage.v1", {
unlockedLevel: 1
});
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var GameLevel = Container.expand(function (levelNumber) {
var self = Container.call(this);
self.levelNumber = levelNumber;
self.gingerFound = false;
var backgroundAsset = '';
var gingerX = 0;
var gingerY = 0;
switch (levelNumber) {
case 1:
// Safari
backgroundAsset = 'safariBackground';
gingerX = 400 + Math.random() * 800;
gingerY = 600 + Math.random() * 800;
break;
case 2:
// Train
backgroundAsset = 'trainBackground';
gingerX = 500 + Math.random() * 700;
gingerY = 700 + Math.random() * 600;
break;
case 3:
// Snow
backgroundAsset = 'snowBackground';
gingerX = 600 + Math.random() * 600;
gingerY = 800 + Math.random() * 500;
break;
case 4:
// Kids Bedroom
backgroundAsset = 'bedroomBackground';
gingerX = 700 + Math.random() * 500;
gingerY = 900 + Math.random() * 400;
break;
case 5:
// Banana Land
backgroundAsset = 'bananaBackground';
gingerX = 800 + Math.random() * 400;
gingerY = 1000 + Math.random() * 300;
break;
}
var background = self.attachAsset(backgroundAsset, {
anchorX: 0,
anchorY: 0
});
self.createSceneObjects = function () {
if (levelNumber === 1) {
// Safari
for (var i = 0; i < 8; i++) {
var tree = self.addChild(LK.getAsset('tree', {
anchorX: 0.5,
anchorY: 1
}));
tree.x = 200 + Math.random() * 1600;
tree.y = 400 + Math.random() * 1800;
}
for (var i = 0; i < 12; i++) {
var rock = self.addChild(LK.getAsset('rock', {
anchorX: 0.5,
anchorY: 0.5
}));
rock.x = 100 + Math.random() * 1800;
rock.y = 300 + Math.random() * 2000;
}
for (var i = 0; i < 10; i++) {
var bush = self.addChild(LK.getAsset('bush', {
anchorX: 0.5,
anchorY: 0.5
}));
bush.x = 150 + Math.random() * 1700;
bush.y = 400 + Math.random() * 1900;
}
} else if (levelNumber === 2) {
// Train
for (var i = 0; i < 6; i++) {
var trainCar = self.addChild(LK.getAsset('trainCar', {
anchorX: 0.5,
anchorY: 0.5
}));
trainCar.x = 300 + i * 250;
trainCar.y = 800 + Math.random() * 400;
var wheel1 = self.addChild(LK.getAsset('wheel', {
anchorX: 0.5,
anchorY: 0.5
}));
wheel1.x = trainCar.x - 60;
wheel1.y = trainCar.y + 70;
var wheel2 = self.addChild(LK.getAsset('wheel', {
anchorX: 0.5,
anchorY: 0.5
}));
wheel2.x = trainCar.x + 60;
wheel2.y = trainCar.y + 70;
}
} else if (levelNumber === 3) {
// Snow
for (var i = 0; i < 8; i++) {
var snowman = self.addChild(LK.getAsset('snowman', {
anchorX: 0.5,
anchorY: 1
}));
snowman.x = 200 + Math.random() * 1600;
snowman.y = 500 + Math.random() * 1800;
}
for (var i = 0; i < 15; i++) {
var rock = self.addChild(LK.getAsset('rock', {
anchorX: 0.5,
anchorY: 0.5
}));
rock.x = 100 + Math.random() * 1800;
rock.y = 400 + Math.random() * 2000;
}
} else if (levelNumber === 4) {
// Kids Bedroom
for (var i = 0; i < 4; i++) {
var bed = self.addChild(LK.getAsset('bed', {
anchorX: 0.5,
anchorY: 0.5
}));
bed.x = 300 + i * 400;
bed.y = 600 + Math.random() * 800;
}
for (var i = 0; i < 20; i++) {
var toy = self.addChild(LK.getAsset('toy', {
anchorX: 0.5,
anchorY: 0.5
}));
toy.x = 150 + Math.random() * 1700;
toy.y = 400 + Math.random() * 2000;
}
} else if (levelNumber === 5) {
// Banana Land
for (var i = 0; i < 50; i++) {
var banana = self.addChild(LK.getAsset('banana', {
anchorX: 0.5,
anchorY: 0.5
}));
banana.x = 100 + Math.random() * 1800;
banana.y = 300 + Math.random() * 2100;
}
}
};
self.createSceneObjects();
var gingerSprite = self.addChild(LK.getAsset('ginger', {
anchorX: 0.5,
anchorY: 0.5
}));
gingerSprite.x = gingerX;
gingerSprite.y = gingerY;
gingerSprite.down = function (x, y, obj) {
if (!self.gingerFound) {
self.gingerFound = true;
LK.getSound('found').play();
tween(gingerSprite, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 300
});
LK.effects.flashObject(gingerSprite, 0x00ff00, 500);
LK.setTimeout(function () {
var nextLevel = levelNumber + 1;
if (nextLevel <= 5) {
storage.unlockedLevel = Math.max(storage.unlockedLevel, nextLevel);
levelButtons[nextLevel - 1].unlock();
}
if (nextLevel <= 5) {
currentLevel = nextLevel;
showGameplay();
} else {
LK.showYouWin();
}
}, 1000);
}
};
return self;
});
var LevelButton = Container.expand(function (levelNumber, levelName, isLocked) {
var self = Container.call(this);
var buttonGraphics = self.attachAsset(isLocked ? 'lockedButton' : 'levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
var labelText = new Text2(levelName, {
size: 40,
fill: isLocked ? "#666666" : "#ffffff"
});
labelText.anchor.set(0.5, 0.5);
self.addChild(labelText);
self.levelNumber = levelNumber;
self.isLocked = isLocked;
self.down = function (x, y, obj) {
if (!self.isLocked) {
currentLevel = self.levelNumber;
showGameplay();
}
};
self.unlock = function () {
self.isLocked = false;
buttonGraphics.destroy();
var newButton = self.attachAsset('levelButton', {
anchorX: 0.5,
anchorY: 0.5
});
labelText.fill = "#ffffff";
LK.getSound('unlock').play();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
var currentScreen = 'menu'; // 'menu' or 'gameplay'
var currentLevel = 1;
var levelButtons = [];
var currentGameLevel = null;
var titleText = new Text2("Where's Ginger?", {
size: 80,
fill: 0x2C3E50
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 1024;
titleText.y = 300;
game.addChild(titleText);
var subtitleText = new Text2("Find Ginger hiding in each scene!", {
size: 40,
fill: 0x34495E
});
subtitleText.anchor.set(0.5, 0.5);
subtitleText.x = 1024;
subtitleText.y = 400;
game.addChild(subtitleText);
var levelNames = ['Safari', 'Train', 'Snow', 'Kids Bedroom', 'Banana Land'];
for (var i = 0; i < 5; i++) {
var isLocked = i + 1 > storage.unlockedLevel;
var button = new LevelButton(i + 1, levelNames[i], isLocked);
button.x = 1024;
button.y = 600 + i * 150;
levelButtons.push(button);
game.addChild(button);
}
var backButton = new Text2("← Back to Menu", {
size: 50,
fill: 0xFFFFFF
});
backButton.anchor.set(0, 0.5);
backButton.x = 50;
backButton.y = 150;
backButton.down = function (x, y, obj) {
showMenu();
};
function showMenu() {
currentScreen = 'menu';
if (currentGameLevel) {
currentGameLevel.destroy();
currentGameLevel = null;
}
if (backButton.parent) {
game.removeChild(backButton);
}
titleText.visible = true;
subtitleText.visible = true;
for (var i = 0; i < levelButtons.length; i++) {
levelButtons[i].visible = true;
}
}
function showGameplay() {
currentScreen = 'gameplay';
titleText.visible = false;
subtitleText.visible = false;
for (var i = 0; i < levelButtons.length; i++) {
levelButtons[i].visible = false;
}
if (currentGameLevel) {
currentGameLevel.destroy();
}
currentGameLevel = game.addChild(new GameLevel(currentLevel));
game.addChild(backButton);
}