You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
42 lines
1.3 KiB
#include <world.h>
|
|
struct CollisionEvent collisionDetect(int objYpos, int objXpos){
|
|
int i;
|
|
for(i=1; i<MAX_ENTITIES; i++){
|
|
if(allEntities[i].isAlive){
|
|
if(objYpos==allEntities[i].curYpos && objXpos==allEntities[i].curXpos){
|
|
struct CollisionEvent collisionEvent = {.collidedWithEntity=&allEntities[i]};
|
|
return collisionEvent;
|
|
}
|
|
}
|
|
}
|
|
for(i=0; i<MAX_ITEMS; i++){
|
|
if(allItems[i].isAlive){
|
|
if(objYpos==allItems[i].curYpos && objXpos==allItems[i].curXpos){
|
|
struct CollisionEvent collisionEvent = {.collidedWithItem=&allItems[i]};
|
|
return collisionEvent;
|
|
}
|
|
}
|
|
}
|
|
struct CollisionEvent collisionEvent = {.collidedWithItem=0,.collidedWithEntity=0};
|
|
return collisionEvent;
|
|
}
|
|
|
|
void checkPlayerCollisions(){
|
|
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos);
|
|
if(collisionEvent.collidedWithEntity){
|
|
if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){
|
|
collisionEvent.collidedWithEntity->isAlive=0;
|
|
mvwaddch(viewportWin, allEntities[0].curYpos, allEntities[0].curXpos, ' ');
|
|
drawGameOverWin();
|
|
}
|
|
}
|
|
if(collisionEvent.collidedWithItem){
|
|
if(!strcmp(collisionEvent.collidedWithItem->type,"Pistol Magazine")){
|
|
if(allEntities[0].weapons[1].isAlive){
|
|
addMagazine(&allEntities[0].weapons[1]);
|
|
collisionEvent.collidedWithItem->isAlive=0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|