X-Git-Url: https://plomlompom.com/repos/?p=plomrogue;a=blobdiff_plain;f=roguelike-client;h=fb6c070f804d926bcc1e39346be6befe709e8103;hp=e0f8558789290a0f889eeeb0c520c623e8261e48;hb=4baa56d0423a8d59f794e10f7e5f65747613265a;hpb=3cfb2d131e570c546d8ed514b0930248a89db41b diff --git a/roguelike-client b/roguelike-client index e0f8558..fb6c070 100755 --- a/roguelike-client +++ b/roguelike-client @@ -42,6 +42,7 @@ def read_worldstate(): if read_anew: # TODO: Hardcode order of necessary fields, ensure order dependencies. redraw_windows = True + old_inventory_size = len(world_data["inventory"]) world_data["turn"] = int(turn_string) for entry in io["worldstate_read_order"]: if entry[1] == "int": @@ -64,6 +65,9 @@ def read_worldstate(): world_data[entry[0]] += line if not world_data["look_mode"]: world_data["map_center"] = world_data["avatar_position"][:] + if world_data["inventory_selection"] > 0 and \ + len(world_data["inventory"]) < old_inventory_size: + world_data["inventory_selection"] -= 1 worldstate_file.close() read_worldstate.last_checked_mtime = -1 @@ -89,11 +93,12 @@ def read_message_queue(): redraw_windows = True elif message == "WORLD_UPDATED": query_mapcell() - elif message == "PLUGIN": + elif message[:6] == "PLUGIN": str_plugin = message[7:] if (str_plugin.replace("_", "").isalnum() - and os.access("plugins/client/" + str_plugin, os.F_OK)): - exec(open("plugins/client/" + str_plugin).read()) + and os.access("plugins/client/" + str_plugin + ".py", + os.F_OK)): + exec(open("plugins/client/" + str_plugin + ".py").read()) return raise SystemExit("Invalid plugin load path in message: " + message) read_message_queue.parse_thingshere = False @@ -130,10 +135,13 @@ def cursed_main(stdscr): if new_open_end: message_queue["open_end"] = True + def set_and_redraw_windows(*ignore): + set_windows() + draw_screen() + curses.noecho() curses.curs_set(False) - signal.signal(signal.SIGWINCH, - lambda ignore_1, ignore_2: set_windows()) + signal.signal(signal.SIGWINCH, set_and_redraw_windows) set_windows() delay = 1 while True: