Added options command, fixed some tests to be insensitive...
authorEric S. Raymond <esr@thyrsus.com>
Mon, 14 Aug 2023 01:59:17 +0000 (21:59 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Mon, 14 Aug 2023 01:59:17 +0000 (21:59 -0400)
...to the command list.

doc/sst-doc.xml
sst
test/test03.chk
test/test03.log
test/test06.chk
test/test06.log
test/test08.chk
test/test08.log

index 6f7051fd28304731c8ae4f2ec5b2d642a48aedf7..b7c0681e8cd63d080338316b7fb79e9e115af45b 100644 (file)
@@ -942,7 +942,7 @@ will hurt your final score.</para>
 
 <literallayout>
 Mnemonic:  CAPTURE
-Shortest abbreviation:  CA
+Shortest abbreviation:  CAPTURE
 Full commands:  CAPTURE
 </literallayout>
 
@@ -1501,6 +1501,20 @@ Full command:  CURSES
 <para>Switch from tty to curses interface. Mainly useful for
 debugging, when continuing a replayed game.</para>
 
+</sect1>
+<sect1><title>Option setting</title>
+
+<literallayout>
+Mnemonic:  OP
+Full command:  OPTIONS
+               OPTIONS SET
+              OPTIONS CLEAR
+</literallayout>
+
+<para>Set or clear feature flags. With no argument, list feature flags. The verbs SET and CLEAR
+are available to set or clear a list of feature flags following on the line.  Mainly useful
+for development and improving test coverage.</para>
+
 </sect1>
 </chapter>
 <chapter><title>Miscellaneous Notes</title>
@@ -1657,6 +1671,7 @@ orientation</quote>.</para>
  T         TRANSPORT                              transporter
  W         WARP &lt;FACTOR&gt;                          (none)
  CU        CURSES                                 (none)
+ OP        OPTIONS                                (none)
  
  L. R. Scan:   thousands digit:   supernova
                hundreds digit:    Klingons
diff --git a/sst b/sst
index 7cbccffa28dd4efe463357015b2200d01b692fc6..a95c9b7372d8da1f1cb7c700c73122567c7bd21f 100755 (executable)
--- a/sst
+++ b/sst
@@ -316,6 +316,29 @@ OPTION_ALMY       = 0x02000000        # user chose Almy variant
 OPTION_COLOR      = 0x04000000        # enable color display (ESR, 2010)
 OPTION_DOTFILL    = 0x08000000        # fix dotfill glitch in chart (ESR, 2019)
 
+option_names = {
+    "ALL": OPTION_ALL,
+    "TTY": OPTION_TTY,
+    "IOMODES": OPTION_IOMODES,
+    "PLANETS": OPTION_PLANETS,
+    "THOLIAN": OPTION_THOLIAN,
+    "THINGY": OPTION_THINGY,
+    "PROBE": OPTION_PROBE,
+    "SHOWME": OPTION_SHOWME,
+    "RAMMING": OPTION_RAMMING,
+    "MVBADDY": OPTION_MVBADDY,
+    "BLKHOLE": OPTION_BLKHOLE,
+    "BASE": OPTION_BASE,
+    "WORLDS": OPTION_WORLDS,
+    "AUTOSCAN": OPTION_AUTOSCAN,
+    "CAPTURE": OPTION_CAPTURE,
+    "CLOAK": OPTION_CLOAK,
+    "PLAIN": OPTION_PLAIN,
+    "ALMY": OPTION_ALMY,
+    "COLOR": OPTION_COLOR,
+    "DOTFILL": OPTION_DOTFILL,
+    }
+
 # Define devices
 DSRSENS         = 0
 DLRSENS         = 1
@@ -5581,6 +5604,42 @@ def eta():
             skip(1)
             return
 
+# This is new in SST2K.
+
+def goptions():
+    mode = scanner.nexttok()
+    if mode == "IHEOL":
+        active = []
+        for k, v in option_names.items():
+            if (v & game.options) and k != "ALL":
+                active.append(k)
+        active.sort()
+        prout(str(" ".join(active)))
+    elif scanner.token in {"set", "clear"}:
+        mode = scanner.token
+        changemask = 0
+        while True:
+            scanner.nexttok()
+            if scanner.type == "IHEOL":
+                break
+            if scanner.token.upper() in option_names:
+                changemask |= option_names[scanner.token.upper()]
+            else:
+                prout(_("No such option as ") + scanner.token)
+        if mode == "set":
+            if (not (game.options & OPTION_CURSES)) and (changemask & OPTION_CURSES):
+                iostart()
+            game.options |= changemask
+        elif mode == "clear":
+            if (game.options & OPTION_CURSES) and (not (changemask & OPTION_CURSES)):
+                ioend()
+            game.options &=~ changemask
+        prout(_("Acknowledged, Captain."))
+    else:
+        huh()
+    scanner.chew()
+    skip(1)
+
 # Code from setup.c begins here
 
 def prelim():
@@ -6217,7 +6276,9 @@ commands = [
     ("PROBE",            OPTION_PROBE),
     ("SAVE",             0),
     ("FREEZE",           0),        # Synonym for SAVE
+    ("OPTIONS",          0),
     ("ABANDON",          0),
+    # No abbreviations accepted after this point
     ("DESTRUCT",         0),
     ("DEATHRAY",         0),
     ("CAPTURE",          OPTION_CAPTURE),
@@ -6229,7 +6290,7 @@ commands = [
     ("QUIT",             0),
     ("HELP",             0),
     ("SCORE",            0),
-    ("CURSES",            0),
+    ("CURSES",           0),
     ("",                 0),
 ]
 
@@ -6453,6 +6514,8 @@ def makemoves():
         elif cmd == "CURSES":
             game.options |= (OPTION_CURSES | OPTION_COLOR)
             iostart()
+        elif cmd == "OPTIONS":
+            goptions()
         while True:
             if game.alldone:
                 break                # Game has ended
index 3941efbc0f58ca837122a1330828498ae8f08aad..19efd30503c9e02fda15da08944fd29bcc488013 100644 (file)
@@ -51,17 +51,6 @@ Entering Quadrant 4 - 1.
 Enemy attack reduces shield strength to 87%,   torpedoes left 10
 
 Enemy attack reduces shield strength to 78%,   torpedoes left 10
-COMMAND> laser auto
-LEGAL COMMANDS ARE:
-SRSCAN       STATUS       REQUEST      LRSCAN       
-PHASERS      TORPEDO      PHOTONS      MOVE         SHIELDS      
-DOCK         DAMAGES      CHART        IMPULSE      REST         
-WARP         SENSORS      ORBIT        TRANSPORT    MINE         
-CRYSTALS     SHUTTLE      PLANETS      REPORT       COMPUTER     
-COMMANDS     EMEXIT       PROBE        SAVE         FREEZE       
-ABANDON      DESTRUCT     DEATHRAY     CAPTURE      CLOAK        
-DEBUG        MAYDAY       SOS          CALL         QUIT         
-HELP         SCORE        CURSES                    
 COMMAND> p a
 
 Weapons Officer Sulu-  "High-speed shield control enabled, sir."
index 8667f28d86f6c9a6adc0956f3c321a6afd1c4861..e806862bf0da201bb6cef6778e7e03da14a67a0f 100644 (file)
@@ -9,7 +9,6 @@ m a 3 1 1 10
 m a 10 10
 sh up
 m a 4 1 1 10
-laser auto
 p a
 1883
 p a
index a3180a9c33737705639240c90cf1e6e7c2a6e521..de8fcd652fc5576ed5b07b5a7eb0dbffecb63508 100644 (file)
@@ -158,17 +158,6 @@ COMMAND> orbit
 
 Helmsman Sulu-  "Entering standard orbit, Sir."
 Sulu-  "Entered orbit at altitude 7779.00 kilometers."
-COMMAND> beam
-LEGAL COMMANDS ARE:
-SRSCAN       STATUS       REQUEST      LRSCAN       
-PHASERS      TORPEDO      PHOTONS      MOVE         SHIELDS      
-DOCK         DAMAGES      CHART        IMPULSE      REST         
-WARP         SENSORS      ORBIT        TRANSPORT    MINE         
-CRYSTALS     SHUTTLE      PLANETS      REPORT       COMPUTER     
-COMMANDS     EMEXIT       PROBE        SAVE         FREEZE       
-ABANDON      DESTRUCT     DEATHRAY     CAPTURE      CLOAK        
-DEBUG        MAYDAY       SOS          CALL         QUIT         
-HELP         SCORE        CURSES                    
 COMMAND> shuttle
 
 Spock-  "Captain, we have no information on this planet
index 15759012e30ca747c2fa2705f48e75259b79ed46..3c565bcbbdee4fd5769fc5aea5307a218bc6cee7 100644 (file)
@@ -25,7 +25,6 @@ m a 2 5
 m a 2 9
 m a 4 9
 orbit
-beam
 shuttle
 crystals
 shuttle
index 3fa8cd1daf49da9d69aaefb6f2fc0d71628e8479..b89875132aa835853c6f061ca53dea8af7012d13 100644 (file)
@@ -137,17 +137,6 @@ COMMAND> chart
 
 COMMAND> m a 1 10
 
-COMMAND> xhart
-LEGAL COMMANDS ARE:
-SRSCAN       STATUS       REQUEST      LRSCAN       
-PHASERS      TORPEDO      PHOTONS      MOVE         SHIELDS      
-DOCK         DAMAGES      CHART        IMPULSE      REST         
-WARP         SENSORS      ORBIT        TRANSPORT    MINE         
-CRYSTALS     SHUTTLE      PLANETS      REPORT       COMPUTER     
-COMMANDS     EMEXIT       PROBE        SAVE         FREEZE       
-ABANDON      DESTRUCT     DEATHRAY     CAPTURE      CLOAK        
-DEBUG        MAYDAY       SOS          CALL         QUIT         
-HELP         SCORE        CURSES                    
 COMMAND> chart
        STAR CHART FOR THE KNOWN GALAXY
       1    2    3    4    5    6    7    8
@@ -239,41 +228,6 @@ COMMAND> chart
 7 | ..1  ..8  .11  ..5  ..4  ...  ...  ...   |
 8 | ..5  ..7  .19  ..5  ..7  ...  ...  ...   |
 
-COMMAND> chart 6 2 1 10
-       STAR CHART FOR THE KNOWN GALAXY
-      1    2    3    4    5    6    7    8
-1 | ..3  ..4  ..4  ..1  ..7  ..5  ..3  ..3   |
-2 | ...  ...  ...  .1.  .1.  ...  ..7  ..3   |
-3 | ...  ...  ...  ...  ...  ...  ...  ...   |
-4 | ..1  ..2  ..7  ...  ...  ...  ...  ...   |
-5 | 209 <..5> ..2  ...  ...  ...  ...  ...   |
-6 | ..7  207  ..2  ..5  ..2  ...  ...  ...   |
-7 | ..1  ..8  .11  ..5  ..4  ...  ...  ...   |
-8 | ..5  ..7  .19  ..5  ..7  ...  ...  ...   |
-
-COMMAND> n a 6 2 1 10
-LEGAL COMMANDS ARE:
-SRSCAN       STATUS       REQUEST      LRSCAN       
-PHASERS      TORPEDO      PHOTONS      MOVE         SHIELDS      
-DOCK         DAMAGES      CHART        IMPULSE      REST         
-WARP         SENSORS      ORBIT        TRANSPORT    MINE         
-CRYSTALS     SHUTTLE      PLANETS      REPORT       COMPUTER     
-COMMANDS     EMEXIT       PROBE        SAVE         FREEZE       
-ABANDON      DESTRUCT     DEATHRAY     CAPTURE      CLOAK        
-DEBUG        MAYDAY       SOS          CALL         QUIT         
-HELP         SCORE        CURSES                    
-COMMAND> chart
-       STAR CHART FOR THE KNOWN GALAXY
-      1    2    3    4    5    6    7    8
-1 | ..3  ..4  ..4  ..1  ..7  ..5  ..3  ..3   |
-2 | ...  ...  ...  .1.  .1.  ...  ..7  ..3   |
-3 | ...  ...  ...  ...  ...  ...  ...  ...   |
-4 | ..1  ..2  ..7  ...  ...  ...  ...  ...   |
-5 | 209 <..5> ..2  ...  ...  ...  ...  ...   |
-6 | ..7  207  ..2  ..5  ..2  ...  ...  ...   |
-7 | ..1  ..8  .11  ..5  ..4  ...  ...  ...   |
-8 | ..5  ..7  .19  ..5  ..7  ...  ...  ...   |
-
 COMMAND> m a 6 2 1 10
 
 Ensign Chekov- "Course laid in, Captain."
index e0a70b6109baeec34b0f65804b15d8484530ef7a..6c17828e48ea21bd735a199462fb835ade63fc84 100644 (file)
@@ -22,7 +22,6 @@ m a 6 10
 dock
 chart
 m a 1 10
-xhart
 chart
 m a 7 4 1 10
 chart
@@ -34,9 +33,6 @@ sh up
 chart
 m a 5 2 10 10
 chart
-chart 6 2 1 10
-n a 6 2 1 10
-chart
 m a 6 2 1 10
 m a 1 9
 torp 2 5 9 5 9