|
|
|
@ -52,18 +52,22 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){ |
|
|
|
|
if(allEntities[0].curWeapon==0){ |
|
|
|
|
if(!strcmp(direction,"up")){ |
|
|
|
|
projectile.direction='w'; |
|
|
|
|
projectile.curYpos--; |
|
|
|
|
projectile.symbol=weaponRef->symbols[2]; |
|
|
|
|
} |
|
|
|
|
if(!strcmp(direction,"left")){ |
|
|
|
|
projectile.direction='a'; |
|
|
|
|
projectile.curXpos--; |
|
|
|
|
projectile.symbol=weaponRef->symbols[0]; |
|
|
|
|
}
|
|
|
|
|
if(!strcmp(direction,"down")){ |
|
|
|
|
projectile.direction='s'; |
|
|
|
|
projectile.curYpos++; |
|
|
|
|
projectile.symbol=weaponRef->symbols[6]; |
|
|
|
|
}
|
|
|
|
|
if(!strcmp(direction,"right")){ |
|
|
|
|
projectile.direction='d'; |
|
|
|
|
projectile.curXpos++; |
|
|
|
|
projectile.symbol=weaponRef->symbols[4]; |
|
|
|
|
}
|
|
|
|
|
int i; |
|
|
|
@ -74,6 +78,224 @@ void fireWeapon(struct Weapon *weaponRef, char *direction){ |
|
|
|
|
} |
|
|
|
|
}
|
|
|
|
|
} |
|
|
|
|
else if(allEntities[0].curWeapon==2){
|
|
|
|
|
if(!strcmp(direction,"up")){ |
|
|
|
|
projectile.direction='w'; |
|
|
|
|
projectile.curYpos--; |
|
|
|
|
projectile.symbol=weaponRef->symbols[2]; |
|
|
|
|
} |
|
|
|
|
if(!strcmp(direction,"left")){ |
|
|
|
|
projectile.direction='a'; |
|
|
|
|
projectile.curXpos--; |
|
|
|
|
projectile.symbol=weaponRef->symbols[0]; |
|
|
|
|
}
|
|
|
|
|
if(!strcmp(direction,"down")){ |
|
|
|
|
projectile.direction='s'; |
|
|
|
|
projectile.curYpos++; |
|
|
|
|
projectile.symbol=weaponRef->symbols[6]; |
|
|
|
|
}
|
|
|
|
|
if(!strcmp(direction,"right")){ |
|
|
|
|
projectile.direction='d'; |
|
|
|
|
projectile.curXpos++; |
|
|
|
|
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++; |
|
|
|
|
int x; |
|
|
|
|
for(x=0;x<15;x++){ |
|
|
|
|
if(!allProjectiles[i+x].isAlive){ |
|
|
|
|
allProjectiles[i+x]=projectile; |
|
|
|
|
} |
|
|
|
|
if(x==1){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].curXpos--; |
|
|
|
|
allProjectiles[i+x].symbol='\\'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].curXpos--; |
|
|
|
|
allProjectiles[i+x].symbol='\\'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].curXpos--; |
|
|
|
|
allProjectiles[i+x].symbol='/'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].curXpos++; |
|
|
|
|
allProjectiles[i+x].symbol='/'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==2){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curXpos--; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curXpos++; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==3){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].curXpos++; |
|
|
|
|
allProjectiles[i+x].symbol='/'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curXpos--; |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].symbol='/'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].curXpos++; |
|
|
|
|
allProjectiles[i+x].symbol='\\'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].curXpos++; |
|
|
|
|
allProjectiles[i+x].symbol='\\'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==4){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos-=2; |
|
|
|
|
allProjectiles[i+x].curXpos-=2; |
|
|
|
|
allProjectiles[i+x].symbol='\\'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curXpos-=2; |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos+=2; |
|
|
|
|
allProjectiles[i+x].curXpos-=2; |
|
|
|
|
allProjectiles[i+x].symbol='/'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].curXpos+=2; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==5){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos-=2; |
|
|
|
|
allProjectiles[i+x].curXpos--; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curXpos-=2; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos+=2; |
|
|
|
|
allProjectiles[i+x].curXpos--; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curXpos+=2; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==6){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos-=2; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curXpos-=2; |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos+=2; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curXpos+=2; |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==7){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos-=2; |
|
|
|
|
allProjectiles[i+x].curXpos++; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curXpos-=3; |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos+=2; |
|
|
|
|
allProjectiles[i+x].curXpos++; |
|
|
|
|
allProjectiles[i+x].symbol='|'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curXpos+=3; |
|
|
|
|
allProjectiles[i+x].curYpos--; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==8){ |
|
|
|
|
if(projectile.direction=='w'){ |
|
|
|
|
allProjectiles[i+x].curYpos-=2; |
|
|
|
|
allProjectiles[i+x].curXpos+=2; |
|
|
|
|
allProjectiles[i+x].symbol='/'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curXpos-=3; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='s'){ |
|
|
|
|
allProjectiles[i+x].curYpos+=2; |
|
|
|
|
allProjectiles[i+x].curXpos+=2; |
|
|
|
|
allProjectiles[i+x].symbol='\\'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curXpos+=3; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(x==9){ |
|
|
|
|
if(projectile.direction=='a'){ |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].curXpos-=3; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
if(projectile.direction=='d'){ |
|
|
|
|
allProjectiles[i+x].curXpos+=3; |
|
|
|
|
allProjectiles[i+x].curYpos++; |
|
|
|
|
allProjectiles[i+x].symbol='-'; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
allEntities[0].weapons[allEntities[0].curWeapon].curCapacity--; |
|
|
|
|
allEntities[0].projectilesFired++; |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else{
|
|
|
|
|
if(!strcmp(direction,"up")){ |
|
|
|
|
projectile.range*=.4; |
|
|
|
@ -99,11 +321,9 @@ 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 |
|
|
|
|
){ |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|