From cdf875d1b67cfced25569caccc74f4c45417dc96 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Wed, 27 Jan 2016 23:10:10 +0100 Subject: [PATCH] Client: Make worldstate file data reading order configurable. --- client/config/io.py | 12 +++++++++++- roguelike-client | 41 ++++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/client/config/io.py b/client/config/io.py index 34dcd05..ecf283d 100644 --- a/client/config/io.py +++ b/client/config/io.py @@ -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"] + ] } diff --git a/roguelike-client b/roguelike-client index 8e18515..7bb8622 100755 --- a/roguelike-client +++ b/roguelike-client @@ -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 -- 2.30.2