flush_screen() sequencing
Call display_nhwindow(WIN_MAP) after curs_on_u(). Instead of calling it a second time, it's simplest to just update status before updating the map. If anything is still leaving the cursor dangling at the end of status I think it will now dangle at the last updated position on the map.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.7 display.c $NHDT-Date: 1643491545 2022/01/29 21:25:45 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.174 $ */
|
/* NetHack 3.7 display.c $NHDT-Date: 1644440006 2022/02/09 20:53:26 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.177 $ */
|
||||||
/* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
|
/* Copyright (c) Dean Luick, with acknowledgements to Kevin Darcy */
|
||||||
/* and Dave Cohrs, 1990. */
|
/* and Dave Cohrs, 1990. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -1847,6 +1847,12 @@ flush_screen(int cursor_on_u)
|
|||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* get this done now, before we place the cursor on the hero */
|
||||||
|
if (g.context.botl || g.context.botlx)
|
||||||
|
bot();
|
||||||
|
else if (iflags.time_botl)
|
||||||
|
timebot();
|
||||||
|
|
||||||
for (y = 0; y < ROWNO; y++) {
|
for (y = 0; y < ROWNO; y++) {
|
||||||
register gbuf_entry *gptr = &g.gbuf[y][x = g.gbuf_start[y]];
|
register gbuf_entry *gptr = &g.gbuf[y][x = g.gbuf_start[y]];
|
||||||
|
|
||||||
@@ -1858,19 +1864,13 @@ flush_screen(int cursor_on_u)
|
|||||||
gptr->gnew = 0;
|
gptr->gnew = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
display_nhwindow(WIN_MAP, FALSE);
|
|
||||||
reset_glyph_bbox();
|
reset_glyph_bbox();
|
||||||
|
|
||||||
/* get this done now, before we place the cursor on the hero */
|
/* after map update, before display_nhwindow(WIN_MAP) */
|
||||||
if (g.context.botl || g.context.botlx)
|
|
||||||
bot();
|
|
||||||
else if (iflags.time_botl)
|
|
||||||
timebot();
|
|
||||||
|
|
||||||
/* This needs to be the final thing done in flush_screen */
|
|
||||||
if (cursor_on_u)
|
if (cursor_on_u)
|
||||||
curs(WIN_MAP, u.ux, u.uy); /* move cursor to the hero */
|
curs(WIN_MAP, u.ux, u.uy); /* move cursor to the hero */
|
||||||
|
|
||||||
|
display_nhwindow(WIN_MAP, FALSE);
|
||||||
flushing = 0;
|
flushing = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user