One of my first programming projects. I tried to learn C and use curses...it is quite embarrassing looking back at it now :D
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

93 lines
2.5 KiB

#include <screen.h>
#include <world.h>
#include <collisionDetection.h>
#include <weaponsSystem.h>
void moveProjectiles(){
int i;
for(i=0; i<MAX_PROJECTILES; i++){
if(projectiles[i].isAlive){
projectiles[i].prevYpos=projectiles[i].curYpos;
projectiles[i].prevXpos=projectiles[i].curXpos;
switch(projectiles[i].direction){
case 'w':{
projectiles[i].curYpos--;
break;
}
case 'a':{
projectiles[i].curXpos--;
break;
}
case 's':{
projectiles[i].curYpos++;
break;
}
case 'd':{
projectiles[i].curXpos++;
break;
}
}
projectiles[i].distanceTraveled++;
mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, projectiles[i].symbol);
checkProjectileCollision(&projectiles[i]);
if(mvwinch(viewportWin,projectiles[i].prevYpos, projectiles[i].prevXpos)==projectiles[i].symbol){
mvwaddch(viewportWin, projectiles[i].prevYpos, projectiles[i].prevXpos, ' ');
}
if(projectiles[i].distanceTraveled>=projectiles[i].range || projectiles[i].curYpos > viewportWinRows || projectiles[i].curYpos < 0 || projectiles[i].curXpos > viewportWinCols || projectiles[i].curXpos < 0){
projectiles[i].isAlive=0;
mvwaddch(viewportWin, projectiles[i].curYpos, projectiles[i].curXpos, ' ');
}
}
}
}
void fireWeapon(struct Weapon *weaponRef, char *direction){
struct Projectile projectile;
if (!strcmp(weaponRef->type,"Pistol")){
projectile.range=20;
}
projectile.isAlive=1;
projectile.distanceTraveled=0;
projectile.curYpos=allEntities[0].curYpos;
projectile.curXpos=allEntities[0].curXpos;
if(!strcmp(direction,"up")){
projectile.range*=.4;
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.range*=.4;
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(!projectiles[i].isAlive && !projectiles[i+1].isAlive){
allEntities[0].projectilesFired++;
projectiles[i]=projectile;
allEntities[0].weapons[allEntities[0].curWeapon].curCapacity--;
break;
}
}
}
void addMagazine(struct Weapon *weaponRef){
weaponRef->curMags++;
}
void reload(struct Weapon *weaponRef){
weaponRef->curMags--;
weaponRef->curCapacity=weaponRef->maxCapacity;
}