Add 'GamePlay' game state
authorMegaBrutal <code+git@megabrutal.com>
Tue, 2 Jan 2018 19:05:00 +0000 (20:05 +0100)
committerMegaBrutal <code+git@megabrutal.com>
Tue, 2 Jan 2018 19:05:00 +0000 (20:05 +0100)
This commit prepares the source code to use Phaser game states.
A default game state is already added. The main game functions
(preload, create, update) were moved into this game state.

This was necessary to add a Game Over state later.

modified:   ld40.js

ld40.js

diff --git a/ld40.js b/ld40.js
index 7bf03d7..dffcd50 100644 (file)
--- a/ld40.js
+++ b/ld40.js
@@ -1,4 +1,5 @@
-        var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update });
+        var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: function() { this.state.add('GamePlay', GamePlay, true); } });
+        var cursors;
         var player;
         var walls;
         var determinations;            // I know it's grammatically incorrect. :P
             }
         }
 
-        function preload () {
 
-            game.load.image('wall', 'wall.png');
-            game.load.image('player', 'player.png');
-            game.load.image('monster', 'monster.png');
-            game.load.image('determination', 'determination.png');
-            game.load.image('projectile', 'projectile.png');
+        class GamePlay extends Phaser.State {
 
-        }
-
-        function create () {
+            preload() {
 
-            game.world.setBounds(0, 0, 800, 600);
-            game.stage.backgroundColor = '#000000';
-            game.physics.startSystem(Phaser.Physics.ARCADE);
+                game.load.image('wall', 'wall.png');
+                game.load.image('player', 'player.png');
+                game.load.image('monster', 'monster.png');
+                game.load.image('determination', 'determination.png');
+                game.load.image('projectile', 'projectile.png');
 
-            walls = game.add.group();
-            walls.classType = Phaser.TileSprite;
-            walls.enableBody = true;
+            }
 
-            walls.add(game.add.tileSprite(WALL_BORDER, WALL_BORDER, game.world.width - (WALL_BORDER * 2), WALL_THICKNESS, 'wall'));
-            walls.add(game.add.tileSprite(WALL_BORDER, game.world.height - WALL_THICKNESS - WALL_BORDERBOTTOM, game.world.width - (WALL_BORDER * 2), WALL_THICKNESS, 'wall'));
-            walls.add(game.add.tileSprite(WALL_BORDER, WALL_BORDER, WALL_THICKNESS, game.world.height - WALL_BORDER - WALL_BORDERBOTTOM, 'wall'));
-            walls.add(game.add.tileSprite(game.world.width - WALL_THICKNESS - WALL_BORDER, WALL_BORDER, WALL_THICKNESS, game.world.height - WALL_BORDER - WALL_BORDERBOTTOM, 'wall'));
-            walls.children.forEach(function(wall) { wall.body.immovable = true; });
+            create() {
 
-            determinations = game.add.group();
-            nexttime_determination = Math.random() * WAIT_DETERMINATION;
+                game.world.setBounds(0, 0, 800, 600);
+                game.stage.backgroundColor = '#000000';
+                game.physics.startSystem(Phaser.Physics.ARCADE);
 
-            monsters = game.add.group();
-            nexttime_monsterspawn = WAIT_MONSTERSPAWN / 4;
+                walls = game.add.group();
+                walls.classType = Phaser.TileSprite;
+                walls.enableBody = true;
 
-            player = new Player(game.world.width / 2, game.world.height / 2);
-            player.enablePhysics();
-            game.add.existing(player);
-            game.camera.follow(player);
-            cursors = game.input.keyboard.createCursorKeys();
+                walls.add(game.add.tileSprite(WALL_BORDER, WALL_BORDER, game.world.width - (WALL_BORDER * 2), WALL_THICKNESS, 'wall'));
+                walls.add(game.add.tileSprite(WALL_BORDER, game.world.height - WALL_THICKNESS - WALL_BORDERBOTTOM, game.world.width - (WALL_BORDER * 2), WALL_THICKNESS, 'wall'));
+                walls.add(game.add.tileSprite(WALL_BORDER, WALL_BORDER, WALL_THICKNESS, game.world.height - WALL_BORDER - WALL_BORDERBOTTOM, 'wall'));
+                walls.add(game.add.tileSprite(game.world.width - WALL_THICKNESS - WALL_BORDER, WALL_BORDER, WALL_THICKNESS, game.world.height - WALL_BORDER - WALL_BORDERBOTTOM, 'wall'));
+                walls.children.forEach(function(wall) { wall.body.immovable = true; });
 
-        }
+                determinations = game.add.group();
+                nexttime_determination = Math.random() * WAIT_DETERMINATION;
 
-        function update () {
+                monsters = game.add.group();
+                nexttime_monsterspawn = WAIT_MONSTERSPAWN / 4;
 
-            game.physics.arcade.collide(player, walls);
-            game.physics.arcade.overlap(player, determinations, function(p,d) { p.overlap_determination(d); });
-            game.physics.arcade.overlap(player, monsters, function(p,m) { m.overlap_player(p); });
+                player = new Player(game.world.width / 2, game.world.height / 2);
+                player.enablePhysics();
+                game.add.existing(player);
+                game.camera.follow(player);
+                cursors = game.input.keyboard.createCursorKeys();
 
-            if (game.time.now > nexttime_determination)
-            {
-                var determination = new Determination((Math.random() * (game.world.width - ((WALL_THICKNESS + WALL_BORDER) * 4))) + ((WALL_THICKNESS + WALL_BORDER) * 2), (Math.random() * (game.world.height - ((WALL_THICKNESS + WALL_BORDER) * 4) - WALL_BORDERBOTTOM)) + ((WALL_THICKNESS + WALL_BORDER) * 2));
-                determination.enablePhysics();
-                determinations.add(determination);
-                nexttime_determination = game.time.now + (WAIT_DETERMINATION / 2) + (Math.random() * WAIT_DETERMINATION);
             }
 
-            if (game.time.now > nexttime_monsterspawn)
-            {
-                var monster = new Monster(Math.random() * game.world.width, Math.random() * game.world.height);
-                monster.enablePhysics();
-                monsters.add(monster);
-                var waittime = WAIT_MONSTERSPAWN - ((Math.random() * 2000) * player.love);
-                nexttime_monsterspawn = game.time.now + waittime;
-                console.log('Next monster in ' + waittime);
-            }
+            update() {
+
+                game.physics.arcade.collide(player, walls);
+                game.physics.arcade.overlap(player, determinations, function(p,d) { p.overlap_determination(d); });
+                game.physics.arcade.overlap(player, monsters, function(p,m) { m.overlap_player(p); });
 
-            if ((game.time.now - player.lastmovetime) > WAIT_KEY) player.body.velocity.x = player.body.velocity.y = 0;
+                if (game.time.now > nexttime_determination)
+                {
+                    var determination = new Determination((Math.random() * (game.world.width - ((WALL_THICKNESS + WALL_BORDER) * 4))) + ((WALL_THICKNESS + WALL_BORDER) * 2), (Math.random() * (game.world.height - ((WALL_THICKNESS + WALL_BORDER) * 4) - WALL_BORDERBOTTOM)) + ((WALL_THICKNESS + WALL_BORDER) * 2));
+                    determination.enablePhysics();
+                    determinations.add(determination);
+                    nexttime_determination = game.time.now + (WAIT_DETERMINATION / 2) + (Math.random() * WAIT_DETERMINATION);
+                }
 
+                if (game.time.now > nexttime_monsterspawn)
+                {
+                    var monster = new Monster(Math.random() * game.world.width, Math.random() * game.world.height);
+                    monster.enablePhysics();
+                    monsters.add(monster);
+                    var waittime = WAIT_MONSTERSPAWN - ((Math.random() * 2000) * player.love);
+                    nexttime_monsterspawn = game.time.now + waittime;
+                    console.log('Next monster in ' + waittime);
+                }
+
+                if ((game.time.now - player.lastmovetime) > WAIT_KEY) player.body.velocity.x = player.body.velocity.y = 0;
+
+            }
         }