X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=server%2Fio.py;h=ce3ee1a947eca4b9109cf4e9df51c57f41248028;hb=2235b640094c90718ec5d4984a57925a5e30e193;hp=ab3bbffc071e7e7b739c82f921ee4df71f22676b;hpb=289eb1b62e2ae3cd1de5c815a670af7cf0b9660e;p=plomrogue diff --git a/server/io.py b/server/io.py index ab3bbff..ce3ee1a 100644 --- a/server/io.py +++ b/server/io.py @@ -167,40 +167,50 @@ def save_world(): def helper(category, id_string, special_keys={}): string = "" - for id in sorted(world_db[category].keys()): - string = string + id_string + " " + str(id) + "\n" - for key in sorted(world_db[category][id].keys()): - if not key in special_keys: - x = world_db[category][id][key] + for _id in sorted(world_db[category].keys()): + string = string + id_string + " " + str(_id) + "\n" + for key in sorted(world_db[category][_id].keys()): + if key.isupper() and not key in special_keys: + x = world_db[category][_id][key] argument = quote_escape(x) if str == type(x) else str(x) string = string + key + " " + argument + "\n" - elif special_keys[key]: - string = string + special_keys[key](id) + return string + + def helper_things(): + string = "" + memmap = mapsetter("T_MEMMAP") + memdepthmap = mapsetter("T_MEMDEPTHMAP") + for tid in sorted(world_db["Things"].keys()): + string += "T_ID " + str(tid) + "\n" + t = world_db["Things"][tid] + for key in sorted(t.keys()): + if key not in {"T_CARRIES", "carried", "fovmap", "T_MEMMAP", + "T_MEMTHING", "T_MEMDEPTHMAP", "pos"}: + argument = t[key] + string += key + " " + (quote_escape(argument) if \ + str == type(argument) else str(argument)) + "\n" + string += memthing(tid) + memmap(tid) + memdepthmap(tid) return string string = "" + for plugin in world_db["PLUGIN"]: + string = string + "PLUGIN " + plugin + "\n" for key in sorted(world_db.keys()): if (not isinstance(world_db[key], dict) and not isinstance(world_db[key], list)) and key != "MAP" and \ - key != "WORLD_ACTIVE": + key != "WORLD_ACTIVE" and key[0].isupper(): string = string + key + " " + str(world_db[key]) + "\n" - for plugin in world_db["PLUGIN"]: - string = string + "PLUGIN " + plugin + "\n" string = string + mapsetter("MAP")() string = string + helper("ThingActions", "TA_ID") string = string + helper("ThingTypes", "TT_ID", {"TT_CORPSE_ID": False}) for id in sorted(world_db["ThingTypes"].keys()): string = string + "TT_ID " + str(id) + "\n" + "TT_CORPSE_ID " + \ str(world_db["ThingTypes"][id]["TT_CORPSE_ID"]) + "\n" - string = string + helper("Things", "T_ID", - {"T_CARRIES": False, "carried": False, - "T_MEMMAP": mapsetter("T_MEMMAP"), - "T_MEMTHING": memthing, "fovmap": False, - "T_MEMDEPTHMAP": mapsetter("T_MEMDEPTHMAP")}) - for id in sorted(world_db["Things"].keys()): - if [] != world_db["Things"][id]["T_CARRIES"]: - string = string + "T_ID " + str(id) + "\n" - for carried in sorted(world_db["Things"][id]["T_CARRIES"]): + string += helper_things() + for tid in sorted(world_db["Things"].keys()): + if [] != world_db["Things"][tid]["T_CARRIES"]: + string = string + "T_ID " + str(tid) + "\n" + for carried in sorted(world_db["Things"][tid]["T_CARRIES"]): string = string + "T_CARRIES " + str(carried) + "\n" string = string + "SEED_RANDOMNESS " + str(rand.seed) + "\n" + \ "WORLD_ACTIVE " + str(world_db["WORLD_ACTIVE"]) @@ -257,10 +267,10 @@ def obey(command, prefix, replay=False, do_record=False): if world_db["WORLD_ACTIVE"]: save_world() io_db["record_chunk"] = "" - io_db["save_wait"] = time.time() + io_db["save_wait_start"] = time.time() io_db["worldstate_updateable"] = world_db["WORLD_ACTIVE"] elif 0 != len(tokens): - print("Invalid command/argument, or bad number of tokens.") + print("Invalid command/argument, or bad number of tokens: " + command) def obey_lines_in_file(path, name, do_record=False): @@ -276,7 +286,7 @@ def obey_lines_in_file(path, name, do_record=False): def try_worldstate_update(): """Write worldstate file if io_db["worldstate_updateable"] is set.""" - if io_db["worldstate_updateable"]: + if world_db["WORLD_ACTIVE"] and io_db["worldstate_updateable"]: string = "" for entry in io_db["worldstate_write_order"]: if entry[1] == "world_int":