Add ammo pickup and weaponsSystem.h

main
Jerry Aldrich 11 years ago
parent beea215edf
commit 2ae4520764
  1. 2
      collisionDetection.c
  2. 3
      drawWindows.c
  3. 16
      gameLoop.c
  4. 6
      initializeWorld.c
  5. 4
      structs.h
  6. 10
      weaponsSystem.c
  7. 8
      weaponsSystem.h

@ -17,5 +17,7 @@ struct CollisionEvent collisionDetect(int objYpos, int objXpos){
}
}
}
struct CollisionEvent collisionEvent = {.collidedWithItem=0,.collidedWithEntity=0};
return collisionEvent;
}

@ -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<MAX_ITEMS; i++){
if(allItems[i].isAlive){
mvwprintw(viewportWin, 10,10, "%i",i);
mvwaddch(viewportWin, allItems[i].curYpos, allItems[i].curXpos, allItems[i].symbol);
}
}

@ -3,6 +3,7 @@
#include <collisionDetection.h>
#include <events.h>
#include <getPos.h>
#include <weaponsSystem.h>
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;
}
}
}
}
}

@ -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();

@ -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

@ -1,6 +1,7 @@
#include <screen.h>
#include <world.h>
#include <collisionDetection.h>
#include <weaponsSystem.h>
void moveProjectiles(){
int i;
for(i=0; i<MAX_PROJECTILES; i++){
@ -93,3 +94,12 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
}
}
}
void addMagazine(struct Weapon *weaponRef){
weaponRef->curMags++;
}
void reload(struct Weapon *weaponRef){
weaponRef->curMags--;
weaponRef->curCapacity=weaponRef->maxCapacity;
}

@ -0,0 +1,8 @@
#ifndef _WEAPONS_SYSTEM
#define _WEAPONS_SYSTSM
void moveProjectiles();
void fireWeapon();
void addMagazine();
#endif
Loading…
Cancel
Save