From 01e611f58651bb1b04da7694016fe45cebf861b0 Mon Sep 17 00:00:00 2001
From: MegaBrutal <code+git@megabrutal.com>
Date: Thu, 28 Dec 2017 00:45:00 +0100
Subject: [PATCH] Cleanup: Monster also uses JusticeBlaster as a weapon

To further simplify the code, the Monster class should also use
the JusticeBlaster weapon class as its weapon.

	modified:   ld40.js
---
 ld40.js | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/ld40.js b/ld40.js
index d32c5ff..6a1eb77 100644
--- a/ld40.js
+++ b/ld40.js
@@ -22,7 +22,8 @@
         const MODE_DETERMINATION	=      0;
         const MODE_JUSTICE		=      1;
         const SPEED_PLAYER		=    150;
-        const SPEED_PROJECTILE		=    500;
+        const SPEED_PPROJECTILE		=    500;
+        const SPEED_MPROJECTILE		=    200;
 
         window.addEventListener("keydown", function(e) {
             // Prevent default browser action for arrows and spacebar
@@ -46,6 +47,7 @@
                 this.speed = 150;
                 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));
             }
 
@@ -144,10 +146,9 @@
                 this.anchor.setTo(0.5, 0.5);
                 this.health = MONSTER_HEALTH;
                 this.nexttime_shoot = game.time.now;
-                this.weapon = new Phaser.Weapon(game, this);
-                this.weapon.x = x;
-                this.weapon.y = y;
-                this.weapon.createBullets(20, 'projectile');
+                this.weapon = new JusticeBlaster(game, this);
+                this.weapon.bulletSpeed = SPEED_MPROJECTILE;
+                this.weapon.trackSprite(this);
             }
 
             enablePhysics() {
@@ -171,7 +172,7 @@
                     this.weapon.fireAtSprite(player);
                     this.nexttime_shoot = game.time.now + (WAIT_MONSTERSHOOT / 2) + (Math.random() * WAIT_MONSTERSHOOT);
                 }
-                game.physics.arcade.overlap(player, this.weapon.bullets, function(p,b) { p.damage(p.love); });
+                game.physics.arcade.overlap(player, this.weapon.bullets, function(p,b) { b.overlap_player(p); });
             }
         }
 
@@ -196,13 +197,17 @@
                 entity.damage(player.love);
                 this.kill();
             }
+
+            overlap_player(player) {
+                player.damage(player.love);
+                this.kill();
+            }
         }
 
         class JusticeBlaster extends Phaser.Weapon {
             constructor(game, parent) {
                 super(game, parent);
                 this.bulletClass = Justice;
-                this.bulletSpeed = SPEED_PROJECTILE;
                 this.multiFire = true;
                 this.createBullets(100, null);
             }
-- 
2.43.0