From 7a4bd52974b755da8ce17b16a2b8fd3d23382f80 Mon Sep 17 00:00:00 2001 From: MegaBrutal Date: Tue, 16 May 2017 23:40:45 +0200 Subject: [PATCH] Added win condition This and possible future commits are post-compo updates. modified: ld38.js --- ld38.js | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/ld38.js b/ld38.js index f99fd63..4179b4a 100644 --- a/ld38.js +++ b/ld38.js @@ -1,4 +1,5 @@ var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update }); + var helptext, wintext; var walls; var gems; var shrinklevel = 0; @@ -7,6 +8,7 @@ const WAIT_GEM = 2000; const WALL_THICKNESS = 32; const MAX_GEMS = 16; + const WIN_CONDITION = 4; var newWorldStartX; var newWorldEndX; @@ -48,6 +50,12 @@ this.isActivated = false; } + enablePhysics() { + super.enablePhysics(); + this.body.bounce.y = 0.75; + this.body.bounce.x = 0.75; + } + activate() { this.isActivated = true; this.loadTexture('gem_active'); @@ -59,10 +67,6 @@ } } - function sign(n) { - if (n >= 0) { return 1 } else { return -1 }; - } - function preload () { game.load.image('wall', 'wall.png'); @@ -118,8 +122,32 @@ var isAllActive = true; gems.children.forEach(function(gem) { if (!gem.isActivated) { isAllActive = false; }}); - if (isAllActive) { + if (isAllActive && (gems.length > 0)) { + console.log(shrinklevel); world_shrink(); + helptext.kill(); + if (shrinklevel == WIN_CONDITION) { + wintext = game.add.text(0, 0, "YOU WON!\nFinally you are free...", { align: 'center', fill: '#ff00ff', font: 'Ubuntu Mono', fontSize: 18, fontWeight: 'bold' }); + wintext.x = (game.world.width - wintext.width) / 2; + wintext.y = (game.world.height - wintext.height) / 2; + walls.children.forEach(function(wall) { wall.body.immovable = false; }); + var i = 0; + gems.children.forEach(function(gem) { + switch(i % 4) { + case 0: gem.body.gravity.y = 100; break; + case 1: gem.body.gravity.x = 100; break; + case 2: gem.body.gravity.y = -100; break; + case 3: gem.body.gravity.x = -100; break; + } + i++ + }); + } + else if (shrinklevel > WIN_CONDITION) { + // Kill everything. + walls.removeAll(true); + gems.removeAll(true); + wintext.kill(); + } }; if ((game.time.now - player.lastmovetime) > WAIT_KEY) player.body.velocity.x = player.body.velocity.y = 0; @@ -157,7 +185,7 @@ } function gem_isInteractable(player, gem) { - return (game.time.now - gem.lastInteraction) > WAIT_GEM; + return ((game.time.now - gem.lastInteraction) > WAIT_GEM) && (shrinklevel <= WIN_CONDITION); } function gem_overlap(player, gem) { @@ -195,4 +223,6 @@ } gems.children.forEach(relocateGem); + shrinklevel++; + } -- 2.34.1