X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=interpreters%2Ffrotz%2Fglkscreen.c;fp=interpreters%2Ffrotz%2Fglkscreen.c;h=079373bed1162d9b13cbd4a5bfd2e097196e900f;hb=8027cc877937e4a65dd4e383be7fe2502dd56b90;hp=f7c8e08b30e5b7386a542001a532187c4132c775;hpb=f19a194bd066ea4320c1c6b6b8c5a375f7787af5;p=projects%2Fchimara%2Fchimara.git diff --git a/interpreters/frotz/glkscreen.c b/interpreters/frotz/glkscreen.c index f7c8e08..079373b 100644 --- a/interpreters/frotz/glkscreen.c +++ b/interpreters/frotz/glkscreen.c @@ -263,8 +263,6 @@ void smartstatusline (void) int roomlen, scorelen, scoreofs; int len, tmp; - statusline[curx - 1] = 0; /* terminate! */ - packspaces(statusline, packed); //strcpy(packed, statusline); len = os_string_length(packed); @@ -351,22 +349,38 @@ void screen_char (zchar c) else { if (cury == 1) { - if (curx < sizeof statusline) + if (curx <= ((sizeof statusline / sizeof(zchar)) - 1)) + { statusline[curx - 1] = c; - curx++; - if (curx <= h_screen_cols) + statusline[curx] = 0; + } + if (curx < h_screen_cols) + { glk_put_char_uni(c); + } + else if (curx == h_screen_cols) + { + glk_put_char_uni(c); + glk_window_move_cursor(gos_curwin, curx-1, cury-1); + } else + { smartstatusline(); + } + curx ++; } else { - glk_put_char_uni(c); - curx++; - if (curx > h_screen_cols) { - curx = 1; - cury++; + if (curx < h_screen_cols) + { + glk_put_char_uni(c); } + else if (curx == (h_screen_cols)) + { + glk_put_char_uni(c); + glk_window_move_cursor(gos_curwin, curx-1, cury-1); + } + curx++; } } }