#include "CollisionDetector.h" void CollisionDetector::checkCollisions(list& players, list& enemies, list& checkpoints, list& rocks, list& smokescreens) { for (list::iterator playIter = players.begin(); playIter!=players.end(); ++playIter) { for (list::iterator enemyIter = enemies.begin(); enemyIter!=enemies.end(); ++enemyIter) { if ((abs(playIter->x() - enemyIter->x())<1)&&(abs(playIter->y() - enemyIter->y())<1)) { collision(*playIter, *enemyIter); } } for (list::iterator checkIter = checkpoints.begin(); checkIter!=checkpoints.end(); ++checkIter) { if ((abs(playIter->x() - checkIter->x())<1)&&(abs(playIter->y() - checkIter->y())<1)) { collision(*playIter, *checkIter); } } for (list::iterator rockIter = rocks.begin(); rockIter!=rocks.end(); ++rockIter) { if ((abs(playIter->x() - rockIter->x())<1)&&(abs(playIter->y() - rockIter->y())<1)) { collision(*playIter, *rockIter); } } } for (list::iterator enemyIter = enemies.begin(); enemyIter!=enemies.end(); ++enemyIter) { for (list::iterator smokeIter = smokescreens.begin(); smokeIter!=smokescreens.end(); ++smokeIter) { if ((abs(enemyIter->x() - smokeIter->x())<1)&&(abs(enemyIter->y() - smokeIter->y())<1)) { collision(*enemyIter, *smokeIter); } } } } void CollisionDetector::collision(PlayerCar& player, Checkpoint& checkpoint) { player.gotCheckpoint(); checkpoint.collect(); } void CollisionDetector::collision(PlayerCar& player, Rock& rock) { player.crash(); } void CollisionDetector::collision(PlayerCar& player, EnemyCar& enemy) { player.crash(); enemy.crash(); } void CollisionDetector::collision(EnemyCar& enemy, Smokescreen& smokescreen) { enemy.blind(); }