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(); } } }