Incorporate BSD-Trek visual-scan code, just in case.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 20 Sep 2006 16:29:48 +0000 (16:29 +0000)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 20 Sep 2006 16:29:48 +0000 (16:29 +0000)
TODO
doc/sst-doc.xml
src/reports.c
src/sst.c
src/sst.h

diff --git a/TODO b/TODO
index 19769b07243242a4ece53fd9a93c9e6de9cd079b..e5a3b22dc59948dc5e52d851ffb0c7a975f5b6c0 100644 (file)
--- a/TODO
+++ b/TODO
@@ -24,12 +24,9 @@ BSD-Trek features we haven't swiped yet:
 
 * Summoning Klingons to surrender and taking captives.
 
-* Automatic bugout sets your warp factor to > 6.
-
 * Smarter computer, with multiple requests.
 
 * There is a small probility that a nova event will leave a black hole.
 
 * Multiple laser banks and beam spreading.
 
-* Visual scans for when sensors are out.
index ef762686ae86aff418fd73c1f97052857d0202ce..5807be7d0252c9201d0e152aa7ead82d1407eef9 100644 (file)
@@ -411,6 +411,21 @@ short-range scan anytime you like.</para>
 the contents of adjacent sectors.</para>
 
 </sect1>
+<!--
+<sect1><title>Visual Scan</title>
+
+<literallayout>
+Mnemonic:  VISUAL
+Shortest abbreviation: V
+</literallayout>
+
+<para>A visual scan is made in a particular direction of three sectors
+in the general direction specified.  This takes time, and Klingons can
+attack you, so it should be done only when short-range sensors are
+out.</para>
+
+</sect1>
+-->
 <sect1><title>Status Report</title>
 
 <literallayout>
index 90b9faf8fc36b6f8753de7d4728bb8a8c6cfade2..39fcf36cbed4df92796eb802f3db2b304390536d 100644 (file)
@@ -557,3 +557,74 @@ void eta(void)
     }
                        
 }
+
+#if BSD_BUG_FOR_BUG
+/*
+ *     A visual scan is made in a particular direction of three sectors
+ *     in the general direction specified.  This takes time, and
+ *     Klingons can attack you, so it should be done only when sensors
+ *     are out.  Code swiped from BSD-Trek.  Not presently used, as we
+ *     automatically display all adjacent sectors on the short-range
+ *     scan even when short-range sensors are out.
+ */
+
+/* This struct[] has the delta x, delta y for particular directions */
+coord visdelta[] =
+{
+    {-1,-1},
+    {-1, 0},
+    {-1, 1},
+    {0,         1},
+    {1,         1},
+    {1,         0},
+    {1,        -1},
+    {0,        -1},
+    {-1,-1},
+    {-1, 0},
+    {-1, 1},
+};
+
+void visual(void)
+{
+    int                co, ix, iy;
+    coord      *v;
+
+    if (scan() != IHREAL) {
+       chew();
+       proutn(_("Direction? "));
+       if (scan()!=IHREAL) {
+           huh();
+           return;
+       }
+    }
+    if (aaitem < 0.0 || aaitem > 360.0)
+       return;
+    co = (aaitem + 22) / 45;
+    v = &visdelta[co];
+    ix = game.sector.x + v->x;
+    iy = game.sector.y + v->y;
+    if (ix < 0 || ix >= QUADSIZE || iy < 0 || iy >= QUADSIZE)
+       co = '?';
+    else
+       co = game.quad[ix][iy];
+    printf("%d,%d %c ", ix, iy, co);
+    v++;
+    ix = game.sector.x + v->x;
+    iy = game.sector.y + v->y;
+    if (ix < 0 || ix >= QUADSIZE || iy < 0 || iy >= QUADSIZE)
+       co = '?';
+    else
+       co = game.quad[ix][iy];
+    printf("%c ", co);
+    v++;
+    ix = game.sector.x + v->x;
+    iy = game.sector.y + v->y;
+    if (ix < 0 || ix >= QUADSIZE || iy < 0 || iy >= QUADSIZE)
+       co = '?';
+    else
+       co = game.quad[ix][iy];
+    printf("%c %d,%d\n", co, ix, iy);
+    game.optime = 0.5;
+    game.ididit = true;
+}
+#endif
index d19698491d71a64611cf7b7a0fd6a99591a9d6cd..0ae5598fda18feb55d90af6e39fc5e25ce446751 100644 (file)
--- a/src/sst.c
+++ b/src/sst.c
@@ -291,6 +291,10 @@ commands[] = {
        {"HELP",        HELP,           0},
 #define SEED   37
        {"SEED",        SEED,           0},
+#if BSD_BUG_FOR_BUG
+#define VISUAL 38
+       {"VISUAL",      VISUAL,         0},
+#endif
 };
 
 #define NUMCOMMANDS    sizeof(commands)/sizeof(commands[0])
@@ -572,6 +576,11 @@ static void makemoves(void)
            if (key == IHREAL)
                seed = (int)aaitem;
            break;
+#if BSD_BUG_FOR_BUG
+       case VISUAL:
+           visual();                   // perform visual scan
+           break;
+#endif
        }
        commandhook(commands[i].name, false);
        for (;;) {
index 344ddcb6bfe8560faf03f8e3c0216ef8c621960f..c7a146d79f57a9abc6ec70f8f350fd84e6fc274b 100644 (file)
--- a/src/sst.h
+++ b/src/sst.h
@@ -438,6 +438,9 @@ void makechart(void);
 void enqueue(char *);
 char *systemname(int);
 coord newkling(int);
+#if BSD_BUG_FOR_BUG
+void visual(void);
+#endif
 
 extern WINDOW *curwnd;
 extern WINDOW *fullscreen_window;