In the grapher, split forset from surface mode.
authorEric S. Raymond <esr@thyrsus.com>
Wed, 20 Apr 2022 11:08:11 +0000 (07:08 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Wed, 20 Apr 2022 11:15:18 +0000 (07:15 -0400)
adventure.yaml
make_graph.py

index b1c4358c762c2972a0b8c2839f5b52c2cb47dc45..4410767388bdf48395c2a35a1d4b33e96f3fd4b3 100644 (file)
@@ -369,7 +369,7 @@ locations: !!omap
     description:
       long: !!null
       short: !!null
-      maptag: !!null
+      maptag: 'Nowhere'
     conditions: {}
     travel: [
     ]
index cd085f4f65f2637eba1ae7cc9b470e97a8a82615..f29c3e183b5a1b1ef1057e01a1aa7c849ef870fc 100755 (executable)
@@ -6,8 +6,9 @@ Make a DOT graph of Colossal Cave.
 
 -a = emit graph of entire dungeon
 -d = emit graoh of mazw all different
+-f = emit graph of forest locations
 -m = emit graph of maze all alike
--s = emit graph of surface locations
+-s = emit graph of non-forest surface locations
 -v = include internal sy,no;s in room labels
 """
 # Copyright (c) 2017 by Eric S. Raymond
@@ -25,12 +26,10 @@ def alldifferent(loc):
 
 def surface(loc):
     "Select out surface locations"
-    attrs = location_lookup[loc]
-    if ("ABOVE" in attrs["conditions"]) and attrs["conditions"]["ABOVE"]:
-        return True
-    if ("FOREST" in attrs["conditions"]) and attrs["conditions"]["FOREST"]:
-        return True
-    return False
+    return location_lookup[loc]["conditions"].get("ABOVE")
+
+def forest(loc):
+    return location_lookup[loc]["conditions"].get("FOREST")
 
 def abbreviate(d):
     m = {"NORTH":"N", "EAST":"E", "SOUTH":"S", "WEST":"W", "UPWAR":"U", "DOWN":"D"}
@@ -112,7 +111,7 @@ if __name__ == "__main__":
     object_lookup = dict(db["objects"])
 
     try:
-        (options, arguments) = getopt.getopt(sys.argv[1:], "admsv")
+        (options, arguments) = getopt.getopt(sys.argv[1:], "adfmsv")
     except getopt.GetoptError as e:
         print(e)
         sys.exit(1)
@@ -124,6 +123,8 @@ if __name__ == "__main__":
             subset = lambda loc: True
         elif switch == '-d':
             subset = alldifferent
+        elif switch == '-f':
+            subset = forest
         elif switch == '-m':
             subset = allalike
         elif switch == '-s':