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.
95 lines
2.3 KiB
95 lines
2.3 KiB
#include <world.h>
|
|
#include <collisionDetection.h>
|
|
#include <events.h>
|
|
#include <getPos.h>
|
|
#include <weaponsSystem.h>
|
|
void gameLoop(){
|
|
int lastPressed;
|
|
while(1) {
|
|
drawScore();
|
|
drawViewport();
|
|
moveProjectiles();
|
|
moveZombies();
|
|
randomEvents();
|
|
doupdate();
|
|
int ch;
|
|
ch = getch();
|
|
switch(ch){
|
|
case 'w':
|
|
case 'W':{
|
|
if(allEntities[0].curYpos > 1){
|
|
allEntities[0].nextYpos--;
|
|
if(allEntities[0].nextYpos < 0){
|
|
allEntities[0].nextYpos = 0;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 's':
|
|
case 'S':{
|
|
if(allEntities[0].curYpos < viewportWinRows - 2){
|
|
allEntities[0].nextYpos++;
|
|
if(allEntities[0].nextYpos > viewportWinRows-1){
|
|
allEntities[0].nextYpos = viewportWinRows-1;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 'a':
|
|
case 'A':{
|
|
if(allEntities[0].curXpos > 1){
|
|
allEntities[0].nextXpos--;
|
|
if(allEntities[0].nextXpos < 0){
|
|
allEntities[0].nextXpos = 0;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 'd':
|
|
case 'D':{
|
|
if(allEntities[0].curXpos < stdscrCols-2){
|
|
allEntities[0].nextXpos++;
|
|
if(allEntities[0].nextXpos > viewportWinCols-1){
|
|
allEntities[0].nextXpos = viewportWinCols-1;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case KEY_UP:{
|
|
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
|
|
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "up");
|
|
}
|
|
break;
|
|
}
|
|
case KEY_LEFT:{
|
|
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
|
|
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "left");
|
|
}
|
|
break;
|
|
}
|
|
case KEY_DOWN:{
|
|
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
|
|
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "down");
|
|
}
|
|
break;
|
|
}
|
|
case KEY_RIGHT:{
|
|
if(allEntities[0].weapons[allEntities[0].curWeapon].curCapacity>0){
|
|
fireWeapon(&allEntities[0].weapons[allEntities[0].curWeapon], "right");
|
|
}
|
|
break;
|
|
}
|
|
case 'r':
|
|
case 'R':{
|
|
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]);
|
|
}
|
|
}
|
|
default:
|
|
if (ch != ERR) {lastPressed=ch;};
|
|
break;
|
|
}
|
|
checkPlayerCollision();
|
|
usleep(30000);
|
|
}
|
|
}
|
|
|