home · contact · privacy
Plugin: Add endgame.
[plomrogue] / roguelike-client
index 55fb9789d2a33585bc678b6e53eabf047566c7a5..4514946f7da145f44b4cae9680f289e34e7dc9a2 100755 (executable)
@@ -40,7 +40,7 @@ def read_worldstate():
             read_worldstate.last_checked_mtime = mtime
             read_anew = True
     if read_anew:
-        # TODO: Hardcore order of necessary fields, ensure dependency order.
+        # 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"]:
@@ -89,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