예제 #1
0
void
WeakBlock::spreadHit()
{
  //Destroy adjacent weakblocks if applicable
  if(linked) {
    Sector* sector = Sector::current();
    if (!sector) {
      log_debug << "no current sector" << std::endl;
      return;
    }
    for(Sector::GameObjects::iterator i = sector->gameobjects.begin(); i != sector->gameobjects.end(); ++i) {
      WeakBlock* wb = dynamic_cast<WeakBlock*>(i->get());
      if (!wb) continue;
      if (wb == this) continue;
      if (wb->state != STATE_NORMAL) continue;
      float dx = fabsf(wb->get_pos().x - bbox.p1.x);
      float dy = fabsf(wb->get_pos().y - bbox.p1.y);
      if ((dx <= 32.5) && (dy <= 32.5)) wb->startBurning();
    }
  }
}