From 10d101e5fee782f6370c93ac2e39ebc96054ea4b Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sat, 19 Jul 2014 11:58:25 +0200 Subject: Fixed animation issue on players --- assets/images/player-a-spritesheet.svg | 76 ++++++++++++++++++++++++++++++++++ assets/images/player-b-spritesheet.svg | 76 ++++++++++++++++++++++++++++++++++ game/prefabs/player.js | 11 +++-- game/states/play.js | 18 +++++--- game/states/preload.js | 6 +-- 5 files changed, 174 insertions(+), 13 deletions(-) create mode 100644 assets/images/player-a-spritesheet.svg create mode 100644 assets/images/player-b-spritesheet.svg diff --git a/assets/images/player-a-spritesheet.svg b/assets/images/player-a-spritesheet.svg new file mode 100644 index 0000000..bc2ad19 --- /dev/null +++ b/assets/images/player-a-spritesheet.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/assets/images/player-b-spritesheet.svg b/assets/images/player-b-spritesheet.svg new file mode 100644 index 0000000..33cf5a2 --- /dev/null +++ b/assets/images/player-b-spritesheet.svg @@ -0,0 +1,76 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/game/prefabs/player.js b/game/prefabs/player.js index 98179d9..95ea761 100644 --- a/game/prefabs/player.js +++ b/game/prefabs/player.js @@ -2,6 +2,9 @@ var Player = function(game, x, y, key, frame) { Phaser.Sprite.call(this, game, x, y, key, frame); + this.animations.add('active', [0]); + this.animations.add('waiting', [1]); + this.baseKey = key; this.moving = false; this.scale = {x: 0.01, y: 0.01}; @@ -11,16 +14,16 @@ var Player = function(game, x, y, key, frame) { this.score = 0; this.isMyTurn = false; + this.animIsMyTurn = true; }; Player.prototype = Object.create(Phaser.Sprite.prototype); Player.prototype.constructor = Player; Player.prototype.update = function() { - var newKey = this.baseKey + (this.isMyTurn ? '' : '-dim'); - if (this.key !== newKey) { - console.log('Setting sprite to ' + newKey); - this.loadTexture(newKey); + if (this.isMyTurn !== this.animIsMyTurn) { + this.animIsMyTurn = this.isMyTurn; + this.play(this.animIsMyTurn ? 'active' : 'waiting'); } }; diff --git a/game/states/play.js b/game/states/play.js index aed4f90..1d13e0b 100644 --- a/game/states/play.js +++ b/game/states/play.js @@ -71,9 +71,9 @@ Play.prototype = { } }, readLevelFile: function() { - this.walls = this.game.add.group(); this.pills = this.game.add.group(); this.players = this.game.add.group(); + this.walls = this.game.add.group(); var levelText = this.game.cache.getText('level'); var splitRows = levelText.split('\n'); @@ -139,15 +139,23 @@ Play.prototype = { this.game.input.keyboard.addKey(this.playerAControls.down).onDown.add(this.movePlayer.bind(this, this.playerA, 0, 1), this); this.game.input.keyboard.addKey(this.playerAControls.left).onDown.add(this.movePlayer.bind(this, this.playerA, -1, 0), this); this.game.input.keyboard.addKey(this.playerAControls.right).onDown.add(this.movePlayer.bind(this, this.playerA, 1, 0), this); - padA.getButton(Phaser.Gamepad.XBOX360_DPAD_UP).onDown.add(this.movePlayer.bind(this, this.playerA, 0, -1), this); - padA.getButton(Phaser.Gamepad.XBOX360_DPAD_DOWN).onDown.add(this.movePlayer.bind(this, this.playerA, 0, 1), this); - padA.getButton(Phaser.Gamepad.XBOX360_DPAD_LEFT).onDown.add(this.movePlayer.bind(this, this.playerA, -1, 0), this); - padA.getButton(Phaser.Gamepad.XBOX360_DPAD_RIGHT).onDown.add(this.movePlayer.bind(this, this.playerA, 1, 0), this); + if (padA.connected) { + padA.getButton(Phaser.Gamepad.XBOX360_DPAD_UP).onDown.add(this.movePlayer.bind(this, this.playerA, 0, -1), this); + padA.getButton(Phaser.Gamepad.XBOX360_DPAD_DOWN).onDown.add(this.movePlayer.bind(this, this.playerA, 0, 1), this); + padA.getButton(Phaser.Gamepad.XBOX360_DPAD_LEFT).onDown.add(this.movePlayer.bind(this, this.playerA, -1, 0), this); + padA.getButton(Phaser.Gamepad.XBOX360_DPAD_RIGHT).onDown.add(this.movePlayer.bind(this, this.playerA, 1, 0), this); + } this.game.input.keyboard.addKey(this.playerBControls.up).onDown.add(this.movePlayer.bind(this, this.playerB, 0, -1), this); this.game.input.keyboard.addKey(this.playerBControls.down).onDown.add(this.movePlayer.bind(this, this.playerB, 0, 1), this); this.game.input.keyboard.addKey(this.playerBControls.left).onDown.add(this.movePlayer.bind(this, this.playerB, -1, 0), this); this.game.input.keyboard.addKey(this.playerBControls.right).onDown.add(this.movePlayer.bind(this, this.playerB, 1, 0), this); + if (padB.connected) { + padB.getButton(Phaser.Gamepad.XBOX360_DPAD_UP).onDown.add(this.movePlayer.bind(this, this.playerB, 0, -1), this); + padB.getButton(Phaser.Gamepad.XBOX360_DPAD_DOWN).onDown.add(this.movePlayer.bind(this, this.playerB, 0, 1), this); + padB.getButton(Phaser.Gamepad.XBOX360_DPAD_LEFT).onDown.add(this.movePlayer.bind(this, this.playerB, -1, 0), this); + padB.getButton(Phaser.Gamepad.XBOX360_DPAD_RIGHT).onDown.add(this.movePlayer.bind(this, this.playerB, 1, 0), this); + } }, movePlayer: function(player, deltaX, deltaY) { var newX = player.x + deltaX; diff --git a/game/states/preload.js b/game/states/preload.js index 7d9b9d3..2ffc179 100644 --- a/game/states/preload.js +++ b/game/states/preload.js @@ -13,10 +13,8 @@ Preload.prototype = { this.load.onLoadComplete.addOnce(this.onLoadComplete, this); this.load.setPreloadSprite(this.asset); this.load.image('wall', 'assets/images/wall.svg'); - this.load.image('player-a', 'assets/images/player-a.svg'); - this.load.image('player-a-dim', 'assets/images/player-a-dim.svg'); - this.load.image('player-b', 'assets/images/player-b.svg'); - this.load.image('player-b-dim', 'assets/images/player-b-dim.svg'); + this.load.spritesheet('player-a', 'assets/images/player-a-spritesheet.svg', 100, 100); + this.load.spritesheet('player-b', 'assets/images/player-b-spritesheet.svg', 100, 100); this.load.image('pill', 'assets/images/pill.svg'); this.load.image('bonus-pill', 'assets/images/bonus-pill.svg'); -- cgit v1.2.3