X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=roguelike-client;h=4514946f7da145f44b4cae9680f289e34e7dc9a2;hb=af952d4024013ea13abd205265249d5d5f5ca519;hp=7bb862272caac1bce5949efef6eadb237d011c45;hpb=cdf875d1b67cfced25569caccc74f4c45417dc96;p=plomrogue diff --git a/roguelike-client b/roguelike-client index 7bb8622..4514946 100755 --- a/roguelike-client +++ b/roguelike-client @@ -1,11 +1,15 @@ #!/usr/bin/python3 +# This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3 +# or any later version. For details on its copyright, license, and warranties, +# see the file NOTICE in the root directory of the PlomRogue source package. + + import curses import os import signal import time - from client.config.world_data import world_data from client.config.io import io from client.config.commands import commands @@ -36,6 +40,7 @@ def read_worldstate(): read_worldstate.last_checked_mtime = mtime read_anew = True if read_anew: + # TODO: Hardcode order of necessary fields, ensure order dependencies. redraw_windows = True world_data["turn"] = int(turn_string) for entry in io["worldstate_read_order"]: @@ -84,6 +89,14 @@ def read_message_queue(): redraw_windows = True elif message == "WORLD_UPDATED": query_mapcell() + elif message[:6] == "PLUGIN": + str_plugin = message[7:] + if (str_plugin.replace("_", "").isalnum() + 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