Pass player object in to BonusBlock rather than using Sector's global one.
authorMathnerd314 <man.is.allan@gmail.com>
Sun, 7 Mar 2010 23:44:35 +0000 (23:44 +0000)
committerMathnerd314 <man.is.allan@gmail.com>
Sun, 7 Mar 2010 23:44:35 +0000 (23:44 +0000)
SVN-Revision: 6575

src/object/bonus_block.cpp
src/object/bonus_block.hpp

index 9a41175..2fb6bc8 100644 (file)
@@ -114,9 +114,9 @@ BonusBlock::~BonusBlock()
 }
 
 void
-BonusBlock::hit(Player)
+BonusBlock::hit(Player & player)
 {
-  try_open();
+  try_open(player);
 }
 
 HitResponse
@@ -124,7 +124,7 @@ BonusBlock::collision(GameObject& other, const CollisionHit& hit){
 
   Player* player = dynamic_cast<Player*> (&other);
   if (player) {
-    if (player->does_buttjump) try_open();
+    if (player->does_buttjump) try_open(*player);
   }
 
   BadGuy* badguy = dynamic_cast<BadGuy*> (&other);
@@ -133,21 +133,21 @@ BonusBlock::collision(GameObject& other, const CollisionHit& hit){
     // Badguy's bottom has to be below the top of the block
     // SHIFT_DELTA is required to slide over one tile gaps.
     if( badguy->can_break() && ( badguy->get_bbox().get_bottom() > get_bbox().get_top() + SHIFT_DELTA ) ){
-      try_open();
+      try_open(*player);
     }
   }
   Portable* portable = dynamic_cast<Portable*> (&other);
   if(portable) {
     MovingObject* moving = dynamic_cast<MovingObject*> (&other);
     if(moving->get_bbox().get_top() > get_bbox().get_bottom() - SHIFT_DELTA) {
-      try_open();
+      try_open(*player);
     }
   }
   return Block::collision(other, hit);
 }
 
 void
-BonusBlock::try_open()
+BonusBlock::try_open(Player & player)
 {
   if(sprite->get_action() == "empty") {
     sound_manager->play("sounds/brick.wav");
@@ -156,8 +156,6 @@ BonusBlock::try_open()
 
   Sector* sector = Sector::current();
   assert(sector);
-  assert(sector->player);
-  Player& player = *(sector->player);
   Direction direction = (player.get_bbox().get_middle().x > get_bbox().get_middle().x) ? LEFT : RIGHT;
 
   switch(contents) {
index 98eb747..4721929 100644 (file)
@@ -27,7 +27,7 @@ public:
   virtual ~BonusBlock();
   HitResponse collision(GameObject& other, const CollisionHit& hit);
 
-  void try_open();
+  void try_open(Player & player);
 
   enum Contents {
     CONTENT_COIN,