Skip to content

Commit

Permalink
add TankExplosion#destroyHook
Browse files Browse the repository at this point in the history
  • Loading branch information
newagebegins committed Jun 15, 2012
1 parent 4634f27 commit 83093cc
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 2 deletions.
1 change: 1 addition & 0 deletions SpecRunner.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
<script type="text/javascript" src="spec/EnemyFactorySpec.js"></script>
<script type="text/javascript" src="spec/AnimationSpec.js"></script>
<script type="text/javascript" src="spec/TankExplosionFactorySpec.js"></script>
<script type="text/javascript" src="spec/TankExplosionSpec.js"></script>

<!-- source files -->
<script type="text/javascript" src="src/Utils.js"></script>
Expand Down
1 change: 1 addition & 0 deletions spec/TankExplosionFactorySpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,6 @@ describe("TankExplosionFactory", function () {
var explosion = factory.create(tank);
expect(explosion instanceof TankExplosion).toBeTruthy();
expect(explosion.getRect()).toEqual(new Rect(4, 5, EXPLOSION_SIZE, EXPLOSION_SIZE));
expect(explosion.getTank()).toBe(tank);
});
});
9 changes: 9 additions & 0 deletions spec/TankExplosionSpec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
describe("TankExplosion", function () {
it("#destroyHook", function () {
var eventManager = new EventManager();
spyOn(eventManager, 'fireEvent');
var explosion = new TankExplosion(eventManager);
explosion.destroyHook();
expect(eventManager.fireEvent).toHaveBeenCalledWith({'name': TankExplosion.Event.DESTROYED, 'explosion': explosion});
});
});
14 changes: 13 additions & 1 deletion src/TankExplosion.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
function TankExplosion(eventManager) {
function TankExplosion(eventManager, tank) {
Explosion.call(this, eventManager);
this._tank = tank;
this._animation = new Animation([1,2,3,4,5,3], 3);
}

TankExplosion.subclass(Explosion);

TankExplosion.Event = {};
TankExplosion.Event.DESTROYED = 'TankExplosion.Event.DESTROYED';

TankExplosion.prototype.getImage = function () {
return 'tank_explosion_' + this._animation.getFrame();
};

TankExplosion.prototype.destroyHook = function () {
this._eventManager.fireEvent({'name': TankExplosion.Event.DESTROYED, 'explosion': this});
};

TankExplosion.prototype.getTank = function () {
return this._tank;
};
2 changes: 1 addition & 1 deletion src/TankExplosionFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ TankExplosionFactory.prototype.notify = function (event) {
};

TankExplosionFactory.prototype.create = function (tank) {
var explosion = new TankExplosion(this._eventManager);
var explosion = new TankExplosion(this._eventManager, tank);
var tankCenter = tank.getCenter();
explosion.setRect(new Rect(
tankCenter.getX() - this._explosionSize / 2,
Expand Down

0 comments on commit 83093cc

Please sign in to comment.