diff --git a/plugins/devel/renderer-msg.cpp b/plugins/devel/renderer-msg.cpp index e6a33114f..1f26886c6 100644 --- a/plugins/devel/renderer-msg.cpp +++ b/plugins/devel/renderer-msg.cpp @@ -23,13 +23,33 @@ struct scdata { }; struct renderer_msg : public Renderer::renderer_wrap { - virtual void update_tile (int32_t x, int32_t y) { - static std::string str = std::string("DFHack: ") + plugin_name + " active"; - Screen::paintString(Screen::Pen(' ', 9, 0), 0, gps->dimy - 1, str); - for (int32_t i = 0; i < gps->dimx; ++i) - ((scdata*)screen)[i * gps->dimy + gps->dimy - 1].bg = 2; + bool message_dirty = true; // force redraw when renderer is installed + + virtual void update_tile(int32_t x, int32_t y) override { + draw_message(); renderer_wrap::update_tile(x, y); - }; + } + + virtual void update_all() override { + draw_message(); + renderer_wrap::update_all(); + } + + virtual void render() override { + message_dirty = true; + renderer_wrap::render(); + } + + void draw_message() { + if (message_dirty) { + static std::string str = std::string("DFHack: ") + plugin_name + " active"; + Screen::paintString(Screen::Pen(' ', COLOR_LIGHTCYAN, COLOR_GREEN), 0, gps->dimy - 1, str); + for (int32_t i = 0; i < gps->dimx; ++i) + ((scdata*)screen)[i * gps->dimy + gps->dimy - 1].bg = 2; + + message_dirty = false; + } + } }; DFhackCExport command_result plugin_init (color_ostream &out, std::vector &commands) diff --git a/scripts b/scripts index 6a66be4fa..f37c0d022 160000 --- a/scripts +++ b/scripts @@ -1 +1 @@ -Subproject commit 6a66be4facd1d5a7b3ab4cb61c34c678d19e0795 +Subproject commit f37c0d022135ca10fb5375c4e56e11215bf208ae