var ScoreIcon = Container.expand(function () {
var self = Container.call(this);
var iconGraphics = self.createAsset('scoreIcon', 'Score Icon Graphics', 0.5, 0.5);
});
var FinalScreen = Container.expand(function () {
var self = Container.call(this);
var finalScreenGraphics = self.createAsset('finalscreen', 'Final Screen Graphics', 0.5, 0.5);
finalScreenGraphics.x = LK.stage.width / 2;
finalScreenGraphics.y = LK.stage.height / 2;
self.visible = false;
});
var BoxPiece = Container.expand(function () {
var self = Container.call(this);
var pieceGraphics = self.createAsset('boxPiece', 'Box Piece Graphics', 0.5, 0.5);
self.velocityX = (Math.random() - 0.5) * 20;
self.velocityY = (Math.random() - 0.5) * 20;
LK.on('tick', function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.rotation += 0.1;
});
});
var BottomBoxPiece = Container.expand(function () {
var self = Container.call(this);
var bottomBoxPieceGraphics = self.createAsset('bottomBoxPiece', 'Bottom Box Piece Graphics', 0.5, 0.5);
self.velocityX = (Math.random() - 0.5) * 60;
self.velocityY = (Math.random() - 0.5) * 60;
LK.on('tick', function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.rotation += 0.1;
});
});
var Shadow = Container.expand(function () {
var self = Container.call(this);
var shadowGraphics = self.createAsset('shadow', 'Shadow Graphics', 0.5, 0.5);
});
var TopBoxPiece = Container.expand(function () {
var self = Container.call(this);
var topBoxPieceGraphics = self.createAsset('topBoxPiece', 'Top Box Piece Graphics', 0.5, 0.5);
self.velocityX = (Math.random() - 0.5) * 60;
self.velocityY = (Math.random() - 0.5) * 60;
LK.on('tick', function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.rotation += 0.1;
});
});
var Cap = Container.expand(function () {
var self = Container.call(this);
var capGraphics = self.createAsset('cap', 'Cap Graphics', 0.5, 0.5);
var startY;
var isSwipingUp = false;
self.on('down', function (obj) {
startY = obj.event.getLocalPosition(self.parent).y;
});
self.on('move', function (obj) {
var currentY = self.parent ? obj.event.getLocalPosition(self.parent).y : 0;
if (startY - currentY > 50) {
isSwipingUp = true;
}
});
self.on('up', function (obj) {
if (isSwipingUp && self.parent) {
console.log('Cap swiped up');
self.emit('swipeUp');
self.moveUp = true;
self.rotateAndMoveUp = true;
isSwipingUp = false;
}
});
LK.on('tick', function () {
if (self.rotateAndMoveUp) {
self.y -= 10;
self.x -= 10;
self.rotation -= 0.05;
if (self.y <= self.startY - 400) {
self.rotateAndMoveUp = false;
}
}
});
});
var RedButton = Container.expand(function () {
var self = Container.call(this);
var buttonGraphics = self.createAsset('redbutton', 'Red Button Graphics', 0.5, 0.5);
});
var AxeLayers = Container.expand(function () {
var self = Container.call(this);
var lastTapTime = 0;
self.on('down', function (obj) {
var currentTime = Date.now();
var tapLength = currentTime - lastTapTime;
if (tapLength < 500 && tapLength > 0) {
if (self.children.length > 0) {
self.removeChildAt(self.children.length - 1);
}
if (self.children.length === 0) {
self.destroy();
}
}
lastTapTime = currentTime;
});
var layer0 = self.createAsset('layer0', 'Axe Layer 0 Graphics', 0.5, 0.5);
layer0.x -= 250;
layer0.y -= 250;
var layer1 = self.createAsset('layer1', 'Axe Layer 1 Graphics', 0.5, 0.5);
layer1.x -= 200;
layer1.y -= 200;
var layer2 = self.createAsset('layer2', 'Axe Layer 2 Graphics', 0.5, 0.5);
layer2.x -= 200;
layer2.y -= 200;
var layer3 = self.createAsset('layer3', 'Axe Layer 3 Graphics', 0.5, 0.5);
layer3.x -= 200;
layer3.y -= 200;
var layer4 = self.createAsset('layer4', 'Axe Layer 4 Graphics', 0.5, 0.5);
layer4.x -= 200;
layer4.y -= 200;
var layer5 = self.createAsset('layer5', 'Axe Layer 5 Graphics', 0.5, 0.5);
layer5.x -= 200;
layer5.y -= 200;
});
var Box = Container.expand(function () {
var self = Container.call(this);
Box.prototype.createTopAndBottomPieces = function () {
var topPiece = new TopBoxPiece();
topPiece.x = this.x;
topPiece.y = this.y - this.height / 4;
topPiece.width = this.width;
topPiece.height = this.height / 2;
var bottomPiece = new BottomBoxPiece();
bottomPiece.x = this.x;
bottomPiece.y = this.y + this.height / 4;
bottomPiece.width = this.width;
bottomPiece.height = this.height / 2;
if (this.parent) {
this.parent.addChild(topPiece);
this.parent.addChild(bottomPiece);
}
};
self.spinAndShrink = function () {
var frames = 50;
var frameCounter = 0;
var animationTick = function () {
self.scale.x -= 1 / frames;
self.scale.y -= 1 / frames;
self.rotation += 0.1;
frameCounter++;
if (frameCounter >= frames) {
LK.off('tick', animationTick);
self.destroy();
}
};
LK.on('tick', animationTick);
};
self.explode = function () {
for (var i = 0; i < 20; i++) {
var piece = new BoxPiece();
piece.x = self.x;
piece.y = self.y;
if (self.parent) {
self.parent.addChild(piece);
}
}
self.destroy();
};
LK.on('tick', function () {
if (self.velocityY !== 0) {
self.y += self.velocityY;
}
});
self.velocityY = 0;
var boxGraphics = self.createAsset('box', 'Box Graphics', 0.5, 0.5);
self.enlargeBox = function () {
var frames = 0;
var animationTick = function () {
self.scale.x += 0.01;
self.scale.y += 0.01;
frames++;
if (self.width >= LK.stage.width || self.height >= LK.stage.height) {
LK.off('tick', animationTick);
self.destroy();
}
};
LK.on('tick', animationTick);
};
var lastTapTime = 0;
var tapCount = 0;
self.isDoubleClicked = false;
var startY;
var isSwipingUp = false;
self.on('down', function (obj) {
var currentTime = Date.now();
if (currentTime - lastTapTime < 300) {
tapCount++;
if (tapCount === 2) {
console.log('Box double clicked');
self.isDoubleClicked = true;
tapCount = 0;
}
} else {
tapCount = 1;
}
lastTapTime = currentTime;
this.startPos = obj.event.getLocalPosition(self.parent);
startY = this.startPos.y;
self.swipeStartX = this.startPos.x;
self.swipeEndX = null;
self.swipeDirection = null;
});
self.on('move', function (obj) {
var currentY = self.parent ? obj.event.getLocalPosition(self.parent).y : 0;
var currentX = self.parent ? obj.event.getLocalPosition(self.parent).x : 0;
if (startY - currentY > 100) {
isSwipingUp = true;
}
if (self.swipeStartX != null) {
if (self.swipeDirection === null) {
self.swipeEndX = currentX;
}
}
});
self.on('up', function (obj) {
if (isSwipingUp) {
console.log('Box swiped up');
self.emit('swipeUp');
self.velocityY = -30;
isSwipingUp = false;
}
if (self.swipeEndX != null && Math.abs(self.swipeEndX - self.swipeStartX) > self.width / 2) {
console.log('Box sliced');
self.emit('slice');
self.createTopAndBottomPieces();
self.isSliced = true;
self.destroy();
}
self.swipeStartX = null;
self.swipeEndX = null;
self.swipeDirection = null;
});
});
var Axe = Container.expand(function () {
var self = Container.call(this);
var axeGraphics = self.createAsset('axe', 'Axe Graphics', 1, 1);
self.rotationSpeed = 0.05;
var dragNode = null;
var startDragPos = null;
self.on('down', function (obj) {
dragNode = self;
startDragPos = obj.event.getLocalPosition(self.parent);
});
self.on('move', function (obj) {
if (dragNode) {
var currentPos = self.parent ? obj.event.getLocalPosition(self.parent) : {
x: 0.5,
y: 0.5
};
dragNode.x = currentPos.x + 200;
dragNode.y = currentPos.y + 200;
}
});
self.on('up', function (obj) {
dragNode = null;
});
var maxRotation = Math.PI / 4;
var rotationDirection = 1;
LK.on('tick', function () {
self.rotation += rotationDirection * self.rotationSpeed;
if (Math.abs(self.rotation) >= maxRotation) {
rotationDirection *= -1;
}
});
});
var DeadoraliveMessage = Container.expand(function () {
var self = Container.call(this);
var messageGraphics = self.createAsset('deadoralive', 'Deadoralive Graphics', 0.5, 0.5);
var startY;
var targetY;
var isSwiping = false;
self.on('down', function (obj) {
startY = obj.event.getLocalPosition(self.parent).y;
targetY = self.y - 300;
});
self.on('move', function (obj) {
var currentY = obj.event.getLocalPosition(LK.stageContainer).y;
if (startY - currentY > 20) {
isSwiping = true;
}
});
self.on('up', function (obj) {
if (isSwiping) {
LK.on('tick', function () {
if (self.y > targetY) {
self.y -= 5;
if (self.y < targetY) {
self.y = targetY;
LK.off('tick');
}
}
});
}
isSwiping = false;
});
});
var DeadMessage = Container.expand(function () {
var self = Container.call(this);
var messageGraphics = self.createAsset('deadmessage', 'Dead Graphics', 0.5, 0.5);
});
var AliveMessage = Container.expand(function () {
var self = Container.call(this);
var messageGraphics = self.createAsset('alivemessage', 'Alive Graphics', 0.5, 0.5);
});
var Kitty = Container.expand(function () {
var self = Container.call(this);
self.isDead = false;
self.alpha = 1;
var ghostlyMovement = function () {
self.y += Math.sin(LK.ticks / 5) * 2;
};
LK.on('tick', ghostlyMovement);
var kitty = self.createAsset('alive', 'Kitty Graphics', 0.5, 0.5);
});
var DeadKitty = Container.expand(function () {
var self = Container.call(this);
self.alpha = 0.5;
var ghostlyMovement = function () {
self.y += Math.sin(LK.ticks / 10) * 0.5;
};
LK.on('tick', ghostlyMovement);
var deadkitty = self.createAsset('dead', 'Dead Kitty Graphics', 0.5, 0.5);
});
var Lid = Container.expand(function () {
var self = Container.call(this);
var lidGraphics = self.createAsset('lid', 'Lid Graphics', 0.5, 0.5);
var dragNode = null;
var startDragPos = null;
self.on('down', function (obj) {
dragNode = self;
startDragPos = obj.event.getLocalPosition(self.parent);
});
self.on('move', function (obj) {
if (dragNode && self.parent) {
var currentPos = self.parent ? obj.event.getLocalPosition(self.parent) : {
x: 0.5,
y: 0.5
};
dragNode.x = currentPos.x - lidGraphics.width / 2;
dragNode.y = currentPos.y - lidGraphics.height / 2;
}
});
self.on('up', function (obj) {
dragNode = null;
});
});
var gameResetCount = 0;
var gameDoubleClickSolve = false;
var gameAxeSolve = false;
var gameSwipeSolve = false;
var gameSliceSolve = false;
var gameButtonSolve = false;
var gameDrainSolve = false;
var Game = Container.expand(function () {
var self = Container.call(this);
gameResetCount += 1;
console.log('Game Reset', gameResetCount);
console.log('DoubleClickSolve', gameDoubleClickSolve);
console.log('AxeSolve', gameAxeSolve);
console.log('SwipeSolve', gameSwipeSolve);
console.log('SliceSolve', gameSliceSolve);
console.log('ButtonSolve', gameButtonSolve);
console.log('DrainSolve', gameDrainSolve);
self.axeIntersected = false;
var axe = self.addChild(new Axe());
var axeLayers = self.addChild(new AxeLayers());
axeLayers.x = axe.x = LK.stage.width - axe.width / 2 - 100 + 200;
axeLayers.y = axe.y = LK.stage.height - axe.height / 2 - 100 + 200;
axe.zIndex = -1;
var gameSolvesScore = gameDoubleClickSolve + gameAxeSolve + gameSwipeSolve + gameSliceSolve + gameButtonSolve + gameDrainSolve;
LK.gui.topCenter.removeChildren();
var scoreIcon = new ScoreIcon();
scoreIcon.x = -80;
scoreIcon.y += 37;
LK.gui.topCenter.addChild(scoreIcon);
var scoreMessage = new Text2(gameSolvesScore + ' / 6', {
size: 60,
fill: '#ffffff'
});
scoreMessage.anchor.set(0.5, 0);
scoreMessage.x = scoreIcon.width / 2 + 10;
LK.gui.topCenter.addChild(scoreMessage);
var messageText = new Text2('(Open the box to find out...)', {
size: 60,
fill: '#ffffff'
});
messageText.anchor.set(.5, .5);
messageText.y += 1500;
LK.gui.topCenter.addChild(messageText);
var kitty = self.addChild(new Kitty());
self.isDead = Math.random() < 0.5;
kitty.x = LK.stage.width / 2;
kitty.y = LK.stage.height / 2 - 100;
var shadow = self.addChild(new Shadow());
shadow.x = kitty.x;
shadow.y = kitty.y + 250;
var deadkitty = self.addChild(new DeadKitty());
deadkitty.x = LK.stage.width / 2;
deadkitty.y = LK.stage.height / 2 - 100;
var cap = self.addChild(new Cap());
cap.x = 300;
cap.y = 2400;
var lid = self.addChild(new Lid());
lid.x = cap.x;
lid.y = cap.y;
var redbutton = self.addChild(new RedButton());
redbutton.x = LK.stage.width / 2;
redbutton.y = 600;
redbutton.on('down', function () {
redbutton.isTouched = true;
});
var deadoralivemessage = self.addChild(new DeadoraliveMessage());
deadoralivemessage.x = LK.stage.width / 2;
deadoralivemessage.y = 600;
var deadMessage = self.addChild(new DeadMessage());
deadMessage.x = LK.stage.width / 2;
deadMessage.y = LK.stage.height - 700 - deadMessage.height / 2;
deadMessage.visible = false;
var aliveMessage = self.addChild(new AliveMessage());
aliveMessage.x = LK.stage.width / 2;
aliveMessage.y = LK.stage.height - 700 - aliveMessage.height / 2;
aliveMessage.visible = false;
var box = self.addChild(new Box());
box.x = LK.stage.width / 2;
box.y = LK.stage.height / 2;
var finalScreen = self.addChild(new FinalScreen());
finalScreen.visible = false;
if (self.isDead) {
kitty.visible = false;
deadkitty.visible = true;
} else {
kitty.visible = true;
deadkitty.visible = false;
}
LK.on('tick', function () {
if (gameSolvesScore === 6) {
finalScreen.visible = true;
messageText.setText('');
LK.setTimeout(function () {
LK.showGameOver();
finalScreen.visible = false;
}, 5000);
}
if (redbutton.isTouched) {
if (box) {
box.enlargeBox();
box = null;
LK.setTimeout(function () {
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
}, 2000);
gameButtonSolve = true;
LK.setTimeout(function () {
messageText.setText('(BOOOM! Nice one...still more to find...)');
}, 1500);
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 5000);
}
redbutton.isTouched = false;
}
if (axe.intersects(box) && !self.axeIntersected) {
gameAxeSolve = true;
self.axeIntersected = true;
messageText.setText('(Chop chop! Is there any other way left?)');
box.explode();
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 3000);
}
if (box && box.isDoubleClicked) {
messageText.setText('(Double click...how original! Try a different way!)');
gameDoubleClickSolve = true;
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 3000);
box.destroy();
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
}
if (box && cap.x < 1) {
box.spinAndShrink();
messageText.setText('(Down the drain! I bet you can find another way...)');
gameDrainSolve = true;
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 3000);
}
if (box && (box.y + box.height < 0 || box.y > LK.stage.height || cap.y + cap.height < 0 || cap.y > LK.stage.height || cap.x < 1)) {
messageText.setText('(Swipe up, classic...Try again!)');
gameSwipeSolve = true;
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 3000);
}
if (box && box.isSliced) {
messageText.setText('(Clean cut! Try something else...)');
gameSliceSolve = true;
LK.setTimeout(function () {
LK.stage.removeChildren();
console.log('Game is restarted');
var newGame = new Game();
LK.stage.addChild(newGame);
messageText.setText('');
}, 3000);
box.destroy();
box = null;
if (self.isDead) {
deadMessage.visible = true;
} else {
aliveMessage.visible = true;
}
}
});
});
8-bit. cartoon. red button. do not touch! Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit. cartoon. black tub stopper with chain. in game asset.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
8-bit. cartoon. axe. in game asset. no shadow.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Break in case of emergency square. Ax drawing inside. simple. 8-bit. cartoon. blackand white.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Delete