Attempt at adding orientation based input
authorJustin Worthe <justin.worthe@entelect.co.za>
Thu, 31 Jul 2014 14:45:33 +0000 (16:45 +0200)
committerJustin Worthe <justin.worthe@entelect.co.za>
Thu, 31 Jul 2014 14:45:33 +0000 (16:45 +0200)
game/main.js
game/plugins/orientation.js [new file with mode: 0644]
game/states/play.js
package.json
templates/_main.js.tpl

index e2812da..a44c949 100644 (file)
@@ -4,6 +4,9 @@
 window.onload = function () {
   var game = new Phaser.Game(1100, 950, Phaser.AUTO, 'interactive-pacbot');
 
+  var Orientation = require('./plugins/orientation');
+  game.orientation = new Orientation();
+
   // Game States
   game.state.add('boot', require('./states/boot'));
   game.state.add('gameover', require('./states/gameover'));
diff --git a/game/plugins/orientation.js b/game/plugins/orientation.js
new file mode 100644 (file)
index 0000000..77ad9fc
--- /dev/null
@@ -0,0 +1,38 @@
+'use strict';
+
+var Orientation = function() {
+       this.onLeft = new Phaser.Signal();
+       this.onRight = new Phaser.Signal();
+       this.onUp = new Phaser.Signal();
+       this.onDown = new Phaser.Signal();
+
+       var previousEvent = {
+               gamma: 0,
+               beta: 0
+       };
+
+       var threshhold = 15;
+
+       var processOrientationEvent = function(event) {
+               if (event.gamma < -threshhold && previousEvent.gamma >= -threshhold) {
+                       this.onLeft.dispatch();
+               }
+               if (event.gamma > threshhold && previousEvent.gamma <= threshhold) {
+                       this.onRight.dispatch();
+               }
+               if (event.beta < -threshhold && previousEvent.beta >= -threshhold) {
+                       this.onUp.dispatch();
+               }
+               if (event.beta > threshhold && previousEvent.beta <= threshhold) {
+                       this.onDown.dispatch();
+               }
+
+
+               previousEvent = event;
+       }
+
+       window.addEventListener('deviceorientation', processOrientationEvent);
+}
+
+
+module.exports = Orientation;
index 1c4a926..6ea7611 100644 (file)
@@ -183,6 +183,19 @@ Play.prototype = {
     addKeyCaptures(this.playerBControls, this.game.input.keyboard);
 
     this.game.input.gamepad.start();
+
+    this.game.orientation.onLeft.add(function() {
+      this.movePlayer(this.players.children[this.playerTurn], -1, 0);
+    }, this);
+    this.game.orientation.onRight.add(function() {
+      this.movePlayer(this.players.children[this.playerTurn], 1, 0);
+    }, this);
+    this.game.orientation.onUp.add(function() {
+      this.movePlayer(this.players.children[this.playerTurn], 0, -1);
+    }, this);
+    this.game.orientation.onDown.add(function() {
+      this.movePlayer(this.players.children[this.playerTurn], 0, 1);
+    }, this);
   },
   movePlayer: function(player, deltaX, deltaY) {
     var newX = player.x + deltaX;
index cd6c109..0128a7c 100644 (file)
@@ -24,8 +24,8 @@
     "title": "Interactive Pacbot",
     "toolbar": false,
     "frame": true,
-    "width": 820,
-    "height": 620,
+    "width": 1100,
+    "height": 950,
     "position": "center"
   }
 }
\ No newline at end of file
index 0b1ddb9..6a559db 100644 (file)
@@ -4,6 +4,9 @@
 window.onload = function () {
   var game = new Phaser.Game(<%= gameWidth %>, <%= gameHeight %>, Phaser.AUTO, '<%= _.slugify(projectName) %>');
 
+  var Orientation = require('./plugins/orientation');
+  game.orientation = new Orientation();
+
   // Game States
   <% _.forEach(gameStates, function(gameState) {  %>game.state.add('<%= gameState.shortName %>', require('./states/<%= gameState.shortName %>'));
   <% }); %>