date and time created 85/03/04 18:08:48 by edward
authorEdward Wang <edward@ucbvax.Berkeley.EDU>
Tue, 5 Mar 1985 10:08:48 +0000 (02:08 -0800)
committerEdward Wang <edward@ucbvax.Berkeley.EDU>
Tue, 5 Mar 1985 10:08:48 +0000 (02:08 -0800)
SCCS-vsn: games/sail/dr_main.c 2.1

usr/src/games/sail/dr_main.c [new file with mode: 0644]

diff --git a/usr/src/games/sail/dr_main.c b/usr/src/games/sail/dr_main.c
new file mode 100644 (file)
index 0000000..305d854
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef lint
+static char *sccsid = "@(#)dr_main.c   2.1 85/03/04";
+#endif
+
+#include "driver.h"
+
+dr_main()
+{
+       register int n;
+       register struct ship *sp;
+       int nat[NNATION];
+
+       (void) signal(SIGINT, SIG_IGN);
+       (void) signal(SIGQUIT, SIG_IGN);
+       (void) signal(SIGTSTP, SIG_IGN);
+       if (issetuid)
+               (void) setruid(geteuid());
+       if (game < 0 || game >= NSCENE) {
+               fprintf(stderr, "DRIVER: Bad game number %d\n", game);
+               exit(1);
+       }
+       cc = &scene[game];
+       ls = SHIP(cc->vessels);
+       if (sync_open() < 0) {
+               perror("driver: syncfile");
+               exit(1);
+       }
+       for (n = 0; n < NNATION; n++)
+               nat[n] = 0;
+       foreachship(sp) {
+               if (sp->file == NULL &&
+                   (sp->file = (struct File *)calloc(1, sizeof (struct File))) == NULL) {
+                       (void) fprintf(stderr, "DRIVER: Out of memory.\n");
+                       exit(1);
+               }
+               sp->file->index = sp - SHIP(0);
+               sp->file->loadL = L_ROUND;
+               sp->file->loadR = L_ROUND;
+               sp->file->readyR = R_LOADED|R_INITIAL;
+               sp->file->readyL = R_LOADED|R_INITIAL;
+               sp->file->stern = nat[sp->nationality]++;
+               sp->file->dir = sp->shipdir;
+               sp->file->row = sp->shiprow;
+               sp->file->col = sp->shipcol;
+       }
+       windspeed = cc->windspeed;
+       winddir = cc->winddir;
+       for (;;) {
+               sleep(7);
+               if (Sync() < 0) {
+                       sync_close(1);
+                       exit(1);
+               }
+               next();
+               unfoul();
+               checkup();
+               prizecheck();
+               moveall();
+               thinkofgrapples();
+               boardcomp();
+               compcombat();
+               resolve();
+               reload();
+               checksails();
+               if (Sync() < 0) {
+                       sync_close(1);
+                       exit(1);
+               }
+       }
+}