From: Holger Schemel Date: Sat, 30 May 2015 23:58:47 +0000 (+0200) Subject: fixed bug in new generic menu handling code X-Git-Tag: 4.0.0.0-rc1~183 X-Git-Url: https://git.artsoft.org/?a=commitdiff_plain;h=f5d2f1b19616e71041d28367229370e125dbc194;p=rocksndiamonds.git fixed bug in new generic menu handling code --- diff --git a/src/screens.c b/src/screens.c index 6ee974e0..deb4da87 100644 --- a/src/screens.c +++ b/src/screens.c @@ -2178,10 +2178,10 @@ static void changeSetupValue(int, int, int); void HandleMenuScreen(int mx, int my, int dx, int dy, int button, int mode, int num_page_entries, int max_page_entries) { - static int game_status_last; - static int num_page_entries_last[NUM_SPECIAL_GFX_ARGS]; + static int num_page_entries_all_last[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; static int choice_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; static int first_entry_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; + int *num_page_entries_last = num_page_entries_all_last[game_status]; int *choice_store = choice_stores[game_status]; int *first_entry_store = first_entry_stores[game_status]; int choice = choice_store[mode]; /* starts with 0 */ @@ -2198,18 +2198,15 @@ void HandleMenuScreen(int mx, int my, int dx, int dy, int button, // check if number of menu page entries has changed (may happen by change // of custom artwork definition value for 'list_size' for this menu screen) // (in this case, the last menu position most probably has to be corrected) - if (game_status != game_status_last && - num_page_entries != num_page_entries_last[game_status]) + if (num_page_entries != num_page_entries_last[mode]) { - for (i = 0; i < MAX_MENU_MODES; i++) - choice_store[i] = first_entry_store[i] = 0; + choice_store[mode] = first_entry_store[mode] = 0; choice = first_entry = 0; y = y_old = 0; - } - game_status_last = game_status; - num_page_entries_last[game_status] = num_page_entries; + num_page_entries_last[mode] = num_page_entries; + } /* advance to first valid menu entry */ while (choice < num_page_entries &&