Rally X
ELEN3009 Project by Justin Wernick and David Schneider
source/logic/CollisionDetector.cpp
Go to the documentation of this file.
00001 #include "CollisionDetector.h"
00002 
00003 void CollisionDetector::checkCollisions(list<PlayerCar>& players, list<EnemyCar>& enemies, list<Checkpoint>& checkpoints, list<Rock>& rocks, list<Smokescreen>& smokescreens)
00004 {
00005     for (list<PlayerCar>::iterator playIter = players.begin(); playIter!=players.end(); ++playIter)
00006     {
00007         for (list<EnemyCar>::iterator enemyIter = enemies.begin(); enemyIter!=enemies.end(); ++enemyIter)
00008         {
00009             if ((abs(playIter->x() - enemyIter->x())<1)&&(abs(playIter->y() - enemyIter->y())<1))
00010             {
00011                 collision(*playIter, *enemyIter);
00012             }
00013         }
00014 
00015         for (list<Checkpoint>::iterator checkIter = checkpoints.begin(); checkIter!=checkpoints.end(); ++checkIter)
00016         {
00017             if ((abs(playIter->x() - checkIter->x())<1)&&(abs(playIter->y() - checkIter->y())<1))
00018             {
00019                 collision(*playIter, *checkIter);
00020             }
00021         }
00022 
00023         for (list<Rock>::iterator rockIter = rocks.begin(); rockIter!=rocks.end(); ++rockIter)
00024         {
00025             if ((abs(playIter->x() - rockIter->x())<1)&&(abs(playIter->y() - rockIter->y())<1))
00026             {
00027                 collision(*playIter, *rockIter);
00028             }
00029         }
00030     }
00031 
00032     for (list<EnemyCar>::iterator enemyIter = enemies.begin(); enemyIter!=enemies.end(); ++enemyIter)
00033     {
00034         for (list<Smokescreen>::iterator smokeIter = smokescreens.begin(); smokeIter!=smokescreens.end(); ++smokeIter)
00035         {
00036             if ((abs(enemyIter->x() - smokeIter->x())<1)&&(abs(enemyIter->y() - smokeIter->y())<1))
00037             {
00038                 collision(*enemyIter, *smokeIter);
00039             }
00040         }
00041     }
00042 }
00043 
00044 void CollisionDetector::collision(PlayerCar& player, Checkpoint& checkpoint)
00045 {
00046     player.gotCheckpoint();
00047     checkpoint.collect();
00048 }
00049 
00050 void CollisionDetector::collision(PlayerCar& player, Rock& rock)
00051 {
00052     player.crash();
00053 }
00054 
00055 void CollisionDetector::collision(PlayerCar& player, EnemyCar& enemy)
00056 {
00057     player.crash();
00058     enemy.crash();
00059 }
00060 
00061 void CollisionDetector::collision(EnemyCar& enemy, Smokescreen& smokescreen)
00062 {
00063     enemy.blind();
00064 }
 All Classes Files Functions Variables Typedefs Enumerations Enumerator