void InGameState::checkAndResolveDynamicCollision() { Circle avatarBC(m_avatar->getPostion(), m_avatar->getRadius() / 4); for(unsigned int index = 0; index < m_monsters.size(); index++) { Monster* monster = m_monsters.at(index); if (!monster->isDead()) { Circle monsterBC(monster->getPostion(),monster->getRadius() / 4); if(avatarBC.collidesWith(monsterBC)) { if (m_stats->isSuperMode()) { monster->kill(); m_stats->addScore(MONSTER_KILLED); } else m_avatar->kill(); } } for (unsigned int bomb = 0; bomb < m_bombs.size(); bomb++) { if (m_bombs[bomb]->isColliding(monster) && !monster->isDead()) { monster->kill(); m_stats->addScore(MONSTER_KILLED); } } } for (unsigned int bomb = 0; bomb < m_bombs.size(); bomb++) { if (m_bombs[bomb]->isColliding(m_avatar)) { m_avatar->kill(); } } if (!m_avatar->inAir()) { for(unsigned int index = 0; index < m_traps.size(); index++) { Trap* trap = m_traps.at(index); Circle trapBC(trap->getPostion(),trap->getRadius() / 8); if(avatarBC.collidesWith(trapBC)) { m_avatar->kill(); } } } }