changing level workaround (C341-13)

Use a new flush_screen(-1) call to toggle 3rd screen update in goto_level.
This keeps the 3rd screen state unchanged, no matter what happens at higher
levels, ensures the map window cursor stays on the hero, ensures the
hero's showrace colors remains bright white, and so on.
This commit is contained in:
cohrs
2003-10-25 19:28:54 +00:00
parent 125d1f1cf1
commit cd7e1163e1
3 changed files with 6 additions and 1 deletions
+1
View File
@@ -81,6 +81,7 @@ when polymorphed into a quantum mechanic on a no teleport level and swallowed,
allow Conflict-resistant monsters to respond to conflict attacks rather than allow Conflict-resistant monsters to respond to conflict attacks rather than
sitting there and taking the attacks until they die sitting there and taking the attacks until they die
prefer herbivorous stone-to-flesh message when hero is a vegitarian prefer herbivorous stone-to-flesh message when hero is a vegitarian
try even harder to avoid incorrect map display while changing levels
Platform- and/or Interface-Specific Fixes Platform- and/or Interface-Specific Fixes
+3
View File
@@ -1346,8 +1346,11 @@ flush_screen(cursor_on_u)
* flush_screen->print_glyph->impossible->pline->flush_screen * flush_screen->print_glyph->impossible->pline->flush_screen
*/ */
static boolean flushing = 0; static boolean flushing = 0;
static boolean delay_flushing = 0;
register int x,y; register int x,y;
if (cursor_on_u == -1) delay_flushing = !delay_flushing;
if (delay_flushing) return;
if (flushing) return; /* if already flushing then return */ if (flushing) return; /* if already flushing then return */
flushing = 1; flushing = 1;
+2 -1
View File
@@ -1094,6 +1094,7 @@ boolean at_stairs, falling, portal;
/* do this prior to level-change pline messages */ /* do this prior to level-change pline messages */
vision_reset(); /* clear old level's line-of-sight */ vision_reset(); /* clear old level's line-of-sight */
vision_full_recalc = 0; /* don't let that reenable vision yet */ vision_full_recalc = 0; /* don't let that reenable vision yet */
flush_screen(-1); /* ensure all map flushes are postponed */
if (portal && !In_endgame(&u.uz)) { if (portal && !In_endgame(&u.uz)) {
/* find the portal on the new level */ /* find the portal on the new level */
@@ -1243,7 +1244,7 @@ boolean at_stairs, falling, portal;
/* Reset the screen. */ /* Reset the screen. */
vision_reset(); /* reset the blockages */ vision_reset(); /* reset the blockages */
docrt(); /* does a full vision recalc */ docrt(); /* does a full vision recalc */
flush_screen(1); flush_screen(-1);
/* /*
* Move all plines beyond the screen reset. * Move all plines beyond the screen reset.