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(!strcmp(collisionEvent.collidedWithItem->type,"Pistol Magazine")){
if(!strcmp(collisionEvent.collidedWithItem->type,"Pistol")){
if(allEntities[0].weapons[1].isAlive){
addMagazine(&allEntities[0].weapons[1]);
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, 3, 26, ACS_LLCORNER);
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){
wattron(infoWin,A_BOLD);
mvwprintw(infoWin, 2, 27, "1" );

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

@ -99,7 +99,7 @@ void gameLoop(){
break;
}
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;
}
break;

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

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

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

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

Loading…
Cancel
Save