Add newmenu_do helper for array<newmenu_item, N>
This commit is contained in:
parent
69bb51a850
commit
c6664a45a6
|
@ -101,6 +101,12 @@ static inline int newmenu_do( const char * title, const char * subtitle, int nit
|
|||
return newmenu_do2( title, subtitle, nitems, item, subfunction, userdata, 0, NULL );
|
||||
}
|
||||
|
||||
template <std::size_t N, typename T>
|
||||
static inline int newmenu_do(const char *title, const char *subtitle, array<newmenu_item, N> &items, typename newmenu_subfunction_t<T>::type subfunction, T *userdata)
|
||||
{
|
||||
return newmenu_do(title, subtitle, items.size(), &items.front(), subfunction, userdata);
|
||||
}
|
||||
|
||||
// Same as above, only you can pass through what item is initially selected.
|
||||
template <typename T>
|
||||
static inline int newmenu_do1( const char * title, const char * subtitle, int nitems, newmenu_item * item, typename newmenu_subfunction_t<T>::type subfunction, T *userdata, int citem )
|
||||
|
|
|
@ -351,7 +351,7 @@ void change_guidebot_name()
|
|||
array<newmenu_item, 1> m{
|
||||
nm_item_input(text),
|
||||
};
|
||||
item = newmenu_do(NULL, "Enter Guide-bot name:", m.size(), &m[0], unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
item = newmenu_do(NULL, "Enter Guide-bot name:", m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
|
||||
if (item != -1) {
|
||||
PlayerCfg.GuidebotName = PlayerCfg.GuidebotNameReal = text;
|
||||
|
|
|
@ -533,7 +533,7 @@ static int HandleDemoKey(int key)
|
|||
nm_item_input(filename),
|
||||
};
|
||||
filename[0] = '\0';
|
||||
c = newmenu_do( NULL, NULL, m.size(), m.data(), unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
c = newmenu_do( NULL, NULL, m, unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
if (c == -2)
|
||||
break;
|
||||
strcat(filename, DEMO_EXT);
|
||||
|
@ -542,7 +542,7 @@ static int HandleDemoKey(int key)
|
|||
nm_item_text("strip how many bytes"),
|
||||
nm_item_input(num),
|
||||
};
|
||||
c = newmenu_do( NULL, NULL, m.size(), m.data(), unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
c = newmenu_do( NULL, NULL, m, unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
if (c == -2)
|
||||
break;
|
||||
how_many = atoi(num);
|
||||
|
@ -1339,7 +1339,7 @@ static window_event_result HandleTestKey(int key)
|
|||
array<newmenu_item, 1> m{
|
||||
nm_item_input(text),
|
||||
};
|
||||
item = newmenu_do( NULL, "Briefing to play?", m.size(), &m[0], unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
item = newmenu_do( NULL, "Briefing to play?", m, unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
if (item != -1) {
|
||||
do_briefing_screens(text,1);
|
||||
}
|
||||
|
@ -1601,7 +1601,7 @@ static window_event_result FinalCheats(int key)
|
|||
array<newmenu_item, 1> m{
|
||||
nm_item_input(text),
|
||||
};
|
||||
item = newmenu_do( NULL, TXT_WARP_TO_LEVEL, m.size(), &m[0], unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
item = newmenu_do( NULL, TXT_WARP_TO_LEVEL, m, unused_newmenu_subfunction, unused_newmenu_userdata);
|
||||
if (item != -1) {
|
||||
new_level_num = atoi(m[0].text);
|
||||
if (new_level_num!=0 && new_level_num>=0 && new_level_num<=Last_level) {
|
||||
|
|
|
@ -1421,7 +1421,7 @@ int get_level_name()
|
|||
nm_item_input(Current_level_name.next()),
|
||||
};
|
||||
|
||||
return newmenu_do( NULL, "Enter mine name", m.size(), m.data(), unused_newmenu_subfunction, unused_newmenu_userdata ) >= 0;
|
||||
return newmenu_do( NULL, "Enter mine name", m, unused_newmenu_subfunction, unused_newmenu_userdata ) >= 0;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -958,7 +958,7 @@ static void do_screen_message(const char *msg)
|
|||
array<newmenu_item, 1> nm_message_items{
|
||||
nm_item_menu(TXT_OK),
|
||||
};
|
||||
newmenu_do( NULL, msg, nm_message_items.size(), &nm_message_items[0], draw_endlevel_background, static_cast<grs_bitmap *>(&background));
|
||||
newmenu_do( NULL, msg, nm_message_items, draw_endlevel_background, static_cast<grs_bitmap *>(&background));
|
||||
gr_free_bitmap_data(background);
|
||||
}
|
||||
|
||||
|
|
|
@ -278,7 +278,7 @@ static window_event_result kmatrix_handler(window *wind,const d_event &event, km
|
|||
nm_item_menu(TXT_YES),
|
||||
nm_item_menu(TXT_NO),
|
||||
};
|
||||
choice = newmenu_do( NULL, TXT_ABORT_GAME, nm_message_items.size(), &nm_message_items[0], km->network ? multi_endlevel_poll2 : unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
choice = newmenu_do( NULL, TXT_ABORT_GAME, nm_message_items, km->network ? multi_endlevel_poll2 : unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
}
|
||||
|
||||
if (choice==0)
|
||||
|
|
|
@ -206,7 +206,7 @@ try_again:
|
|||
nm_item_input(text.buffer()),
|
||||
};
|
||||
Newmenu_allowed_chars = playername_allowed_chars;
|
||||
x = newmenu_do( NULL, TXT_ENTER_PILOT_NAME, m.size(), &m[0], unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
x = newmenu_do( NULL, TXT_ENTER_PILOT_NAME, m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
}
|
||||
Newmenu_allowed_chars = NULL;
|
||||
|
||||
|
@ -829,7 +829,7 @@ int do_new_game_menu()
|
|||
nm_item_text(info_text),
|
||||
nm_item_input(num_text),
|
||||
};
|
||||
choice = newmenu_do( NULL, TXT_SELECT_START_LEV, m.size(), m.data(), unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
choice = newmenu_do( NULL, TXT_SELECT_START_LEV, m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
|
||||
if (choice==-1 || m[1].text[0]==0)
|
||||
return 0;
|
||||
|
@ -1394,7 +1394,7 @@ static int select_file_handler(listbox *menu,const d_event &event, browser *b)
|
|||
array<newmenu_item, 1> m{
|
||||
nm_item_input(text),
|
||||
};
|
||||
rval = newmenu_do( NULL, "Enter drive letter", m.size(), &m[0], unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
rval = newmenu_do( NULL, "Enter drive letter", m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
text[1] = '\0';
|
||||
snprintf(newpath, sizeof(char)*PATH_MAX, "%s:%s", text, sep);
|
||||
if (!rval && text[0])
|
||||
|
|
|
@ -1472,7 +1472,7 @@ multi_send_message_dialog(void)
|
|||
array<newmenu_item, 1> m{
|
||||
nm_item_input(Network_message),
|
||||
};
|
||||
choice = newmenu_do( NULL, TXT_SEND_MESSAGE, m.size(), &m[0], unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
choice = newmenu_do( NULL, TXT_SEND_MESSAGE, m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
|
||||
if ((choice > -1) && (Network_message[0])) {
|
||||
Network_message_reciever = 100;
|
||||
|
|
|
@ -3865,7 +3865,7 @@ static int net_udp_wait_for_sync(void)
|
|||
while (choice > -1)
|
||||
{
|
||||
timer_update();
|
||||
choice=newmenu_do( NULL, TXT_WAIT, m.size(), m.data(), net_udp_sync_poll, unused_newmenu_userdata );
|
||||
choice=newmenu_do( NULL, TXT_WAIT, m, net_udp_sync_poll, unused_newmenu_userdata );
|
||||
}
|
||||
|
||||
if (Network_status != NETSTAT_PLAYING)
|
||||
|
@ -3918,7 +3918,7 @@ static int net_udp_wait_for_requests(void)
|
|||
Players[Player_num].connected = CONNECT_PLAYING;
|
||||
|
||||
menu:
|
||||
choice = newmenu_do(NULL, TXT_WAIT, m.size(), m.data(), net_udp_request_poll, unused_newmenu_userdata);
|
||||
choice = newmenu_do(NULL, TXT_WAIT, m, net_udp_request_poll, unused_newmenu_userdata);
|
||||
|
||||
if (choice == -1)
|
||||
{
|
||||
|
@ -5388,7 +5388,7 @@ int net_udp_show_game_info()
|
|||
nm_item_menu("JOIN GAME"),
|
||||
nm_item_menu("GAME INFO"),
|
||||
};
|
||||
c = newmenu_do("WELCOME", rinfo, nm_message_items.size(), &nm_message_items[0], show_game_info_handler, netgame);
|
||||
c = newmenu_do("WELCOME", rinfo, nm_message_items, show_game_info_handler, netgame);
|
||||
if (c==0)
|
||||
return 1;
|
||||
//else if (c==1)
|
||||
|
|
|
@ -3724,13 +3724,13 @@ try_again:
|
|||
array<newmenu_item, 1> m{
|
||||
nm_item_input(filename),
|
||||
};
|
||||
exit = newmenu_do( NULL, TXT_SAVE_DEMO_AS, m.size(), &m[0], unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
exit = newmenu_do( NULL, TXT_SAVE_DEMO_AS, m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
} else if (nd_record_v_no_space == 2) {
|
||||
array<newmenu_item, 2> m{
|
||||
nm_item_text(TXT_DEMO_SAVE_NOSPACE),
|
||||
nm_item_input(filename),
|
||||
};
|
||||
exit = newmenu_do( NULL, NULL, m.size(), m.data(), unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
exit = newmenu_do( NULL, NULL, m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
}
|
||||
Newmenu_allowed_chars = NULL;
|
||||
|
||||
|
|
|
@ -243,7 +243,7 @@ void scores_maybe_add_player(int abort_flag)
|
|||
nm_item_text(TXT_COOL_SAYING),
|
||||
nm_item_input(text1),
|
||||
};
|
||||
newmenu_do( TXT_HIGH_SCORE, TXT_YOU_PLACED_1ST, m.size(), m.data(), unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
newmenu_do( TXT_HIGH_SCORE, TXT_YOU_PLACED_1ST, m, unused_newmenu_subfunction, unused_newmenu_userdata );
|
||||
strncpy( scores.cool_saying, text1.data(), COOL_MESSAGE_LEN );
|
||||
if (strlen(scores.cool_saying)<1)
|
||||
sprintf( scores.cool_saying, "No Comment" );
|
||||
|
|
Loading…
Reference in a new issue