Add particle effect for player death
authorMegaBrutal <code+git@megabrutal.com>
Wed, 3 Jan 2018 13:40:00 +0000 (14:40 +0100)
committerMegaBrutal <code+git@megabrutal.com>
Wed, 3 Jan 2018 13:40:00 +0000 (14:40 +0100)
Added a simple particle effect to visualize how the player's soul
shatters upon death. The Game Over screen had to be delayed as the
player needs some time to see the particle effect.

modified:   ld40.js
new file:   soulbreak.png
new file:   soulbreak.svg

ld40.js
soulbreak.png [new file with mode: 0644]
soulbreak.svg [new file with mode: 0644]

diff --git a/ld40.js b/ld40.js
index 01a65ce0f788eb5b318ca822f083dbbffcac5b34..7bd582e1413288af1753a4c0c22bfebe3fec2a60 100644 (file)
--- a/ld40.js
+++ b/ld40.js
@@ -14,6 +14,7 @@
         const WAIT_MONSTERSHOOT                =    500;
         const WAIT_MONSTERSPAWN                =  20000;
         const WAIT_DETERMINATION       =   4000;
         const WAIT_MONSTERSHOOT                =    500;
         const WAIT_MONSTERSPAWN                =  20000;
         const WAIT_DETERMINATION       =   4000;
+        const WAIT_DEATH               =   4000;
         const WALL_THICKNESS           =     16;
         const WALL_BORDER              =      8;
         const WALL_BORDERBOTTOM                =     48;
         const WALL_THICKNESS           =     16;
         const WALL_BORDER              =      8;
         const WALL_BORDERBOTTOM                =     48;
                 this.lasttime_shoot = 0;
                 this.lasttime_mode = 0;
                 this.lasttime_damage = 0;
                 this.lasttime_shoot = 0;
                 this.lasttime_mode = 0;
                 this.lasttime_damage = 0;
+                this.lasttime_death = 0;
                 this.speed = SPEED_PLAYER;
                 this.switchmode(MODE_DETERMINATION);
                 this.weapon = new JusticeBlaster(game, this);
                 this.weapon.bulletSpeed = SPEED_PPROJECTILE;
                 this.healthBar = new HealthBar(60, game.world.height - (WALL_BORDERBOTTOM / 2));
                 this.speed = SPEED_PLAYER;
                 this.switchmode(MODE_DETERMINATION);
                 this.weapon = new JusticeBlaster(game, this);
                 this.weapon.bulletSpeed = SPEED_PPROJECTILE;
                 this.healthBar = new HealthBar(60, game.world.height - (WALL_BORDERBOTTOM / 2));
+                this.soulbreakEmitter = this.game.add.emitter(0, 0, 8);
+                this.soulbreakEmitter.gravity = 1000;
+                this.soulbreakEmitter.setXSpeed(-300, 300);
+                this.soulbreakEmitter.makeParticles('soulbreak');
             }
 
             enablePhysics() {
             }
 
             enablePhysics() {
                 this.health = 0;
                 this.healthBar.update(this.love, this.maxHealth, this.health);
                 super.kill();
                 this.health = 0;
                 this.healthBar.update(this.love, this.maxHealth, this.health);
                 super.kill();
-                this.game.state.start('GameOver');
+                this.soulbreakEmitter.x = this.x;
+                this.soulbreakEmitter.y = this.y;
+                this.soulbreakEmitter.explode(2000, 8);
+                this.lasttime_death = this.game.time.now;
             }
 
             loveUp() {
             }
 
             loveUp() {
                 game.load.image('monster', 'monster.png');
                 game.load.image('determination', 'determination.png');
                 game.load.image('projectile', 'projectile.png');
                 game.load.image('monster', 'monster.png');
                 game.load.image('determination', 'determination.png');
                 game.load.image('projectile', 'projectile.png');
+                game.load.image('soulbreak', 'soulbreak.png');
 
             }
 
 
             }
 
 
                 if ((game.time.now - player.lastmovetime) > WAIT_KEY) player.body.velocity.x = player.body.velocity.y = 0;
 
 
                 if ((game.time.now - player.lastmovetime) > WAIT_KEY) player.body.velocity.x = player.body.velocity.y = 0;
 
+                if ((!player.alive) && (game.time.now > (player.lasttime_death + WAIT_DEATH)))
+                {
+                    game.state.start('GameOver');
+                }
+
             }
         }
 
             }
         }
 
diff --git a/soulbreak.png b/soulbreak.png
new file mode 100644 (file)
index 0000000..c8943ae
Binary files /dev/null and b/soulbreak.png differ
diff --git a/soulbreak.svg b/soulbreak.svg
new file mode 100644 (file)
index 0000000..de67fc1
--- /dev/null
@@ -0,0 +1,3 @@
+<svg height="10" width="10">
+  <circle cx="5" cy="5" r="2.5" stroke="black" stroke-width="0" fill="red" />
+</svg>