Use helper for setting menu items to type input

This commit is contained in:
Kp 2012-11-24 20:57:15 +00:00
parent c7b9a45f63
commit bb8b229dc2
9 changed files with 37 additions and 33 deletions

View file

@ -159,6 +159,13 @@ static inline void nm_set_item_menu(newmenu_item *ni, const char *text)
ni->text = (char *)text;
}
static inline void nm_set_item_input(newmenu_item *ni, unsigned len, char *text)
{
ni->type = NM_TYPE_INPUT;
ni->text = text;
ni->text_len = len;
}
static inline void nm_set_item_text(newmenu_item *ni, const char *text)
{
ni->type = NM_TYPE_TEXT;
@ -230,9 +237,7 @@ static inline void nm_set_item_text(newmenu_item *ni, const char *text)
#define DXX_ADD_TEXT(S,OPT) \
nm_set_item_text(&((DXX_NEWMENU_VARIABLE)[(OPT)]), (S));
#define DXX_ADD_INPUT(S,OPT,MAX_TEXT_LEN) \
(DXX_NEWMENU_VARIABLE)[(OPT)].type = NM_TYPE_INPUT; \
(DXX_NEWMENU_VARIABLE)[(OPT)].text=(S); \
(DXX_NEWMENU_VARIABLE)[(OPT)].text_len=MAX_TEXT_LEN;
nm_set_item_input(&((DXX_NEWMENU_VARIABLE)[(OPT)]),MAX_TEXT_LEN,(S));
#define DXX_READ_CHECK(S,OPT,V) \
V = (DXX_NEWMENU_VARIABLE)[(OPT)].value;
#define DXX_READ_SLIDER(S,OPT,V,MIN,MAX) \

View file

@ -379,7 +379,7 @@ void change_guidebot_name()
strcpy(text,PlayerCfg.GuidebotName);
m.type=NM_TYPE_INPUT; m.text_len = GUIDEBOT_NAME_LEN; m.text = text;
nm_set_item_input(&m, GUIDEBOT_NAME_LEN, text);
item = newmenu_do( NULL, "Enter Guide-bot name:", 1, &m, NULL, NULL );
if (item != -1) {

View file

@ -3443,11 +3443,11 @@ try_again:
Newmenu_allowed_chars = demoname_allowed_chars;
if (!nd_record_v_no_space) {
m[0].type=NM_TYPE_INPUT; m[0].text_len = PATH_MAX - 1; m[0].text = filename;
nm_set_item_input(&m[0], PATH_MAX - 1, filename);
exit = newmenu_do( NULL, TXT_SAVE_DEMO_AS, 1, &(m[0]), NULL, NULL );
} else if (nd_record_v_no_space == 2) {
nm_set_item_text(& m[ 0], TXT_DEMO_SAVE_NOSPACE);
m[ 1].type = NM_TYPE_INPUT;m[ 1].text_len = PATH_MAX - 1; m[1].text = filename;
nm_set_item_input(&m[ 1], PATH_MAX - 1, filename);
exit = newmenu_do( NULL, NULL, 2, m, NULL, NULL );
}
Newmenu_allowed_chars = NULL;

View file

@ -566,14 +566,14 @@ int HandleDemoKey(int key)
filename[0] = '\0';
nm_set_item_text(& m[ 0], "output file name");
m[ 1].type = NM_TYPE_INPUT;m[ 1].text_len = 8; m[1].text = filename;
nm_set_item_input(&m[ 1], 8, filename);
c = newmenu_do( NULL, NULL, 2, m, NULL, NULL );
if (c == -2)
break;
strcat(filename, DEMO_EXT);
num[0] = '\0';
nm_set_item_text(& m[ 0], "strip how many bytes");
m[ 1].type = NM_TYPE_INPUT;m[ 1].text_len = 16; m[1].text = num;
nm_set_item_input(&m[ 1], 16, num);
c = newmenu_do( NULL, NULL, 2, m, NULL, NULL );
if (c == -2)
break;
@ -1390,7 +1390,7 @@ int HandleTestKey(int key)
newmenu_item m;
char text[FILENAME_LEN]="";
int item;
m.type=NM_TYPE_INPUT; m.text_len = FILENAME_LEN; m.text = text;
nm_set_item_input(&m, FILENAME_LEN, text);
item = newmenu_do( NULL, "Briefing to play?", 1, &m, NULL, NULL );
if (item != -1) {
do_briefing_screens(text,1);
@ -1658,8 +1658,7 @@ int FinalCheats(int key)
char text[10]="";
int new_level_num;
int item;
m.type=NM_TYPE_INPUT; m.text_len = 10; m.text = text;
nm_set_item_input(&m, 10, text);
item = newmenu_do( NULL, TXT_WARP_TO_LEVEL, 1, &m, NULL, NULL );
if (item != -1) {
new_level_num = atoi(m.text);
@ -1765,7 +1764,7 @@ void do_cheat_menu()
mm[3].type=NM_TYPE_NUMBER; mm[3].value=f2i(Players[Player_num].energy); mm[3].text="% Energy"; mm[3].min_value=0; mm[3].max_value=200;
mm[4].type=NM_TYPE_NUMBER; mm[4].value=f2i(Players[Player_num].shields); mm[4].text="% Shields"; mm[4].min_value=0; mm[4].max_value=200;
nm_set_item_text(& mm[5], "Score:");
mm[6].type=NM_TYPE_INPUT; mm[6].text_len = 10; mm[6].text = score_text;
nm_set_item_input(&mm[6], 10, score_text);
#if defined(DXX_BUILD_DESCENT_I)
mm[7].type=NM_TYPE_RADIO; mm[7].value=(Players[Player_num].laser_level==0); mm[7].group=0; mm[7].text="Laser level 1";
mm[8].type=NM_TYPE_RADIO; mm[8].value=(Players[Player_num].laser_level==1); mm[8].group=0; mm[8].text="Laser level 2";

View file

@ -1635,7 +1635,7 @@ int get_level_name()
newmenu_item m[2];
nm_set_item_text(& m[0], "Please enter a name for this mine:");
m[1].type = NM_TYPE_INPUT; m[1].text = Current_level_name; m[1].text_len = LEVEL_NAME_LEN;
nm_set_item_input(&m[1], LEVEL_NAME_LEN, Current_level_name);
return newmenu_do( NULL, "Enter mine name", 2, m, NULL, NULL ) >= 0;

View file

@ -179,7 +179,7 @@ int MakeNewPlayerFile(int allow_abort)
strncpy(text, Players[Player_num].callsign,CALLSIGN_LEN);
try_again:
m.type=NM_TYPE_INPUT; m.text_len = CALLSIGN_LEN; m.text = text;
nm_set_item_input(&m, CALLSIGN_LEN, text);
Newmenu_allowed_chars = playername_allowed_chars;
x = newmenu_do( NULL, TXT_ENTER_PILOT_NAME, 1, &m, NULL, NULL );
@ -822,7 +822,7 @@ int do_new_game_menu()
{
nm_set_item_text(& m[0], info_text);
m[1].type=NM_TYPE_INPUT; m[1].text_len = 10; m[1].text = num_text;
nm_set_item_input(&m[1], 10, num_text);
n_items = 2;
strcpy(num_text,"1");
@ -935,10 +935,10 @@ void change_res()
m[mc].type = NM_TYPE_RADIO; m[mc].text = "use custom values"; m[mc].value = (citem == -1); m[mc].group = 0; mc++;
nm_set_item_text(& m[mc], "resolution:"); mc++;
snprintf(crestext, sizeof(crestext), "%ix%i", SM_W(Game_screen_mode), SM_H(Game_screen_mode));
m[mc].type = NM_TYPE_INPUT; m[mc].text = crestext; m[mc].text_len = 11; modes[mc] = 0; mc++;
nm_set_item_input(&m[mc], 11, crestext); modes[mc] = 0; mc++;
nm_set_item_text(& m[mc], "aspect:"); mc++;
snprintf(casptext, sizeof(casptext), "%ix%i", GameCfg.AspectY, GameCfg.AspectX);
m[mc].type = NM_TYPE_INPUT; m[mc].text = casptext; m[mc].text_len = 11; modes[mc] = 0; mc++;
nm_set_item_input(&m[mc], 11, casptext); modes[mc] = 0; mc++;
nm_set_item_text(& m[mc], ""); mc++; // little space for overview
// fullscreen
opt_fullscr = mc;
@ -1409,7 +1409,7 @@ int select_file_handler(listbox *menu, d_event *event, browser *b)
MALLOC(text, char, 2);
MALLOC(m, newmenu_item, 1);
snprintf(text, sizeof(char)*PATH_MAX, "c");
m->type=NM_TYPE_INPUT; m->text_len = 3; m->text = text;
nm_set_item_input(m, 3, text);
rval = newmenu_do( NULL, "Enter drive letter", 1, m, NULL, NULL );
text[1] = '\0';
snprintf(newpath, sizeof(char)*PATH_MAX, "%s:%s", text, sep);
@ -1850,7 +1850,7 @@ void do_sound_menu()
opt_sm_mtype3_lmpath = nitems;
nm_set_item_browse(&m[nitems++], "path for level music" BROWSE_TXT);
m[nitems].type = NM_TYPE_INPUT; m[nitems].text = GameCfg.CMLevelMusicPath; m[nitems++].text_len = NM_MAX_TEXT_LEN-1;
nm_set_item_input(&m[nitems++], NM_MAX_TEXT_LEN-1, GameCfg.CMLevelMusicPath);
nm_set_item_text(& m[nitems++], "");
@ -1873,31 +1873,31 @@ void do_sound_menu()
nm_set_item_browse(&m[nitems++], "main menu" BROWSE_TXT);
opt_sm_cm_mtype3_file1 = nitems;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text = GameCfg.CMMiscMusic[SONG_TITLE]; m[nitems++].text_len = NM_MAX_TEXT_LEN-1;
nm_set_item_input(&m[nitems++], NM_MAX_TEXT_LEN-1, GameCfg.CMMiscMusic[SONG_TITLE]);
opt_sm_cm_mtype3_file2_b = nitems;
nm_set_item_browse(&m[nitems++], "briefing" BROWSE_TXT);
opt_sm_cm_mtype3_file2 = nitems;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text = GameCfg.CMMiscMusic[SONG_BRIEFING]; m[nitems++].text_len = NM_MAX_TEXT_LEN-1;
nm_set_item_input(&m[nitems++], NM_MAX_TEXT_LEN-1, GameCfg.CMMiscMusic[SONG_BRIEFING]);
opt_sm_cm_mtype3_file3_b = nitems;
nm_set_item_browse(&m[nitems++], "credits" BROWSE_TXT);
opt_sm_cm_mtype3_file3 = nitems;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text = GameCfg.CMMiscMusic[SONG_CREDITS]; m[nitems++].text_len = NM_MAX_TEXT_LEN-1;
nm_set_item_input(&m[nitems++], NM_MAX_TEXT_LEN-1, GameCfg.CMMiscMusic[SONG_CREDITS]);
opt_sm_cm_mtype3_file4_b = nitems;
nm_set_item_browse(&m[nitems++], "escape sequence" BROWSE_TXT);
opt_sm_cm_mtype3_file4 = nitems;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text = GameCfg.CMMiscMusic[SONG_ENDLEVEL]; m[nitems++].text_len = NM_MAX_TEXT_LEN-1;
nm_set_item_input(&m[nitems++], NM_MAX_TEXT_LEN-1, GameCfg.CMMiscMusic[SONG_ENDLEVEL]);
opt_sm_cm_mtype3_file5_b = nitems;
nm_set_item_browse(&m[nitems++], "game ending" BROWSE_TXT);
opt_sm_cm_mtype3_file5 = nitems;
m[nitems].type = NM_TYPE_INPUT; m[nitems].text = GameCfg.CMMiscMusic[SONG_ENDGAME]; m[nitems++].text_len = NM_MAX_TEXT_LEN-1;
nm_set_item_input(&m[nitems++], NM_MAX_TEXT_LEN-1, GameCfg.CMMiscMusic[SONG_ENDGAME]);
#endif
Assert(nitems == SOUND_MENU_NITEMS);

View file

@ -1529,7 +1529,7 @@ multi_send_message_dialog(void)
Network_message[0] = 0; // Get rid of old contents
m[0].type=NM_TYPE_INPUT; m[0].text = Network_message; m[0].text_len = MAX_MESSAGE_LEN-1;
nm_set_item_input(&m[0], MAX_MESSAGE_LEN-1, Network_message);
choice = newmenu_do( NULL, TXT_SEND_MESSAGE, 1, m, NULL, NULL );
if ((choice > -1) && (strlen(Network_message) > 0)) {

View file

@ -684,11 +684,11 @@ void net_udp_manual_join_game()
nitems = 0;
nm_set_item_text(& m[nitems++],"GAME ADDRESS OR HOSTNAME:");
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=dj->addrbuf; m[nitems].text_len=128; nitems++;
nm_set_item_input(&m[nitems++],128,dj->addrbuf);
nm_set_item_text(& m[nitems++],"GAME PORT:");
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=dj->portbuf; m[nitems].text_len=5; nitems++;
nm_set_item_input(&m[nitems++],5,dj->portbuf);
nm_set_item_text(& m[nitems++],"MY PORT:");
m[nitems].type = NM_TYPE_INPUT; m[nitems].text=UDP_MyPort; m[nitems].text_len=5; nitems++;
nm_set_item_input(&m[nitems++],5,UDP_MyPort);
nm_set_item_text(& m[nitems++],"");
newmenu_do1( NULL, "ENTER GAME ADDRESS", nitems, m, (int (*)(newmenu *, d_event *, void *))manual_join_game_handler, dj, 0 );
@ -3286,7 +3286,7 @@ int net_udp_setup_game()
nm_set_item_text(& m[optnum], TXT_DESCRIPTION); optnum++;
opt.name = optnum;
m[optnum].type = NM_TYPE_INPUT; m[optnum].text = Netgame.game_name; m[optnum].text_len = NETGAME_NAME_LEN; optnum++;
nm_set_item_input(&m[optnum], NETGAME_NAME_LEN, Netgame.game_name); optnum++;
sprintf(level_text, "%s (1-%d)", TXT_LEVEL_, Last_level);
#if defined(DXX_BUILD_DESCENT_I)
@ -3301,7 +3301,7 @@ int net_udp_setup_game()
nm_set_item_text(& m[optnum], level_text); optnum++;
opt.level = optnum;
m[optnum].type = NM_TYPE_INPUT; m[optnum].text = slevel; m[optnum].text_len=4; optnum++;
nm_set_item_input(&m[optnum],4, slevel); optnum++;
nm_set_item_text(& m[optnum], TXT_OPTIONS); optnum++;
opt.mode = optnum;
@ -3579,7 +3579,7 @@ net_udp_select_teams(void)
// Here comes da menu
menu:
m[0].type = NM_TYPE_INPUT; m[0].text = team_names[0]; m[0].text_len = CALLSIGN_LEN;
nm_set_item_input(&m[0], CALLSIGN_LEN, team_names[0]);
opt = 1;
for (i = 0; i < N_players; i++)
@ -3590,7 +3590,7 @@ menu:
}
}
opt_team_b = opt;
m[opt].type = NM_TYPE_INPUT; m[opt].text = team_names[1]; m[opt].text_len = CALLSIGN_LEN; opt++;
nm_set_item_input(&m[opt], CALLSIGN_LEN, team_names[1]); opt++;
for (i = 0; i < N_players; i++)
{
if (team_vector & (1 << i))

View file

@ -240,7 +240,7 @@ void scores_maybe_add_player(int abort_flag)
if ( position==0 ) {
strcpy( text1, "" );
nm_set_item_text(& m[0], TXT_COOL_SAYING);
m[1].type = NM_TYPE_INPUT; m[1].text = text1; m[1].text_len = COOL_MESSAGE_LEN-5;
nm_set_item_input(&m[1], COOL_MESSAGE_LEN-5, text1);
newmenu_do( TXT_HIGH_SCORE, TXT_YOU_PLACED_1ST, 2, m, NULL, NULL );
strncpy( scores.cool_saying, text1, COOL_MESSAGE_LEN );
if (strlen(scores.cool_saying)<1)