Mercurial > hg > rlgallery-misc
diff py/rlgall.py @ 42:e1de8aeb5ed4
Add depth and maxdepth columns to the RogueGame tables.
author | John "Elwin" Edwards |
---|---|
date | Sat, 11 Jan 2014 10:45:33 -0500 |
parents | d3ccdc195796 |
children | 0f4163dbbafc |
line wrap: on
line diff
--- a/py/rlgall.py Fri Jan 10 17:01:11 2014 -0500 +++ b/py/rlgall.py Sat Jan 11 10:45:33 2014 -0500 @@ -2,6 +2,7 @@ # Module for the Roguelike Gallery, using a postgres database # Requires Python 3.3 +import re import os import psycopg2 from datetime import datetime @@ -303,9 +304,9 @@ self.uname = uname self.scores = logdir + uname + ".log" self.logspec = ["endt", "score", "name", "xl", "fate"] - self.sqltypes = {"endt": "timestamptz", "score": "int", - "name": "varchar(20)", "xl": "int", "fate": "text", - "ttyrecs": "text ARRAY", "startt": "timestamptz"} + self.sqltypes = {"endt": "timestamptz", "score": "int", "name": "text", + "xl": "int", "fate": "text", "ttyrecs": "text ARRAY", + "startt": "timestamptz", "depth": "int", "maxdepth": "int"} self.logdelim = " " self.lookback = -1500 # Construct the insert query @@ -375,6 +376,27 @@ conn.commit() cur.close() return + def postprocess(self, gamelist): + lre = re.compile("^(quit|killed by (.*)) on level ([0-9]*)( \\[max ([0-9]*)\\] with the Amulet)?$") + wre = re.compile("^escaped with the Amulet \\[deepest level: ([0-9]*)\\]$") + for d in gamelist: + m = lre.match(d["fate"]) + if m: + d["depth"] = int(m.group(3)) + if m.group(4): + d["maxdepth"] = int(m.group(5)) + else: + d["maxdepth"] = d["depth"] + else: + m = wre.match(d["fate"]) + if m: + d["depth"] = 0 + d["maxdepth"] = int(m.group(1)) + else: + # Something went wrong + d["depth"] = -1 + d["maxdepth"] = -1 + Game.postprocess(self, gamelist) # End RogueGame class definition class ARogueGame(Game):