diff --git a/collisionDetection.c b/collisionDetection.c index 47ea24b..a958b0b 100644 --- a/collisionDetection.c +++ b/collisionDetection.c @@ -17,5 +17,7 @@ struct CollisionEvent collisionDetect(int objYpos, int objXpos){ } } } + struct CollisionEvent collisionEvent = {.collidedWithItem=0,.collidedWithEntity=0}; + return collisionEvent; } diff --git a/drawWindows.c b/drawWindows.c index 1624474..b8ce094 100644 --- a/drawWindows.c +++ b/drawWindows.c @@ -6,7 +6,7 @@ void drawScore(){ werase(scoreWin); box(scoreWin, 0, 0); mvwprintw(scoreWin, 1, 1, "Current Weapon: %s",allEntities[0].weapons[allEntities[0].curWeapon].type); - mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity); + mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d:%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity,allEntities[0].weapons[allEntities[0].curWeapon].curMags); mvwprintw(scoreWin,3,1,"Zombies Killed: %d",allEntities[0].killCount); mvwprintw(scoreWin,4,1,"Projectiles Fired: %d",allEntities[0].projectilesFired); wnoutrefresh(scoreWin); @@ -29,7 +29,6 @@ void drawViewport(){ int i; for(i=0; i #include #include +#include void gameLoop(){ int lastPressed; while(1) { @@ -88,6 +89,12 @@ void gameLoop(){ } break; } + case 'r': + case 'R':{ + if(allEntities[0].weapons[allEntities[0].curWeapon].curMags > 0 && allEntities[0].weapons[allEntities[0].curWeapon].curCapacity < allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity ){ + reload(&allEntities[0].weapons[allEntities[0].curWeapon]); + } + } default: if (ch != ERR) {lastPressed=ch;}; @@ -95,12 +102,19 @@ void gameLoop(){ } struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos); if(collisionEvent.collidedWithEntity){ - mvwprintw(scoreWin,6,10,"%i",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; + } + } + } } } diff --git a/initializeWorld.c b/initializeWorld.c index fda3b6e..a4aaba7 100644 --- a/initializeWorld.c +++ b/initializeWorld.c @@ -6,7 +6,7 @@ void initializeWorld() { struct Entity player = {.type="player",.symbol='@', .curYpos=1, .curXpos=1, .nextYpos=1, .nextXpos=1 ,.isAlive=1}; - struct Weapon pistol = {.type="Pistol", .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"}; + struct Weapon pistol = {.type="Pistol", .isAlive=1, .range=3, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/"}; srand(time(NULL)); initscr(); @@ -25,8 +25,8 @@ void initializeWorld() { allEntities[0].curXpos=(rand()%(viewportWinCols-2))+1; allEntities[0].nextYpos=allEntities[0].curYpos; allEntities[0].nextXpos=allEntities[0].curXpos; - allEntities[0].weapons[0]=pistol; - allEntities[0].curWeapon=0; + allEntities[0].weapons[1]=pistol; + allEntities[0].curWeapon=1; drawScore(); drawViewport(); diff --git a/structs.h b/structs.h index eb3c5ff..1701e93 100644 --- a/structs.h +++ b/structs.h @@ -3,6 +3,7 @@ struct Weapon{ char *type; + int isAlive; int range; int maxCapacity; int curCapacity; @@ -17,7 +18,7 @@ struct Entity { char symbol; int curYpos, curXpos; int nextYpos, nextXpos; - struct Weapon weapons[8]; + struct Weapon weapons[9]; int curWeapon; int isAlive; int killCount; @@ -50,7 +51,6 @@ struct Projectile{ struct CollisionEvent{ struct Entity * collidedWithEntity; struct Item * collidedWithItem; - }; #endif diff --git a/weaponsSystem.c b/weaponsSystem.c index 110f189..be2ea88 100644 --- a/weaponsSystem.c +++ b/weaponsSystem.c @@ -1,6 +1,7 @@ #include #include #include +#include void moveProjectiles(){ int i; for(i=0; icurMags++; +} + +void reload(struct Weapon *weaponRef){ + weaponRef->curMags--; + weaponRef->curCapacity=weaponRef->maxCapacity; +} diff --git a/weaponsSystem.h b/weaponsSystem.h new file mode 100644 index 0000000..8c63ffb --- /dev/null +++ b/weaponsSystem.h @@ -0,0 +1,8 @@ +#ifndef _WEAPONS_SYSTEM +#define _WEAPONS_SYSTSM + +void moveProjectiles(); +void fireWeapon(); +void addMagazine(); + +#endif