Make the travel table in the dungeon.c output easier to read.

This commit is contained in:
Eric S. Raymond 2017-07-06 15:55:28 -04:00
parent 004693c261
commit 7b13a88429

View file

@ -673,7 +673,7 @@ def buildtravel(locs, objs):
tt = [i] tt = [i]
dest = dencode(rule["action"], name) + 1000 * cencode(rule.get("cond"), name) dest = dencode(rule["action"], name) + 1000 * cencode(rule.get("cond"), name)
tt.append(dest) tt.append(dest)
tt += [verbmap[e] for e in rule["verbs"]] tt += [motionnames[verbmap[e]].upper() for e in rule["verbs"]]
if not rule["verbs"]: if not rule["verbs"]:
tt.append(1) tt.append(1)
ltravel.append(tuple(tt)) ltravel.append(tuple(tt))
@ -702,7 +702,7 @@ def buildtravel(locs, objs):
# #
# In order to de-crypticize the runtime code, we're going to break these # In order to de-crypticize the runtime code, we're going to break these
# magic numbers up into a struct. # magic numbers up into a struct.
travel = [[0, 0, 0, False, False]] travel = [[0, 0, 0, "false", "false"]]
tkey = [0] tkey = [0]
oldloc = 0 oldloc = 0
while ltravel: while ltravel:
@ -713,15 +713,15 @@ def buildtravel(locs, objs):
tkey.append(len(travel)) tkey.append(len(travel))
oldloc = loc oldloc = loc
elif travel: elif travel:
travel[-1][-1] = not travel[-1][-1] travel[-1][-1] = "false" if travel[-1][-1] == "true" else "true"
while rule: while rule:
cond = newloc // 1000 cond = newloc // 1000
travel.append([rule.pop(0), travel.append([rule.pop(0),
cond, cond,
newloc % 1000, newloc % 1000,
cond==100, "true" if cond==100 else "false",
False]) "false"])
travel[-1][-1] = True travel[-1][-1] = "true"
return (travel, tkey) return (travel, tkey)
def get_travel(travel): def get_travel(travel):
@ -735,7 +735,7 @@ def get_travel(travel):
""" """
out = "" out = ""
for entry in travel: for entry in travel:
out += template.format(*entry).lower() out += template.format(*entry)
out = out[:-1] # trim trailing newline out = out[:-1] # trim trailing newline
return out return out
@ -746,6 +746,7 @@ if __name__ == "__main__":
locnames = [x[0] for x in db["locations"]] locnames = [x[0] for x in db["locations"]]
msgnames = [el[0] for el in db["arbitrary_messages"]] msgnames = [el[0] for el in db["arbitrary_messages"]]
objnames = [el[0] for el in db["objects"]] objnames = [el[0] for el in db["objects"]]
motionnames = [el[0] for el in db["motions"]]
(travel, tkey) = buildtravel(db["locations"], (travel, tkey) = buildtravel(db["locations"],
db["objects"]) db["objects"])