From 2a1133773d5420688447983dc38c9ebccf2ba50d Mon Sep 17 00:00:00 2001 From: newagebegins Date: Sun, 24 Jun 2012 20:52:54 +1100 Subject: [PATCH] make tanks collide with water --- spec/TankSpec.js | 10 ++++++++++ src/Tank.js | 8 +++++++- src/Water.js | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/spec/TankSpec.js b/spec/TankSpec.js index a780d3b..0a95214 100644 --- a/spec/TankSpec.js +++ b/spec/TankSpec.js @@ -127,6 +127,16 @@ describe("Tank", function () { expect(tank.resolveCollisionWithSprite).toHaveBeenCalledWith(base); }); + it("should resolve collision when collides with water", function () { + spyOn(tank, 'resolveCollisionWithSprite'); + var water = new Water(eventManager); + tank.notify({ + 'name': CollisionDetector.Event.COLLISION, + 'initiator': tank, + 'sprite': water}); + expect(tank.resolveCollisionWithSprite).toHaveBeenCalledWith(water); + }); + describe("collision with a tank", function () { it("normal tank", function () { spyOn(tank, 'resolveCollisionWithSprite'); diff --git a/src/Tank.js b/src/Tank.js index dbafe05..65e88da 100644 --- a/src/Tank.js +++ b/src/Tank.js @@ -166,7 +166,7 @@ Tank.prototype.notify = function (event) { if (event.name == Bullet.Event.DESTROYED && event.tank == this) { this._bullets--; } - else if (this._wallCollision(event) || this._tankCollision(event) || this._baseCollision(event)) { + else if (this._wallCollision(event) || this._tankCollision(event) || this._baseCollision(event) || this._waterCollision(event)) { this.resolveCollisionWithSprite(event.sprite); } else if (this._bulletCollision(event) && this.canBeDestroyed()) { @@ -402,6 +402,12 @@ Tank.prototype._baseCollision = function (event) { event.sprite instanceof Base; }; +Tank.prototype._waterCollision = function (event) { + return event.name == CollisionDetector.Event.COLLISION && + event.initiator === this && + event.sprite instanceof Water; +}; + Tank.prototype._tankCollision = function (event) { return event.name == CollisionDetector.Event.COLLISION && event.initiator === this && diff --git a/src/Water.js b/src/Water.js index 109ae16..f88fa52 100644 --- a/src/Water.js +++ b/src/Water.js @@ -1,6 +1,8 @@ function Water(eventManager) { Sprite.call(this, eventManager); this._animation = new Animation([1,2], 30, true); + this._w = Globals.UNIT_SIZE; + this._h = Globals.UNIT_SIZE; } Water.subclass(Sprite);