diff --git a/similar/main/menu.cpp b/similar/main/menu.cpp index 10b0818a0..5f8dd5bbb 100644 --- a/similar/main/menu.cpp +++ b/similar/main/menu.cpp @@ -949,16 +949,23 @@ int select_demo() static int do_difficulty_menu() { - std::array m{{ - nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_0)), - nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_1)), - nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_2)), - nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_3)), - nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_4)), - }}; - + using items_type = std::array; + struct difficulty_prompt_menu : items_type, passive_newmenu + { + difficulty_prompt_menu(const unsigned Difficulty_level) : + items_type{{ + nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_0)), + nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_1)), + nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_2)), + nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_3)), + nm_item_menu(MENU_DIFFICULTY_TEXT(Difficulty_4)), + }}, + passive_newmenu(menu_title{nullptr}, menu_subtitle{TXT_DIFFICULTY_LEVEL}, menu_filename{nullptr}, tiny_mode_flag::normal, tab_processing_flag::ignore, adjusted_citem::create(*static_cast(this), Difficulty_level), *grd_curcanv) + { + } + }; auto &Difficulty_level = GameUniqueState.Difficulty_level; - const unsigned s = newmenu_do2(menu_title{nullptr}, menu_subtitle{TXT_DIFFICULTY_LEVEL}, m, unused_newmenu_subfunction, unused_newmenu_userdata, Difficulty_level); + const unsigned s = run_blocking_newmenu(Difficulty_level); if (s <= Difficulty_4) {