]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - sail/pl_2.c
ANSIfy. Also, we now have RANDOM_MAX; use it. Object diffs checked...
[bsdgames-darwin.git] / sail / pl_2.c
index 7f583b3d6acdeaed278eacb934ce7808b5d82589..57d5756ef4581f683b11c3846dc60d86eda0c159 100644 (file)
@@ -1,6 +1,8 @@
+/*     $NetBSD: pl_2.c,v 1.13 2009/03/15 03:33:56 dholland Exp $       */
+
 /*
 /*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1983, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * SUCH DAMAGE.
  */
 
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
 #ifndef lint
-/*static char sccsid[] = "from: @(#)pl_2.c     5.4 (Berkeley) 6/1/90";*/
-static char rcsid[] = "$Id: pl_2.c,v 1.2 1993/08/01 18:51:40 mycroft Exp $";
+#if 0
+static char sccsid[] = "@(#)pl_2.c     8.1 (Berkeley) 5/31/93";
+#else
+__RCSID("$NetBSD: pl_2.c,v 1.13 2009/03/15 03:33:56 dholland Exp $");
+#endif
 #endif /* not lint */
 
 #endif /* not lint */
 
+#include <signal.h>
+#include <unistd.h>
+#include "display.h"
+#include "extern.h"
 #include "player.h"
 
 #include "player.h"
 
-play()
+/*ARGSUSED*/
+void
+newturn(int n __unused)
 {
 {
-       register struct ship *sp;
+       repaired = loaded = fired = changed = 0;
+       movebuf[0] = '\0';
+
+       alarm(0);
+       if (mf->readyL & R_LOADING) {
+               if (mf->readyL & R_DOUBLE)
+                       mf->readyL = R_LOADING;
+               else
+                       mf->readyL = R_LOADED;
+       }
+       if (mf->readyR & R_LOADING) {
+               if (mf->readyR & R_DOUBLE)
+                       mf->readyR = R_LOADING;
+               else
+                       mf->readyR = R_LOADED;
+       }
+       if (!hasdriver)
+               send_ddead();
+
+       display_hide_prompt();
+       if (Sync() < 0)
+               leave(LEAVE_SYNC);
+       if (!hasdriver)
+               leave(LEAVE_DRIVER);
+       display_reshow_prompt();
+
+       if (turn % 50 == 0)
+               send_alive();
+       if (mf->FS && (!mc->rig1 || windspeed == 6))
+               send_fs(ms, 0);
+       if (mf->FS == 1)
+               send_fs(ms, 2);
+
+       if (mf->struck)
+               leave(LEAVE_QUIT);
+       if (mf->captured != 0)
+               leave(LEAVE_CAPTURED);
+       if (windspeed == 7)
+               leave(LEAVE_HURRICAN);
+
+       display_adjust_view();
+       display_redraw();
+
+       signal(SIGALRM, newturn);
+       alarm(7);
+}
+
+void
+play(void)
+{
+       struct ship *sp;
 
        for (;;) {
 
        for (;;) {
-               switch (sgetch("~\b", (struct ship *)0, 0)) {
+               blockalarm();
+               display_redraw();
+               unblockalarm();
+
+               switch (sgetch("~ ", (struct ship *)0, 0)) {
+               case 14: /* ^N */
+                       display_scroll_pagedown();
+                       break;
+               case 16: /* ^P */
+                       display_scroll_pageup();
+                       break;
                case 'm':
                        acceptmove();
                        break;
                case 'm':
                        acceptmove();
                        break;
@@ -57,7 +125,7 @@ play()
                        unfoulplayer();
                        break;
                case 'v':
                        unfoulplayer();
                        break;
                case 'v':
-                       Signal("%s", (struct ship *)0, version);
+                       Msg("%s", version);
                        break;
                case 'b':
                        acceptboard();
                        break;
                case 'b':
                        acceptboard();
@@ -75,26 +143,23 @@ play()
                        repair();
                        break;
                case 'B':
                        repair();
                        break;
                case 'B':
-                       Signal("'Hands to stations!'", (struct ship *)0);
+                       Msg("'Hands to stations!'");
                        unboard(ms, ms, 1);     /* cancel DBP's */
                        unboard(ms, ms, 0);     /* cancel offense */
                        break;
                case '\f':
                        centerview();
                        unboard(ms, ms, 1);     /* cancel DBP's */
                        unboard(ms, ms, 0);     /* cancel offense */
                        break;
                case '\f':
                        centerview();
-                       blockalarm();
-                       draw_board();
-                       draw_screen();
-                       unblockalarm();
+                       display_force_full_redraw();
                        break;
                case 'L':
                        mf->loadL = L_EMPTY;
                        mf->loadR = L_EMPTY;
                        mf->readyL = R_EMPTY;
                        mf->readyR = R_EMPTY;
                        break;
                case 'L':
                        mf->loadL = L_EMPTY;
                        mf->loadR = L_EMPTY;
                        mf->readyL = R_EMPTY;
                        mf->readyR = R_EMPTY;
-                       Signal("Broadsides unloaded", (struct ship *)0);
+                       Msg("Broadsides unloaded");
                        break;
                case 'q':
                        break;
                case 'q':
-                       Signal("Type 'Q' to quit", (struct ship *)0);
+                       Msg("Type 'Q' to quit");
                        break;
                case 'Q':
                        leave(LEAVE_QUIT);
                        break;
                case 'Q':
                        leave(LEAVE_QUIT);
@@ -106,49 +171,31 @@ play()
                        break;
                case 'i':
                        if ((sp = closestenemy(ms, 0, 1)) == 0)
                        break;
                case 'i':
                        if ((sp = closestenemy(ms, 0, 1)) == 0)
-                               Signal("No more ships left.");
+                               Msg("No more ships left.");
                        else
                                eyeball(sp);
                        break;
                case 'C':
                        centerview();
                        else
                                eyeball(sp);
                        break;
                case 'C':
                        centerview();
-                       blockalarm();
-                       draw_view();
-                       unblockalarm();
                        break;
                case 'U':
                        upview();
                        break;
                case 'U':
                        upview();
-                       blockalarm();
-                       draw_view();
-                       unblockalarm();
                        break;
                case 'D':
                case 'N':
                        downview();
                        break;
                case 'D':
                case 'N':
                        downview();
-                       blockalarm();
-                       draw_view();
-                       unblockalarm();
                        break;
                case 'H':
                        leftview();
                        break;
                case 'H':
                        leftview();
-                       blockalarm();
-                       draw_view();
-                       unblockalarm();
                        break;
                case 'J':
                        rightview();
                        break;
                case 'J':
                        rightview();
-                       blockalarm();
-                       draw_view();
-                       unblockalarm();
                        break;
                case 'F':
                        lookout();
                        break;
                case 'S':
                        dont_adjust = !dont_adjust;
                        break;
                case 'F':
                        lookout();
                        break;
                case 'S':
                        dont_adjust = !dont_adjust;
-                       blockalarm();
-                       draw_turn();
-                       unblockalarm();
                        break;
                }
        }
                        break;
                }
        }