Do UI overhaul

main
Jerry Aldrich 11 years ago
parent 4cb10fbd12
commit df56f8a14a
  1. 2
      collisionDetection.c
  2. 118
      drawWindows.c
  3. 4
      gameLoop.c
  4. 14
      initializeWorld.c
  5. 4
      world.h

@ -60,7 +60,7 @@ void checkPlayerCollision(){
struct CollisionEvent collisionEvent = collisionDetect(allEntities[0].curYpos, allEntities[0].curXpos);
if(collisionEvent.collidedWithEntity){
if(!strcmp(collisionEvent.collidedWithEntity->type,"zombie")){
drawViewport();
updateViewportWin();
sleep(1);
drawGameOverWin();
}

@ -3,7 +3,7 @@
#include <string.h>
#include <weaponsSystem.h>
void drawViewport(){
void updateViewportWin(){
mvwprintw(viewportWin,10,10,"++++");
mvwprintw(viewportWin,11,10,"+ +");
mvwprintw(viewportWin,12,10,"+ +");
@ -41,33 +41,119 @@ void drawViewport(){
doupdate();
}
void drawScore(){
werase(scoreWin);
mvwprintw(scoreWin, 1, 1, "Current Weapon: %s",allEntities[0].weapons[allEntities[0].curWeapon].type);
mvwprintw(scoreWin, 2, 1, "Ammo: %d/%d:%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity,allEntities[0].weapons[allEntities[0].curWeapon].curMags);
mvwprintw(scoreWin,3,1,"Zombies Killed: %d",allEntities[0].killCount);
mvwprintw(scoreWin,4,1,"Projectiles Fired: %d",allEntities[0].projectilesFired);
mvwprintw(scoreWin,5,1,"Zombies Modifier: %d",zombieModifier);
mvwprintw(scoreWin,6,1,"Item Modifier: %d",itemModifier);
box(scoreWin, 0, 0);
wnoutrefresh(scoreWin);
void updateInfoWin(){
werase(infoWin);
box(infoWin, 0, 0);
mvwaddch(infoWin, 0, 24, ACS_TTEE);
mvwaddch(infoWin, 1, 24, ACS_VLINE);
mvwaddch(infoWin, 2, 24, ACS_VLINE);
mvwaddch(infoWin, 3, 24, ACS_VLINE);
mvwaddch(infoWin, 4, 24, ACS_BTEE);
mvwaddch(infoWin, 0, 24, ACS_TTEE);
mvwaddch(infoWin, 0, 45, ACS_TTEE);
mvwaddch(infoWin, 1, 45, ACS_VLINE);
mvwaddch(infoWin, 2, 45, ACS_VLINE);
mvwaddch(infoWin, 3, 45, ACS_VLINE);
mvwaddch(infoWin, 4, 45, ACS_BTEE);
mvwaddch(infoWin, 0, 59, ACS_TTEE);
mvwaddch(infoWin, 1, 59, ACS_VLINE);
mvwaddch(infoWin, 2, 59, ACS_VLINE);
mvwaddch(infoWin, 3, 59, ACS_VLINE);
mvwaddch(infoWin, 4, 59, ACS_BTEE);
mvwprintw(infoWin, 0, 6, "Current Weapon");
mvwprintw(infoWin, 0, 32, "Weapons");
mvwprintw(infoWin, 0, 50, "Items");
mvwprintw(infoWin, 0, 68, "Other");
mvwprintw(infoWin, 1, 7, "Weapon: %s",allEntities[0].weapons[allEntities[0].curWeapon].type);
mvwprintw(infoWin, 2, 9, "Ammo: %d/%d:%d",allEntities[0].weapons[allEntities[0].curWeapon].curCapacity,allEntities[0].weapons[allEntities[0].curWeapon].maxCapacity,allEntities[0].weapons[allEntities[0].curWeapon].curMags);
mvwprintw(infoWin, 3, 8, "Bombs: 0");
mvwaddch(infoWin, 1, 26, ACS_ULCORNER);
mvwaddch(infoWin, 2, 26, ACS_VLINE);
mvwaddch(infoWin, 3, 26, ACS_LLCORNER);
mvwaddch(infoWin, 1, 27, ACS_HLINE);
mvwprintw(infoWin, 2, 27, "1");
mvwaddch(infoWin, 3, 27, ACS_HLINE);
mvwaddch(infoWin, 1, 28, ACS_URCORNER);
mvwaddch(infoWin, 2, 28, ACS_VLINE);
mvwaddch(infoWin, 3, 28, ACS_LRCORNER);
mvwaddch(infoWin, 1, 31, ACS_ULCORNER);
mvwaddch(infoWin, 2, 31, ACS_VLINE);
mvwaddch(infoWin, 3, 31, ACS_LLCORNER);
mvwaddch(infoWin, 1, 32, ACS_HLINE);
mvwprintw(infoWin, 2, 32, "2");
mvwaddch(infoWin, 3, 32, ACS_HLINE);
mvwaddch(infoWin, 1, 33, ACS_URCORNER);
mvwaddch(infoWin, 2, 33, ACS_VLINE);
mvwaddch(infoWin, 3, 33, ACS_LRCORNER);
mvwaddch(infoWin, 1, 36, ACS_ULCORNER);
mvwaddch(infoWin, 2, 36, ACS_VLINE);
mvwaddch(infoWin, 3, 36, ACS_LLCORNER);
mvwaddch(infoWin, 1, 37, ACS_HLINE);
mvwprintw(infoWin, 2, 37, "3");
mvwaddch(infoWin, 3, 37, ACS_HLINE);
mvwaddch(infoWin, 1, 38, ACS_URCORNER);
mvwaddch(infoWin, 2, 38, ACS_VLINE);
mvwaddch(infoWin, 3, 38, ACS_LRCORNER);
mvwaddch(infoWin, 1, 41, ACS_ULCORNER);
mvwaddch(infoWin, 2, 41, ACS_VLINE);
mvwaddch(infoWin, 3, 41, ACS_LLCORNER);
mvwaddch(infoWin, 1, 42, ACS_HLINE);
mvwprintw(infoWin, 2, 42, "4");
mvwaddch(infoWin, 3, 42, ACS_HLINE);
mvwaddch(infoWin, 1, 43, ACS_URCORNER);
mvwaddch(infoWin, 2, 43, ACS_VLINE);
mvwaddch(infoWin, 3, 43, ACS_LRCORNER);
mvwaddch(infoWin, 1, 48, ACS_ULCORNER);
mvwaddch(infoWin, 2, 48, ACS_VLINE);
mvwaddch(infoWin, 3, 48, ACS_LLCORNER);
mvwaddch(infoWin, 1, 49, ACS_HLINE);
mvwprintw(infoWin, 2, 49, "Q");
mvwaddch(infoWin, 3, 49, ACS_HLINE);
mvwaddch(infoWin, 1, 50, ACS_URCORNER);
mvwaddch(infoWin, 2, 50, ACS_VLINE);
mvwaddch(infoWin, 3, 50, ACS_LRCORNER);
mvwaddch(infoWin, 1, 54, ACS_ULCORNER);
mvwaddch(infoWin, 2, 54, ACS_VLINE);
mvwaddch(infoWin, 3, 54, ACS_LLCORNER);
mvwaddch(infoWin, 1, 55, ACS_HLINE);
mvwprintw(infoWin, 2, 55, "E");
mvwaddch(infoWin, 3, 55, ACS_HLINE);
mvwaddch(infoWin, 1, 56, ACS_URCORNER);
mvwaddch(infoWin, 2, 56, ACS_VLINE);
mvwaddch(infoWin, 3, 56, ACS_LRCORNER);
mvwprintw(infoWin, 1, 66, "Cash: 0");
mvwprintw(infoWin, 2, 64, "Killed: %d", allEntities[0].killCount);
mvwprintw(infoWin, 3, 66, "Time: 00:00");
wnoutrefresh(infoWin);
}
void drawGameOverWin(){
gameOverWin=newwin(viewportWinRows/2,viewportWinCols/2,viewportWinRows/4,viewportWinCols/4);
gameOverWin=newwin(11,39,viewportWinRows/4,viewportWinCols/4);
int gameOverWinRows, gameOverWinCols;
getmaxyx(gameOverWin,gameOverWinRows,gameOverWinCols);
mvwprintw(gameOverWin,1,(gameOverWinCols-strlen("GAME OVER"))/2,"%s","GAME OVER");
mvwprintw(gameOverWin,(gameOverWinRows/2)-1,1,"Shots Fired: %i",allEntities[0].projectilesFired);
mvwprintw(gameOverWin,(gameOverWinRows/2)-2,1,"Zombies Killed: %i",allEntities[0].killCount);
mvwprintw(gameOverWin,3,5,"Zombies Killed: %i",allEntities[0].killCount);
mvwprintw(gameOverWin,4,7,"Money Earned: 0");
mvwprintw(gameOverWin,5,8,"Shots Fired: %i",allEntities[0].projectilesFired);
if (allEntities[0].projectilesFired!=0){
float hitPercent = (((float)allEntities[0].hitCount/(float)allEntities[0].projectilesFired)*100);
mvwprintw(gameOverWin,(gameOverWinRows/2),1,"Accuracy: %.0f%%",hitPercent);
mvwprintw(gameOverWin,6,11,"Accuracy: %.0f%%",hitPercent);
}
else {
mvwprintw(gameOverWin,(gameOverWinRows/2),1,"Accuracy: N/A");
mvwprintw(gameOverWin,6,11,"Accuracy: N/A");
}
mvwprintw(gameOverWin,7,15,"Time: 00:00");
mvwprintw(gameOverWin,(gameOverWinRows)-2,(gameOverWinCols-strlen("Press 'q' to quit or 'r' to restart"))/2,"%s","Press 'q' to quit or 'r' to restart");
nodelay(stdscr, FALSE);
box(gameOverWin,0,0);

@ -6,8 +6,8 @@
void gameLoop(){
int lastPressed;
while(1) {
drawScore();
drawViewport();
updateInfoWin();
updateViewportWin();
moveProjectiles();
moveZombies();
randomEvents();

@ -23,20 +23,20 @@ void initializeWorld() {
viewportWinRows = 19;
viewportWinCols = 80;
scoreWinRows = 5;
scoreWinCols = 80;
infoWinRows = 5;
infoWinCols = 80;
getmaxyx(stdscr,stdscrRows,stdscrCols);
if (stdscrRows < viewportWinRows+scoreWinRows || stdscrCols < viewportWinCols){
if (stdscrRows < viewportWinRows+infoWinRows || stdscrCols < viewportWinCols){
endwin();
printf("ERROR: Terminal too small\n");
printf("Minimum size is: %dx%d\n",viewportWinRows+scoreWinRows,viewportWinCols);
printf("Minimum size is: %dx%d\n",viewportWinRows+infoWinRows,viewportWinCols);
printf("Terminal size is: %dx%d\n",stdscrRows,stdscrCols);
exit(0);
}
viewportWin=newwin(viewportWinRows,viewportWinCols,0,0);
scoreWin=newwin(scoreWinRows,scoreWinCols,viewportWinRows,0);
infoWin=newwin(infoWinRows,infoWinCols,viewportWinRows,0);
allEntities[0]=player;
allEntities[0].curYpos=viewportWinRows/2;
@ -46,8 +46,8 @@ void initializeWorld() {
allEntities[0].weapons[1]=pistol;
allEntities[0].curWeapon=1;
drawScore();
drawViewport();
updateInfoWin();
updateViewportWin();
int i;
for(i=0;i<INITIAL_SPAWN_NUM;i++){
struct OpenPos openPos = getOpenPos();

@ -9,12 +9,12 @@
WINDOW* viewportWin;
WINDOW* scoreWin;
WINDOW* infoWin;
WINDOW* gameOverWin;
int stdscrRows,stdscrCols;
int viewportWinRows,viewportWinCols;
int scoreWinRows,scoreWinCols;
int infoWinRows,infoWinCols;
struct Entity allEntities[MAX_ENTITIES];
struct Item allItems[MAX_ITEMS];

Loading…
Cancel
Save