Refactored the ansi_parser into a class that can be reused between render calls.
This commit is contained in:
parent
e864e14eab
commit
fd8180bc61
6 changed files with 68 additions and 27 deletions
10
render.cpp
10
render.cpp
|
@ -30,7 +30,10 @@ SFMLRender::SFMLRender(Canvas &canvas, Screen &map_screen, Screen &screen) :
|
|||
$line_spacing(0),
|
||||
$canvas(canvas),
|
||||
$map_screen(map_screen),
|
||||
$screen(screen)
|
||||
$screen(screen),
|
||||
$default_fg(color(Value::LIGHT_MID)),
|
||||
$default_bg(color(Value::BLACK)),
|
||||
$ansi($default_fg, $default_bg)
|
||||
{
|
||||
$font.loadFromFile("./assets/text.otf");
|
||||
$ui_text.setFont($font);
|
||||
|
@ -80,17 +83,14 @@ void SFMLRender::draw_screen(bool clear, float map_off_x, float map_off_y) {
|
|||
draw_main_ui();
|
||||
|
||||
std::string map_screenout = $map_screen.ToString();
|
||||
std::wstring map_screen_utf8 = $converter.from_bytes(map_screenout);
|
||||
|
||||
float y = 0.0f;
|
||||
float x = GAME_MAP_POS;
|
||||
// make a copy so we don't modify the cached one
|
||||
auto bg_sprite = get_text_sprite(BG_TILE);
|
||||
auto bg_bounds = bg_sprite.getLocalBounds();
|
||||
sf::Color def_fg(color(Value::MID));
|
||||
sf::Color def_bg(color(Value::BLACK));
|
||||
|
||||
parse_ansi(map_screen_utf8, def_fg, def_bg, [&](sf::Color bg, sf::Color fg, wchar_t tile) {
|
||||
$ansi.parse(map_screenout, [&](sf::Color bg, sf::Color fg, wchar_t tile) {
|
||||
if(tile == '\n') {
|
||||
// don't bother processing newlines, just skip
|
||||
y += $line_spacing;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue