Add fists weapon

main
Jerry Aldrich 11 years ago
parent bc71876c21
commit 7ad9bf520c
  1. 9
      drawWindows.c
  2. 2
      events.c
  3. 40
      gameLoop.c
  4. 2
      getPos.c
  5. 4
      initializeWorld.c
  6. 28
      weaponsSystem.c

@ -76,8 +76,15 @@ 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")){ if(!strcmp(allEntities[0].weapons[1].type,"Pistol") && (allEntities[0].weapons[1].curCapacity != 0 || allEntities[0].weapons[1].curMags != 0)){
if(allEntities[0].curWeapon==1){
wattron(infoWin,A_BOLD);
mvwprintw(infoWin, 2, 27, "1" ); mvwprintw(infoWin, 2, 27, "1" );
wattroff(infoWin,A_BOLD);
}
else{
mvwprintw(infoWin, 2, 27, "1" );
}
} }
mvwaddch(infoWin, 3, 27, ACS_HLINE); mvwaddch(infoWin, 3, 27, ACS_HLINE);
mvwaddch(infoWin, 1, 28, ACS_URCORNER); mvwaddch(infoWin, 1, 28, ACS_URCORNER);

@ -21,7 +21,7 @@ void addItem(char *type, int yPos, int xPos){
void tryRandomEvent(){ void tryRandomEvent(){
int eventTrigger = (rand()%100)+1; int eventTrigger = (rand()%100)+1;
if (eventTrigger < 10+itemModifier){ if (eventTrigger < 15+itemModifier){
struct OpenPos openPos = getOpenPos(); struct OpenPos openPos = getOpenPos();
addItem("Pistol Magazine", openPos.y, openPos.x); addItem("Pistol Magazine", openPos.y, openPos.x);
} }

@ -64,25 +64,25 @@ void gameLoop(){
break; break;
} }
case KEY_UP:{ case KEY_UP:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "up"); fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "up");
} }
break; break;
} }
case KEY_LEFT:{ case KEY_LEFT:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "left"); fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "left");
} }
break; break;
} }
case KEY_DOWN:{ case KEY_DOWN:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "down"); fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "down");
} }
break; break;
} }
case KEY_RIGHT:{ case KEY_RIGHT:{
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){ if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0 || allEntities[0].curWeapon == 0){
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "right"); fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "right");
} }
break; break;
@ -92,12 +92,44 @@ void gameLoop(){
if(allEntities[0].weapons[allEntities[0].curWeapon].curMags > 0 && allEntities[0].weapons[allEntities[0].curWeapon].curCapacity < allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity ){ 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]); reload(&allEntities[0].weapons[allEntities[0].curWeapon]);
} }
break;
}
case '0':{
allEntities[0].curWeapon=0;
break;
}
case '1':{
if(allEntities[0].weapons[1].curCapacity > 0 || allEntities[0].weapons[1].curMags > 0){
allEntities[0].curWeapon=1;
}
break;
}
case '2':{
if(allEntities[0].weapons[2].curCapacity > 0 || allEntities[0].weapons[2].curMags > 0){
allEntities[0].curWeapon=2;
}
break;
}
case '3':{
if(allEntities[0].weapons[3].curCapacity > 0 || allEntities[0].weapons[3].curMags > 0){
allEntities[0].curWeapon=3;
}
break;
}
case '4':{
if(allEntities[0].weapons[4].curCapacity > 0 || allEntities[0].weapons[4].curMags > 0){
allEntities[0].curWeapon=4;
}
break;
} }
default: default:
allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].prevXpos=allEntities[0].curXpos;
break; break;
} }
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity==0 && allEntities[0].weapons[allEntities[0].curWeapon].curMags==0){
allEntities[0].curWeapon=0;
}
updateViewportWin(); updateViewportWin();
checkPlayerCollision(); checkPlayerCollision();
updateViewportWin(); updateViewportWin();

