more bot() tinkering

This commit is contained in:
nhmall
2023-11-17 09:47:39 -05:00
parent a46c71f4c5
commit 0a13d759a3
7 changed files with 13 additions and 4 deletions
+3
View File
@@ -201,6 +201,9 @@ struct instance_globals_b {
/* zap.c */ /* zap.c */
struct monst *buzzer; /* zapper/caster/breather who initiates buzz() */ struct monst *buzzer; /* zapper/caster/breather who initiates buzz() */
/* new */
boolean bot_disabled;
boolean havestate; boolean havestate;
unsigned long magic; /* validate that structure layout is preserved */ unsigned long magic; /* validate that structure layout is preserved */
}; };
+1 -1
View File
@@ -763,7 +763,7 @@ struct sinfo {
int in_checkpoint; /* saving insurance checkpoint */ int in_checkpoint; /* saving insurance checkpoint */
int in_parseoptions; /* in parseoptions */ int in_parseoptions; /* in parseoptions */
int in_role_selection; /* role/race/&c selection menus in progress */ int in_role_selection; /* role/race/&c selection menus in progress */
int in_getlin; /* inside interface getline routine */ int in_getlin; /* inside interface getlin routine */
int config_error_ready; /* config_error_add is ready, available */ int config_error_ready; /* config_error_add is ready, available */
int beyond_savefile_load; /* set when past savefile loading */ int beyond_savefile_load; /* set when past savefile loading */
#ifdef PANICLOG #ifdef PANICLOG
+2 -2
View File
@@ -245,7 +245,7 @@ do_statusline2(void)
void void
bot(void) bot(void)
{ {
if (gp.program_state.in_getlin) if (gb.bot_disabled)
return; return;
/* dosave() flags completion by setting u.uhp to -1; suppress_map_output() /* dosave() flags completion by setting u.uhp to -1; suppress_map_output()
covers program_state.restoring and is used for status as well as map */ covers program_state.restoring and is used for status as well as map */
@@ -267,7 +267,7 @@ bot(void)
void void
timebot(void) timebot(void)
{ {
if (gp.program_state.in_getlin) if (gb.bot_disabled)
return; return;
/* we're called when iflags.time_botl is set and general gc.context.botl /* we're called when iflags.time_botl is set and general gc.context.botl
is clear; iflags.time_botl gets set whenever gm.moves changes value is clear; iflags.time_botl gets set whenever gm.moves changes value
+1
View File
@@ -248,6 +248,7 @@ const struct instance_globals_b g_init_b = {
FALSE, /* bucx_filter */ FALSE, /* bucx_filter */
/* zap.c */ /* zap.c */
NULL, /* buzzer -- monst that zapped/cast/breathed to initiate buzz() */ NULL, /* buzzer -- monst that zapped/cast/breathed to initiate buzz() */
FALSE, /* bot_disabled */
TRUE, /* havestate*/ TRUE, /* havestate*/
IVMAGIC /* b_magic to validate that structure layout has been preserved */ IVMAGIC /* b_magic to validate that structure layout has been preserved */
+1
View File
@@ -851,6 +851,7 @@ panic VA_DECL(const char *, str)
if (gp.program_state.panicking++) if (gp.program_state.panicking++)
NH_abort(NULL); /* avoid loops - this should never happen*/ NH_abort(NULL); /* avoid loops - this should never happen*/
gb.bot_disabled = TRUE;
if (iflags.window_inited) { if (iflags.window_inited) {
raw_print("\r\nOops..."); raw_print("\r\nOops...");
wait_synch(); /* make sure all pending output gets flushed */ wait_synch(); /* make sure all pending output gets flushed */
+4
View File
@@ -1682,8 +1682,12 @@ get_menu_coloring(const char *str, int *color, int *attr)
void void
getlin(const char *query, register char *bufp) getlin(const char *query, register char *bufp)
{ {
boolean old_bot_disabled = gb.bot_disabled;
gp.program_state.in_getlin = 1; gp.program_state.in_getlin = 1;
gb.bot_disabled = TRUE;
(*windowprocs.win_getlin)(query, bufp); (*windowprocs.win_getlin)(query, bufp);
gb.bot_disabled = old_bot_disabled;
gp.program_state.in_getlin = 0; gp.program_state.in_getlin = 0;
} }
/*windows.c*/ /*windows.c*/
+1 -1
View File
@@ -152,7 +152,7 @@ curses_status_update(
if (fldidx != BL_FLUSH) { if (fldidx != BL_FLUSH) {
if (fldidx < 0 || fldidx >= MAXBLSTATS) { if (fldidx < 0 || fldidx >= MAXBLSTATS) {
gc.context.botlx = gc.context.botl = FALSE; /* avoid bot() */ /* panic immediately sets gb.bot_disabled to avoid bot() */
panic("curses_status_update(%d)", fldidx); panic("curses_status_update(%d)", fldidx);
} }
changed_fields |= (1 << fldidx); changed_fields |= (1 << fldidx);