]> 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 794eb42aedab99b2748de24b1b8fe13cdb965147..996622eded279c0b1c046b1d739e961274d6ee96 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.13 2004/04/07 17:46:47 ross 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,7 @@
  */
 
 #include "include.h"
+#undef bool
 #include <curses.h>
 
 int    main(int, char **);
@@ -270,6 +272,8 @@ main(argc, argv)
 void
 initialstate()
 {
+       struct stat sb;
+
        Beyond = FALSE;
        Marsh = FALSE;
        Throne = FALSE;
@@ -301,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 */
@@ -705,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();
 }
 
@@ -980,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();