]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - phantasia/main.c
Sort options. End sentence with a dot.
[bsdgames-darwin.git] / phantasia / main.c
index f9beea8a71e8afe3ab2b6737af0cb4355fe35780..996622eded279c0b1c046b1d739e961274d6ee96 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.12 2004/01/01 16:03:46 jsm Exp $    */
+/*     $NetBSD: main.c,v 1.17 2008/08/08 16:10:47 drochner Exp $       */
 
 /*
  * Phantasia 3.3.2 -- Interterminal fantasy game
@@ -27,6 +27,7 @@
  * AT&T is in no way connected with this game.
  */
 
+#include <sys/stat.h>
 #include <sys/types.h>
 #include <pwd.h>
 
@@ -56,6 +57,8 @@
  */
 
 #include "include.h"
+#undef bool
+#include <curses.h>
 
 int    main(int, char **);
 
@@ -269,6 +272,8 @@ main(argc, argv)
 void
 initialstate()
 {
+       struct stat sb;
+
        Beyond = FALSE;
        Marsh = FALSE;
        Throne = FALSE;
@@ -300,6 +305,16 @@ initialstate()
 
        if ((Energyvoidfp = fopen(_PATH_VOID, "r+")) == NULL)
                error(_PATH_VOID);
+       if (fstat(fileno(Energyvoidfp), &sb) == -1)
+               error("stat");
+       if (sb.st_size == 0) {
+               /* initialize grail to new location */
+               Enrgyvoid.ev_active = TRUE;
+               Enrgyvoid.ev_x = ROLL(-1.0e6, 2.0e6);
+               Enrgyvoid.ev_y = ROLL(-1.0e6, 2.0e6);
+               writevoid(&Enrgyvoid, 0L);
+       }
+
        /* NOTREACHED */
 
        srandom((unsigned) time(NULL)); /* prime random numbers */
@@ -704,8 +719,9 @@ titlelist()
            && fgets(Databuf, SZ_DATABUF, fp) != NULL) {
                mvaddstr(19, 25, "The last character to die was:");
                mvaddstr(20, 40 - strlen(Databuf) / 2, Databuf);
-               fclose(fp);
        }
+       if (fp)
+               fclose(fp);
        refresh();
 }
 
@@ -979,7 +995,10 @@ playinit()
        signal(SIGPIPE, ill_sig);
 #endif
 
-       initscr();              /* turn on curses */
+       if (!initscr()) {       /* turn on curses */
+               fprintf(stderr, "couldn't initialize screen\n");
+               exit (0);
+       }
        noecho();               /* do not echo input */
        cbreak();               /* do not process erase, kill */
        clear();