summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/message.cc
diff options
context:
space:
mode:
authorennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-04 22:23:20 +0000
committerennewalker <ennewalker@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-04 22:23:20 +0000
commit67f07e0aa94db80e3121490159da5234c06e825c (patch)
treee437f5d25c93049f85a43e959ffde3ad5b9e1e72 /crawl-ref/source/message.cc
parentf86bc5241c35f8a12e3f8f9bec6c2b4bd6f91c88 (diff)
downloadcrawl-ref-67f07e0aa94db80e3121490159da5234c06e825c.tar.gz
crawl-ref-67f07e0aa94db80e3121490159da5234c06e825c.zip
[2010665] Fixing some delay_message_clear-related bugs. Fixing issue (console and tiles) where colored output was not getting indented properly.
I also modified mpr_formatted_output to pass newline=true for the last bit of text when calling message_out. I couldn't figure out how the console version was scrolling mpr_formatted_output and the tiles version was not. However, any mpr function should always scroll the message window (in my opinion), so it seemed like the right thing to do. Also, fixing a tutorial message color formatting typo. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6399 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/message.cc')
-rw-r--r--crawl-ref/source/message.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/crawl-ref/source/message.cc b/crawl-ref/source/message.cc
index e933a4c915..957b5b6b2c 100644
--- a/crawl-ref/source/message.cc
+++ b/crawl-ref/source/message.cc
@@ -706,7 +706,7 @@ static void base_mpr(const char *inf, msg_channel_type channel, int param)
static void mpr_formatted_output(formatted_string fs, int colour)
{
- int curcol = 1;
+ int curcol = Options.delay_message_clear ? 2 : 1;
if (need_prefix)
{
@@ -715,6 +715,14 @@ static void mpr_formatted_output(formatted_string fs, int colour)
need_prefix = false;
}
+ // Find last text op so that we can scroll the output.
+ unsigned last_text = fs.ops.size();
+ for (unsigned i = 0; i < fs.ops.size(); ++i)
+ {
+ if (fs.ops[i].type == FSOP_TEXT)
+ last_text = i;
+ }
+
for (unsigned i = 0; i < fs.ops.size(); ++i)
{
switch (fs.ops[i].type)
@@ -724,7 +732,7 @@ static void mpr_formatted_output(formatted_string fs, int colour)
break;
case FSOP_TEXT:
message_out(Message_Line, colour, fs.ops[i].text.c_str(), curcol,
- false);
+ (i == last_text));
curcol += multibyte_strlen(fs.ops[i].text);
break;
case FSOP_CURSOR: