Make renderer-msg draw somewhat more reliably

From g_src (enabler.cpp: renderer::display()), either update_all() or
update_tile() is called at least once per frame
develop
lethosor 2022-08-06 12:22:27 -04:00
parent c73200bf66
commit ac175affbc
No known key found for this signature in database
GPG Key ID: 76A269552F4F58C1
1 changed files with 13 additions and 4 deletions

@ -23,13 +23,22 @@ struct scdata {
};
struct renderer_msg : public Renderer::renderer_wrap {
virtual void update_tile (int32_t x, int32_t y) {
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();
}
void draw_message() {
static std::string str = std::string("DFHack: ") + plugin_name + " active";
Screen::paintString(Screen::Pen(' ', 9, 0), 0, gps->dimy - 1, str);
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;
renderer_wrap::update_tile(x, y);
};
}
};
DFhackCExport command_result plugin_init (color_ostream &out, std::vector <PluginCommand> &commands)