TextScroller::setup()
{
sound_manager->play_music(music);
- Menu::set_current(NULL);
}
void
float y = SCREEN_HEIGHT - scroll;
for(size_t i = 0; i < lines.size(); i++) {
- lines[i]->draw(context, Rect(LEFT_BORDER, y, SCREEN_WIDTH - 2*LEFT_BORDER, y), LAYER_GUI);
+ if (y + lines[i]->get_height() >= 0 && SCREEN_HEIGHT - y >= 0) {
+ lines[i]->draw(context, Rect(LEFT_BORDER, y, SCREEN_WIDTH - 2*LEFT_BORDER, y), LAYER_GUI);
+ }
+
y += lines[i]->get_height();
}
switch(format_char)
{
case ' ':
- return white_small_text;
+ return small_font;
+ break;
+ case '-':
+ return big_font;
break;
case '\t':
- return white_text;
+ case '*':
+ case '#':
+ case '!':
+ return normal_font;
+ break;
+ default:
+ return normal_font;
+ log_warning << "Unknown format_char: '" << format_char << "'" << std::endl;
+ break;
+ }
+}
+
+Color get_color_by_format_char(char format_char) {
+ switch(format_char)
+ {
+ case ' ':
+ return TextScroller::small_color;
break;
case '-':
- return white_big_text;
+ return TextScroller::heading_color;
break;
case '*':
- return blue_text;
- break;
+ return TextScroller::reference_color;
+ case '\t':
case '#':
- return white_text;
- break;
case '!':
- return 0;
+ return TextScroller::normal_color;
break;
default:
- return 0;
+ return Color(0,0,0);
log_warning << "Unknown format_char: '" << format_char << "'" << std::endl;
break;
}
}
}
-InfoBoxLine::InfoBoxLine(char format_char, const std::string& text) : lineType(NORMAL), font(white_text), text(text), image(0)
+InfoBoxLine::InfoBoxLine(char format_char, const std::string& text) : lineType(NORMAL), font(normal_font), text(text), image(0)
{
font = get_font_by_format_char(format_char);
lineType = get_linetype_by_format_char(format_char);
+ color = get_color_by_format_char(format_char);
if (lineType == IMAGE) image = new Surface(text);
}
lines.push_back(new InfoBoxLine(format_char, s2));
s = overflow;
} while (s.length() > 0);
-
}
return lines;
context.draw_surface(image, Vector( (bbox.p1.x + bbox.p2.x - image->get_width()) / 2, position.y), layer);
break;
case NORMAL_LEFT:
- context.draw_text(font, text, Vector(position.x, position.y), ALIGN_LEFT, layer);
+ context.draw_text(font, text, Vector(position.x, position.y), ALIGN_LEFT, layer, color);
break;
default:
- context.draw_text(font, text, Vector((bbox.p1.x + bbox.p2.x) / 2, position.y), ALIGN_CENTER, layer);
+ context.draw_text(font, text, Vector((bbox.p1.x + bbox.p2.x) / 2, position.y), ALIGN_CENTER, layer, color);
break;
}
}