@ -7,7 +7,7 @@ struct OpenPos getOpenPos(){
spaceExists: spaceExists:
openPos.y=(rand()%(viewportWinRows-2)+1); openPos.y=(rand()%(viewportWinRows-2)+1);
openPos.x=(rand()%(viewportWinCols-2)+1); openPos.x=(rand()%(viewportWinCols-2)+1);
if(mvwinch(viewportWin,openPos.y,openPos.x)==' ' && ((openPos.y > allEntities[0].curYpos+5 || openPos.y < allEntities[0].curYpos-5) || (openPos.x > allEntities[0].curXpos+5 || openPos.x < allEntities[0].curXpos-5))){ if(mvwinch(viewportWin,openPos.y,openPos.x)==' ' && ((openPos.y > allEntities[0].curYpos+10 || openPos.y < allEntities[0].curYpos-10) || (openPos.x > allEntities[0].curXpos+10 || openPos.x < allEntities[0].curXpos-10))){
int i; int i;
for(i=1;i<MAX_ENTITIES;i++){ for(i=1;i<MAX_ENTITIES;i++){
if(allEntities[i].isAlive && allEntities[i].curYpos==openPos.y && allEntities[i].curXpos==openPos.x){ if(allEntities[i].isAlive && allEntities[i].curYpos==openPos.y && allEntities[i].curXpos==openPos.x){

@ -22,6 +22,7 @@ void initializeWorld() {
itemModifier=0; itemModifier=0;
struct Entity player = {.type="player", .symbol='@', .isAlive=1}; struct Entity player = {.type="player", .symbol='@', .isAlive=1};
struct Weapon fists = {.type="Fists", .isAlive=1, .projectileRange=2, .maxCapacity=0, .curCapacity=0, .symbols="-\\|/-\\|/", .projectileSpeed=.03};
struct Weapon pistol = {.type="Pistol", .isAlive=1, .projectileRange=10, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/", .projectileSpeed=.02}; struct Weapon pistol = {.type="Pistol", .isAlive=1, .projectileRange=10, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/", .projectileSpeed=.02};
passableChars="#"; passableChars="#";
@ -49,8 +50,9 @@ void initializeWorld() {
allEntities[0].curXpos=viewportWinCols/2; allEntities[0].curXpos=viewportWinCols/2;
allEntities[0].prevYpos=allEntities[0].curYpos; allEntities[0].prevYpos=allEntities[0].curYpos;
allEntities[0].prevXpos=allEntities[0].curXpos; allEntities[0].prevXpos=allEntities[0].curXpos;
allEntities[0].weapons[0]=fists;
allEntities[0].weapons[1]=pistol; allEntities[0].weapons[1]=pistol;
allEntities[0].curWeapon=1; allEntities[0].curWeapon=0;
updateInfoWin(); updateInfoWin();
updateViewportWin(); updateViewportWin();

@ -49,6 +49,33 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
projectile.curYpos=allEntities[0].curYpos; projectile.curYpos=allEntities[0].curYpos;
projectile.curXpos=allEntities[0].curXpos; projectile.curXpos=allEntities[0].curXpos;
projectile.lastMoveClock=clock(); projectile.lastMoveClock=clock();
if(allEntities[0].curWeapon==0){
if(!strcmp(direction,"up")){
projectile.direction='w';
projectile.symbol=weaponRef->symbols[2];
}
if(!strcmp(direction,"left")){
projectile.direction='a';
projectile.symbol=weaponRef->symbols[0];
}
if(!strcmp(direction,"down")){
projectile.direction='s';
projectile.symbol=weaponRef->symbols[6];
}
if(!strcmp(direction,"right")){
projectile.direction='d';
projectile.symbol=weaponRef->symbols[4];
}
int i;
for(i=0;i<MAX_PROJECTILES;i++){
if(!allProjectiles[i].isAlive && !allProjectiles[i+1].isAlive){
allEntities[0].projectilesFired++;
allProjectiles[i]=projectile;
break;
}
}
}
else{
if(!strcmp(direction,"up")){ if(!strcmp(direction,"up")){
projectile.range*=.4; projectile.range*=.4;
projectile.direction='w'; projectile.direction='w';
@ -77,6 +104,7 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){
} }
} }
} }
}
void addMagazine(struct Weapon *weaponRef){ void addMagazine(struct Weapon *weaponRef){
weaponRef->curMags++; weaponRef->curMags++;

Loading…
Cancel
Save