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.
84 lines
2.2 KiB
84 lines
2.2 KiB
#include <structs.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <ncurses.h>
|
|
#include <world.h>
|
|
#include <drawWindows.h>
|
|
#include <zombies.h>
|
|
#include <nZombies.h>
|
|
#include <getPos.h>
|
|
|
|
void initializeWorld() {
|
|
|
|
srand(time(NULL));
|
|
initscr();
|
|
curs_set(0);
|
|
cbreak();
|
|
nodelay(stdscr, TRUE);
|
|
keypad(stdscr, TRUE);
|
|
noecho();
|
|
|
|
zombieModifier=0;
|
|
itemModifier=0;
|
|
|
|
struct Entity player = {.type="player", .symbol='@', .isAlive=1};
|
|
struct Weapon fists = {.type="Fists", .isAlive=1, .projectileRange=1, .maxCapacity=0, .curCapacity=0, .symbols="-\\|/-\\|/", .projectileSpeed=.03};
|
|
struct Weapon pistol = {.type="Pistol", .isAlive=0, .projectileRange=10, .maxCapacity=12, .curCapacity=12, .symbols="-\\|/-\\|/", .projectileSpeed=.03};
|
|
struct Weapon shotgun = {.type="Shotgun", .isAlive=0, .projectileRange=1, .maxCapacity=5, .curCapacity=5, .symbols="-\\|/-\\|/", .projectileSpeed=.05};
|
|
passableChars="#";
|
|
unpassableChars="+";
|
|
|
|
viewportWinRows = 19;
|
|
viewportWinCols = 80;
|
|
infoWinRows = 5;
|
|
infoWinCols = 80;
|
|
|
|
getmaxyx(stdscr,stdscrRows,stdscrCols);
|
|
if (stdscrRows < viewportWinRows+infoWinRows || stdscrCols < viewportWinCols){
|
|
endwin();
|
|
printf("ERROR: Terminal too small\n");
|
|
printf("Minimum size is: %dx%d\n",viewportWinRows+infoWinRows,viewportWinCols);
|
|
printf("Terminal size is: %dx%d\n",stdscrRows,stdscrCols);
|
|
exit(0);
|
|
}
|
|
|
|
drawGameStartWin();
|
|
|
|
viewportWin=newwin(viewportWinRows,viewportWinCols,0,0);
|
|
infoWin=newwin(infoWinRows,infoWinCols,viewportWinRows,0);
|
|
|
|
allEntities[0]=player;
|
|
allEntities[0].curYpos=viewportWinRows/2;
|
|
allEntities[0].curXpos=viewportWinCols/2;
|
|
allEntities[0].prevYpos=allEntities[0].curYpos;
|
|
allEntities[0].prevXpos=allEntities[0].curXpos;
|
|
allEntities[0].weapons[0]=fists;
|
|
allEntities[0].weapons[1]=pistol;
|
|
allEntities[0].weapons[2]=shotgun;
|
|
allEntities[0].curWeapon=0;
|
|
|
|
updateInfoWin();
|
|
updateViewportWin();
|
|
int i;
|
|
for(i=0;i<INITIAL_SPAWN_NUM;i++){
|
|
struct OpenPos openPos = getOpenPos();
|
|
addZombie(openPos.y,openPos.x);
|
|
}
|
|
|
|
startTime=clock();
|
|
timerStart=clock();
|
|
}
|
|
|
|
void restartGame(){
|
|
int i;
|
|
for(i=0;i<MAX_ENTITIES;i++){
|
|
allEntities[i].isAlive=0;
|
|
}
|
|
for(i=0;i<MAX_ITEMS;i++){
|
|
allItems[i].isAlive=0;
|
|
}
|
|
zombieModifier=0;
|
|
itemModifier=0;
|
|
endwin();
|
|
main();
|
|
}
|
|
|