home · contact · privacy
Client: Make worldstate file data reading order configurable.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 27 Jan 2016 22:10:10 +0000 (23:10 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 27 Jan 2016 22:10:10 +0000 (23:10 +0100)
client/config/io.py
roguelike-client

index 34dcd05e6132c288e2fa8904ced20a5c98c268e3..ecf283d760eac4550307eb9a734b8cb130264f67 100644 (file)
@@ -1,5 +1,15 @@
 io = {
     "path_out": "server/in",
     "path_in": "server/out",
-    "path_worldstate": "server/worldstate"
+    "path_worldstate": "server/worldstate",
+    "worldstate_read_order": [
+        ["lifepoints", "int"],
+        ["satiation", "int"],
+        ["inventory", "lines"],
+        ["avatar_position", "int", 0],
+        ["avatar_position", "int", 1],
+        ["map_size", "int"],
+        ["fov_map", "map"],
+        ["mem_map", "map"]
+    ]
 }
index 8e18515354b05267c441b9349d9fff36ec4a41cc..7bb862272caac1bce5949efef6eadb237d011c45 100755 (executable)
@@ -38,28 +38,27 @@ def read_worldstate():
     if read_anew:
         redraw_windows = True
         world_data["turn"] = int(turn_string)
-        world_data["lifepoints"] = int(worldstate_file.readline())
-        world_data["satiation"] = int(worldstate_file.readline())
-        world_data["inventory"] = []
-        while True:
-            line = worldstate_file.readline().replace("\n", "")
-            if line == '%':
-                break
-            world_data["inventory"] += [line]
-        world_data["avatar_position"][0] = int(worldstate_file.readline())
-        world_data["avatar_position"][1] = int(worldstate_file.readline())
+        for entry in io["worldstate_read_order"]:
+            if entry[1] == "int":
+                if 2 == len(entry):
+                    world_data[entry[0]] = int(worldstate_file.readline())
+                elif 3 == len(entry):
+                    world_data[entry[0]][entry[2]] = \
+                            int(worldstate_file.readline())
+            elif entry[1] == "lines":
+                world_data[entry[0]] = []
+                while True:
+                    line = worldstate_file.readline().replace("\n", "")
+                    if line == '%':
+                        break
+                    world_data[entry[0]] += [line]
+            elif entry[1] == "map":
+                world_data[entry[0]] = ""
+                for i in range(world_data["map_size"]):
+                    line = worldstate_file.readline().replace("\n", "")
+                    world_data[entry[0]] += line
         if not world_data["look_mode"]:
-            world_data["map_center"][0] = world_data["avatar_position"][0]
-            world_data["map_center"][1] = world_data["avatar_position"][1]
-        world_data["map_size"] = int(worldstate_file.readline())
-        world_data["fov_map"] = ""
-        for i in range(world_data["map_size"]):
-            line = worldstate_file.readline().replace("\n", "")
-            world_data["fov_map"] += line
-        world_data["mem_map"] = ""
-        for i in range(world_data["map_size"]):
-            line = worldstate_file.readline().replace("\n", "")
-            world_data["mem_map"] += line
+            world_data["map_center"] = world_data["avatar_position"][:]
     worldstate_file.close()
 read_worldstate.last_checked_mtime = -1