Add auto weapon switch on pickup

main
Jerry Aldrich 11 years ago
parent 7ad9bf520c
commit 6d61c742a0
  1. 8
      collisionDetection.c
  2. 2
      drawWindows.c
  3. 8
      events.c
  4. 2
      gameLoop.c
  5. 18
      structs.h
  6. 6
      weaponsSystem.c
  7. 2
      world.h
  8. 2
      zombies.c

@ -67,11 +67,17 @@ void checkPlayerCollision(){
} }
} }
if(collisionEvent.collidedWithItem){ if(collisionEvent.collidedWithItem){
if(!strcmp(collisionEvent.collidedWithItem->type,"Pistol Magazine")){ if(!strcmp(collisionEvent.collidedWithItem->type,"Pistol")){
if(allEntities[0].weapons[1].isAlive){ if(allEntities[0].weapons[1].isAlive){
addMagazine(&allEntities[0].weapons[1]); addMagazine(&allEntities[0].weapons[1]);
collisionEvent.collidedWithItem->isAlive=0; collisionEvent.collidedWithItem->isAlive=0;
} }
else{
allEntities[0].weapons[1].isAlive=1;
allEntities[0].weapons[1].curCapacity=allEntities[0].weapons[1].maxCapacity;
allEntities[0].curWeapon=1;
collisionEvent.collidedWithItem->isAlive=0;
}
} }
} }
} }

@ -76,7 +76,7 @@ void updateInfoWin(){
mvwaddch(infoWin, 2, 26, ACS_VLINE); mvwaddch(infoWin, 2, 26, ACS_VLINE);
mvwaddch(infoWin, 3, 26, ACS_LLCORNER); mvwaddch(infoWin, 3, 26, ACS_LLCORNER);
mvwaddch(infoWin, 1, 27, ACS_HLINE); mvwaddch(infoWin, 1, 27, ACS_HLINE);
if(!strcmp(allEntities[0].weapons[1].type,"Pistol") && (allEntities[0].weapons[1].curCapacity != 0 || allEntities[0].weapons[1].curMags != 0)){ if(!strcmp(allEntities[0].weapons[1].type,"Pistol") && allEntities[0].weapons[1].isAlive){
if(allEntities[0].curWeapon==1){ if(allEntities[0].curWeapon==1){
wattron(infoWin,A_BOLD); wattron(infoWin,A_BOLD);
mvwprintw(infoWin, 2, 27, "1" ); mvwprintw(infoWin, 2, 27, "1" );

@ -7,12 +7,12 @@
#include <zombies.h> #include <zombies.h>
void addItem(char *type, int yPos, int xPos){ void addItem(char *type, int yPos, int xPos){
if(!strcmp(type,"Pistol Magazine")){ if(!strcmp(type,"Pistol")){
struct Item pistolMag = {.type="Pistol Magazine", .symbol='=', .isAlive=1, .curXpos=xPos, .curYpos=yPos}; struct Item pistolItem = {.type="Pistol", .symbol='p', .isAlive=1, .curXpos=xPos, .curYpos=yPos};
int i; int i;
for (i=0;i<MAX_ITEMS;i++){ for (i=0;i<MAX_ITEMS;i++){
if(!allItems[i].isAlive){ if(!allItems[i].isAlive){
allItems[i]=pistolMag; allItems[i]=pistolItem;
break; break;
} }
} }
@ -23,7 +23,7 @@ void tryRandomEvent(){
int eventTrigger = (rand()%100)+1; int eventTrigger = (rand()%100)+1;
if (eventTrigger < 15+itemModifier){ if (eventTrigger < 15+itemModifier){
struct OpenPos openPos = getOpenPos(); struct OpenPos openPos = getOpenPos();
addItem("Pistol Magazine", openPos.y, openPos.x); addItem("Pistol", openPos.y, openPos.x);
} }
if (eventTrigger < 1+zombieModifier){ if (eventTrigger < 1+zombieModifier){
struct OpenPos openPos = getOpenPos(); struct OpenPos openPos = getOpenPos();

@ -99,7 +99,7 @@ void gameLoop(){
break; break;
} }
case '1':{ case '1':{
if(allEntities[0].weapons[1].curCapacity > 0 || allEntities[0].weapons[1].curMags > 0){ if(allEntities[0].weapons[0].isAlive){
allEntities[0].curWeapon=1; allEntities[0].curWeapon=1;
} }
break; break;

@ -13,6 +13,15 @@ struct Weapon{
float projectileSpeed; float projectileSpeed;
}; };
struct Item{
char *type;
char symbol;
int isAlive;
int curYpos;
int curXpos;
};
struct Entity { struct Entity {
char *type; char *type;
char *behavior; char *behavior;
@ -20,6 +29,7 @@ struct Entity {
int prevYpos, prevXpos; int prevYpos, prevXpos;
int curYpos, curXpos; int curYpos, curXpos;
struct Weapon weapons[5]; struct Weapon weapons[5];
struct Item items[7];
int curWeapon; int curWeapon;
int isAlive; int isAlive;
int hitCount; int hitCount;
@ -29,14 +39,6 @@ struct Entity {
float speed; float speed;
}; };
struct Item{
char *type;
char symbol;
int isAlive;
int curYpos;
int curXpos;
};
struct Projectile{ struct Projectile{
int isAlive; int isAlive;

@ -69,7 +69,6 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
int i; int i;
for(i=0;i<MAX_PROJECTILES;i++){ for(i=0;i<MAX_PROJECTILES;i++){
if(!allProjectiles[i].isAlive && !allProjectiles[i+1].isAlive){ if(!allProjectiles[i].isAlive && !allProjectiles[i+1].isAlive){
allEntities[0].projectilesFired++;
allProjectiles[i]=projectile; allProjectiles[i]=projectile;
break; break;
} }
@ -100,6 +99,11 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
allEntities[0].projectilesFired++; allEntities[0].projectilesFired++;
allProjectiles[i]=projectile; allProjectiles[i]=projectile;
allEntities[0].weapons[allEntities[0].curWeapon].curCapacity--; allEntities[0].weapons[allEntities[0].curWeapon].curCapacity--;
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity==0 && allEntities[0].weapons[allEntities[0].curWeapon].curMags==0
){
allEntities[0].weapons[allEntities[0].curWeapon].isAlive=0;
}
break; break;
} }
} }

@ -1,7 +1,7 @@
#ifndef _WORLD #ifndef _WORLD
#define _WORLD #define _WORLD
#define MAX_ENTITIES 10000 #define MAX_ENTITIES 10
#define MAX_ITEMS 100 #define MAX_ITEMS 100
#include <structs.h> #include <structs.h>
#include <ncurses.h> #include <ncurses.h>

@ -4,7 +4,7 @@
void addZombie(int y, int x){ void addZombie(int y, int x){
if (y && x){ if (y && x){
int i; int i;
for(i=0;i<MAX_ENTITIES-1;i++){ for(i=0;i<MAX_ENTITIES;i++){
if(!allEntities[i].isAlive){ if(!allEntities[i].isAlive){
struct Entity zombie; struct Entity zombie;
zombie.curYpos=y; zombie.curYpos=y;

Loading…
Cancel
Save