diff options
author | Robert Vollmert <rvollmert@gmx.net> | 2009-11-30 18:41:17 +0100 |
---|---|---|
committer | Robert Vollmert <rvollmert@gmx.net> | 2009-11-30 18:43:49 +0100 |
commit | 5c691a1fabc13637a532a769dcc110a322ac183d (patch) | |
tree | 5b9b95e6c1f7bdc7ab788bc3dd8787bc98caefeb /crawl-ref/source/message.cc | |
parent | 67649f268ee6b3fa0a3352e764163c511606fe18 (diff) | |
download | crawl-ref-5c691a1fabc13637a532a769dcc110a322ac183d.tar.gz crawl-ref-5c691a1fabc13637a532a769dcc110a322ac183d.zip |
Start messages at window bottom with delay_message_clear.
Diffstat (limited to 'crawl-ref/source/message.cc')
-rw-r--r-- | crawl-ref/source/message.cc | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/crawl-ref/source/message.cc b/crawl-ref/source/message.cc index 561247b7ea..4e7eea3d02 100644 --- a/crawl-ref/source/message.cc +++ b/crawl-ref/source/message.cc @@ -69,7 +69,7 @@ bool did_flush_message = false; int Next_Message = 0; // end of messages -int Message_Line = 0; // line of next (previous?) message +int Message_Line = -1; // line of next (previous?) message int New_Message_Count = 0; static FILE* _msg_dump_file = NULL; @@ -671,11 +671,24 @@ static bool channel_message_history(msg_channel_type channel) } } +// Set (or reset if "force") Message_Line. +// XXX: the uses of set_Message_Line(false) could be done +// once at startup +static void set_Message_Line(bool force = false) +{ + if (!force && Message_Line >= 0) + return; + Message_Line = Options.delay_message_clear + ? crawl_view.msgsz.y - 1 + : 0; +} + // Adds a given message to the message history. static void mpr_store_messages(const std::string& message, msg_channel_type channel, int param, unsigned char colour, int repeats = 1) { + set_Message_Line(); bool was_repeat = false; if (Options.msg_condense_repeats) @@ -835,6 +848,8 @@ static void base_mpr(const char *inf, msg_channel_type channel, int param, snprintf(info, INFO_SIZE, "%s (x%d)", inf, repeats); inf = info; } + + set_Message_Line(); message_out(&Message_Line, colour, inf, Options.delay_message_clear ? 2 : 1); @@ -871,6 +886,7 @@ static void mpr_formatted_output(formatted_string fs, int colour) last_text = i; } + set_Message_Line(); for (unsigned i = 0; i < fs.ops.size(); ++i) { switch (fs.ops[i].type) @@ -1001,6 +1017,7 @@ void mesclr(bool force) if (!force && Options.delay_message_clear) { + set_Message_Line(); message_out(&Message_Line, WHITE, "-", 1); return; } @@ -1009,7 +1026,7 @@ void mesclr(bool force) cursor_control cs(false); clear_message_window(); - Message_Line = 0; + set_Message_Line(true); } static bool autoclear_more = false; |