Re: [NetHack/NetHack] Prompts can overwrite copyright notice on the
starting screen (Issue #783) On 2022-06-01 12:22 p.m., NetSysFire wrote: > Steps to reproduce: > >1. Get any prompt and answer it. In my case it was a horribly old > save I forgot about or when I wiztested something and forgot > about that save, too. >2. See that the copyright information got overwritten by the prompt: > >There is already a game in progress under your name. Destroy old game? [yn] (n) > By Stichting Mathematisch Centrum and M. Stephenson. > Version 3.7.0-59 Unix Work-in-progress, built May 31 2022 12:28:31. > See license for details. > > > Shall I pick character's race, role, gender and alignment for you? [ynaq] > > Expected behavior: > > Redraw after a prompt was answered, so the prompt vanishes and the > entirety of the starting screen will be shown. > > NetHack, Copyright 1985-2022 > By Stichting Mathematisch Centrum and M. Stephenson. > Version 3.7.0-59 Unix Work-in-progress, built May 31 2022 12:28:31. > See license for details. > > > Shall I pick character's race, role, gender and alignment for you? [ynaq] > > Proposed severity: low. Not gamebreaking, it is cosmetic only and does > not have any other consequences. > The Copyright notice is placed by tty internal routines writing onto the BASE_WINDOW fairly early in the startup sequence. The prompt to "Destroy old game? [yn] (n)" is using the in-game routine to write to the message window at the top of the screen and prompt there, just like in-game prompts and messages. If the player answered 'y' to that, the prompt for "Shall I pick character's race, role, gender and alignment..." appeared immediately after. That one, however, is written using the BASE_WINDOW routines in tty, like the copyright notice. This change does the following: It moves the copyright lines down a little bit leaving room for the "Destroy.." prompts. It places the "Shall I pick characters's..." prompt further down the screen by default, leaving some room for about 3 raw_print startup messages after the copyright notice, just in case there are any. The "Shall I pick character's..." prompt will still appear immediately if there is a prompt such as "Destroy old game?..." There were a couple of other issues around raw_print startup messages too. Those are delivered using a raw_print mechanism to ensure they are written even if the window-port is not fully operational. However, they were only on the screen for the blink of an eye. This call sequence in restore.c made them disappear almost immediately: docrt() -> cls() Put in a mechanism to detect the presence of raw_print messages from the early startup, and if there were some, wait for a keypress before obliterating the unread notifications.
This commit is contained in:
@@ -101,6 +101,7 @@ struct sinfo {
|
||||
int in_self_recover;
|
||||
int in_parseoptions; /* in parseoptions */
|
||||
int config_error_ready; /* config_error_add is ready, available */
|
||||
int beyond_savefile_load; /* set when past savefile loading */
|
||||
#ifdef PANICLOG
|
||||
int in_paniclog;
|
||||
#endif
|
||||
@@ -1262,6 +1263,8 @@ struct instance_globals {
|
||||
|
||||
/* per-level glyph mapping flags */
|
||||
long glyphmap_perlevel_flags;
|
||||
int early_raw_messages; /* if raw_prints occurred early prior
|
||||
to g.beyond_savefile_load */
|
||||
|
||||
unsigned long magic; /* validate that structure layout is preserved */
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user