save the setup menu's itemon value in the S_END element's x coordinate (#329)

This commit is contained in:
Fabian Greffrath 2021-10-25 09:16:55 +02:00 committed by GitHub
parent f8c4863dd4
commit 324d6fd271
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1675,6 +1675,36 @@ boolean set_compat_active = false;
static int set_menu_itemon; // which setup item is selected? // phares 3/98
setup_menu_t* current_setup_menu; // points to current setup menu table
// [FG] save the setup menu's itemon value in the S_END element's x coordinate
static int M_GetSetupMenuItemOn (void)
{
const setup_menu_t* menu = current_setup_menu;
if (menu)
{
while (!(menu->m_flags & S_END))
menu++;
return menu->m_x;
}
return 0;
}
static void M_SetSetupMenuItemOn (const int x)
{
setup_menu_t* menu = current_setup_menu;
if (menu)
{
while (!(menu->m_flags & S_END))
menu++;
menu->m_x = x;
}
}
/////////////////////////////
//
// The menu_buffer is used to construct strings for display on the screen.
@ -2867,7 +2897,7 @@ void M_KeyBindings(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = keys_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -2993,7 +3023,7 @@ void M_Weapons(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = weap_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -3080,7 +3110,7 @@ void M_StatusBar(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = stat_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -3212,9 +3242,9 @@ void M_Automap(int choice)
colorbox_active = false;
default_verify = false;
setup_gather = false;
set_menu_itemon = 0;
mult_screens_index = 0;
current_setup_menu = auto_settings[0];
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -3387,7 +3417,7 @@ void M_Enemy(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = enem_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -3622,7 +3652,7 @@ void M_General(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = gen_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -3790,7 +3820,7 @@ void M_Compat(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = comp_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -3901,7 +3931,7 @@ void M_Messages(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = mess_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -3974,7 +4004,7 @@ void M_ChatStrings(int choice)
setup_gather = false;
mult_screens_index = 0;
current_setup_menu = chat_settings[0];
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
while (current_setup_menu[set_menu_itemon++].m_flags & S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
}
@ -5518,6 +5548,7 @@ boolean M_Responder (event_t* ev)
if ((action == MENU_ESCAPE) || (action == MENU_BACKSPACE))
{
M_SetSetupMenuItemOn(set_menu_itemon);
if (action == MENU_ESCAPE) // Clear all menus
M_ClearMenus();
else // key_menu_backspace = return to Setup Menu
@ -5562,8 +5593,9 @@ boolean M_Responder (event_t* ev)
{
ptr1->m_flags &= ~S_HILITE;
mult_screens_index--;
M_SetSetupMenuItemOn(set_menu_itemon);
current_setup_menu = ptr2->var.menu;
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
print_warning_about_changes = false; // killough 10/98
while (current_setup_menu[set_menu_itemon++].m_flags&S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;
@ -5584,8 +5616,9 @@ boolean M_Responder (event_t* ev)
{
ptr1->m_flags &= ~S_HILITE;
mult_screens_index++;
M_SetSetupMenuItemOn(set_menu_itemon);
current_setup_menu = ptr2->var.menu;
set_menu_itemon = 0;
set_menu_itemon = M_GetSetupMenuItemOn();
print_warning_about_changes = false; // killough 10/98
while (current_setup_menu[set_menu_itemon++].m_flags&S_SKIP);
current_setup_menu[--set_menu_itemon].m_flags |= S_HILITE;