Removed SurfingNet global and made tabs a parameter of newmenu_dotiny; Same procedure with MenuReordering which is replaced with newmenu_doreorder to set reordering flag specifically
This commit is contained in:
parent
e0d95f4f1c
commit
bff24ced0d
|
@ -3,6 +3,7 @@ D1X-Rebirth Changelog
|
|||
20100630
|
||||
--------
|
||||
main/gameseq.c: If multi_level_sync() fails, restart menu music since level music is playing already
|
||||
main/game.c, main/net_ipx.c, main/net_udp.c, main/newmenu.c, main/newmenu.h, main/weapon.c: Removed SurfingNet global and made tabs a parameter of newmenu_dotiny; Same procedure with MenuReordering which is replaced with newmenu_doreorder to set reordering flag specifically
|
||||
|
||||
20100629
|
||||
--------
|
||||
|
|
|
@ -797,7 +797,7 @@ void show_help()
|
|||
m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(Use \x85-# for F#. e.g. \x85-1 for F1)";
|
||||
#endif
|
||||
|
||||
newmenu_dotiny( NULL, TXT_KEYS, nitems, m, free_help, NULL );
|
||||
newmenu_dotiny( NULL, TXT_KEYS, nitems, m, 0, free_help, NULL );
|
||||
}
|
||||
|
||||
void show_netgame_help()
|
||||
|
@ -827,7 +827,7 @@ void show_netgame_help()
|
|||
m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "kick: (*)\t KICK PLAYER (*) FROM GAME (Host-only)";
|
||||
m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "KillReactor\t BLOW UP THE MINE (Host-only)";
|
||||
|
||||
newmenu_dotiny( NULL, TXT_KEYS, nitems, m, free_help, NULL );
|
||||
newmenu_dotiny( NULL, TXT_KEYS, nitems, m, 0, free_help, NULL );
|
||||
}
|
||||
|
||||
void show_newdemo_help()
|
||||
|
@ -857,7 +857,7 @@ void show_newdemo_help()
|
|||
m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(Use \x85-# for F#. e.g. \x85-1 for F1)";
|
||||
#endif
|
||||
|
||||
newmenu_dotiny( NULL, "DEMO PLAYBACK CONTROLS", nitems, m, free_help, NULL );
|
||||
newmenu_dotiny( NULL, "DEMO PLAYBACK CONTROLS", nitems, m, 0, free_help, NULL );
|
||||
}
|
||||
|
||||
//temp function until Matt cleans up game sequencing
|
||||
|
|
|
@ -93,7 +93,6 @@ int IPX_Socket=0;
|
|||
int IPX_allow_socket_changes = 1;
|
||||
IPX_sequence_packet IPX_Seq;
|
||||
extern obj_position Player_init[MAX_PLAYERS];
|
||||
extern ubyte SurfingNet;
|
||||
extern void game_disable_cheats();
|
||||
int net_ipx_wait_for_snyc();
|
||||
|
||||
|
@ -3241,7 +3240,6 @@ int net_ipx_join_poll( newmenu *menu, d_event *event, void *menu_text )
|
|||
break;
|
||||
|
||||
case EVENT_WINDOW_CLOSE:
|
||||
SurfingNet=0;
|
||||
d_free(menu_text);
|
||||
d_free(menus);
|
||||
|
||||
|
@ -3513,8 +3511,7 @@ void net_ipx_join_game()
|
|||
}
|
||||
|
||||
num_active_ipx_changed = 1;
|
||||
SurfingNet=1;
|
||||
newmenu_dotiny("NETGAMES", NULL,IPX_MAX_NETGAMES+2, m, net_ipx_join_poll, menu_text);
|
||||
newmenu_dotiny("NETGAMES", NULL,IPX_MAX_NETGAMES+2, m, 1, net_ipx_join_poll, menu_text);
|
||||
}
|
||||
|
||||
void net_ipx_leave_game()
|
||||
|
|
|
@ -98,7 +98,6 @@ static int UDP_Socket[2] = { -1, -1 };
|
|||
static char UDP_MyPort[6] = "";
|
||||
struct _sockaddr GBcast; // global Broadcast address clients and hosts will use for lite_info exchange over LAN
|
||||
extern obj_position Player_init[MAX_PLAYERS];
|
||||
extern ubyte SurfingNet;
|
||||
|
||||
/* General UDP functions - START */
|
||||
// Resolve address
|
||||
|
@ -564,7 +563,6 @@ int net_udp_list_join_poll( newmenu *menu, d_event *event, void *menu_text )
|
|||
break;
|
||||
}
|
||||
case EVENT_WINDOW_CLOSE:
|
||||
SurfingNet=0;
|
||||
d_free(menu_text);
|
||||
d_free(menus);
|
||||
|
||||
|
@ -719,8 +717,7 @@ void net_udp_list_join_game()
|
|||
}
|
||||
|
||||
num_active_udp_changed = 1;
|
||||
SurfingNet=1;
|
||||
newmenu_dotiny("NETGAMES", NULL,(UDP_NETGAMES_PPAGE+2), m, net_udp_list_join_poll, menu_text);
|
||||
newmenu_dotiny("NETGAMES", NULL,(UDP_NETGAMES_PPAGE+2), m, 1, net_udp_list_join_poll, menu_text);
|
||||
}
|
||||
|
||||
void net_udp_send_sequence_packet(UDP_sequence_packet seq, struct _sockaddr recv_addr)
|
||||
|
|
|
@ -84,6 +84,8 @@ struct newmenu
|
|||
int citem;
|
||||
char *filename;
|
||||
int tiny_mode;
|
||||
int tabs_flag;
|
||||
int reorderitems;
|
||||
int scroll_offset, last_scroll_check, max_displayable;
|
||||
int all_text; //set true if all text items
|
||||
int is_scroll_box; // Is this a scrolling box? Set to false at init
|
||||
|
@ -95,10 +97,8 @@ struct newmenu
|
|||
|
||||
grs_bitmap nm_background, nm_background1;
|
||||
grs_bitmap *nm_background_sub = NULL;
|
||||
ubyte MenuReordering=0;
|
||||
ubyte SurfingNet=0;
|
||||
|
||||
newmenu *newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem, char * filename, int TinyMode );
|
||||
newmenu *newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem, char * filename, int TinyMode, int TabsFlag );
|
||||
|
||||
void newmenu_close() {
|
||||
if (nm_background.bm_data)
|
||||
|
@ -197,7 +197,7 @@ void nm_draw_background(int x1, int y1, int x2, int y2 )
|
|||
}
|
||||
|
||||
// Draw a left justfied string
|
||||
void nm_string( int w1,int x, int y, char * s)
|
||||
void nm_string( int w1,int x, int y, char * s, int tabs_flag)
|
||||
{
|
||||
int w,h,aw,tx=0,t=0,i;
|
||||
char *p,*s1,*s2,measure[2];
|
||||
|
@ -213,7 +213,7 @@ void nm_string( int w1,int x, int y, char * s)
|
|||
|
||||
measure[1]=0;
|
||||
|
||||
if (!SurfingNet) {
|
||||
if (!tabs_flag) {
|
||||
p = strchr( s2, '\t' );
|
||||
if (p && (w1>0) ) {
|
||||
*p = '\0';
|
||||
|
@ -226,9 +226,9 @@ void nm_string( int w1,int x, int y, char * s)
|
|||
if (w1 > 0)
|
||||
w = w1;
|
||||
|
||||
if (SurfingNet) {
|
||||
if (tabs_flag) {
|
||||
for (i=0;i<strlen(s2);i++) {
|
||||
if (s2[i]=='\t' && SurfingNet) {
|
||||
if (s2[i]=='\t' && tabs_flag) {
|
||||
x=XTabs[t];
|
||||
t++;
|
||||
continue;
|
||||
|
@ -242,7 +242,7 @@ void nm_string( int w1,int x, int y, char * s)
|
|||
else
|
||||
gr_string (x,y,s2);
|
||||
|
||||
if (!SurfingNet && p && (w1>0) ) {
|
||||
if (!tabs_flag && p && (w1>0) ) {
|
||||
gr_get_string_size(s1, &w, &h, &aw );
|
||||
|
||||
gr_string( x+w1-w, y, s1 );
|
||||
|
@ -332,7 +332,7 @@ void nm_string_inputbox( int w, int x, int y, char * text, int current )
|
|||
gr_string( x+w1, y, CURSOR_STRING );
|
||||
}
|
||||
|
||||
void draw_item( newmenu_item *item, int is_current, int tiny )
|
||||
void draw_item( newmenu_item *item, int is_current, int tiny, int tabs_flag )
|
||||
{
|
||||
if (tiny)
|
||||
{
|
||||
|
@ -355,7 +355,7 @@ void draw_item( newmenu_item *item, int is_current, int tiny )
|
|||
switch( item->type ) {
|
||||
case NM_TYPE_TEXT:
|
||||
case NM_TYPE_MENU:
|
||||
nm_string( item->w, item->x, item->y, item->text );
|
||||
nm_string( item->w, item->x, item->y, item->text, tabs_flag );
|
||||
break;
|
||||
case NM_TYPE_SLIDER:
|
||||
{
|
||||
|
@ -376,7 +376,7 @@ void draw_item( newmenu_item *item, int is_current, int tiny )
|
|||
case NM_TYPE_INPUT_MENU:
|
||||
if ( item->group==0 )
|
||||
{
|
||||
nm_string( item->w, item->x, item->y, item->text );
|
||||
nm_string( item->w, item->x, item->y, item->text, tabs_flag );
|
||||
} else {
|
||||
nm_string_inputbox( item->w, item->x, item->y, item->text, is_current );
|
||||
}
|
||||
|
@ -385,14 +385,14 @@ void draw_item( newmenu_item *item, int is_current, int tiny )
|
|||
nm_string_inputbox( item->w, item->x, item->y, item->text, is_current );
|
||||
break;
|
||||
case NM_TYPE_CHECK:
|
||||
nm_string( item->w, item->x, item->y, item->text );
|
||||
nm_string( item->w, item->x, item->y, item->text, tabs_flag );
|
||||
if (item->value)
|
||||
nm_rstring( item->right_offset,item->x, item->y, CHECKED_CHECK_BOX );
|
||||
else
|
||||
nm_rstring( item->right_offset,item->x, item->y, NORMAL_CHECK_BOX );
|
||||
break;
|
||||
case NM_TYPE_RADIO:
|
||||
nm_string( item->w, item->x, item->y, item->text );
|
||||
nm_string( item->w, item->x, item->y, item->text, tabs_flag );
|
||||
if (item->value)
|
||||
nm_rstring( item->right_offset, item->x, item->y, CHECKED_RADIO_BOX );
|
||||
else
|
||||
|
@ -403,7 +403,7 @@ void draw_item( newmenu_item *item, int is_current, int tiny )
|
|||
char text[10];
|
||||
if (item->value < item->min_value) item->value=item->min_value;
|
||||
if (item->value > item->max_value) item->value=item->max_value;
|
||||
nm_string( item->w, item->x, item->y, item->text );
|
||||
nm_string( item->w, item->x, item->y, item->text, tabs_flag );
|
||||
sprintf( text, "%d", item->value );
|
||||
nm_rstring( item->right_offset,item->x, item->y, text );
|
||||
}
|
||||
|
@ -450,9 +450,9 @@ int newmenu_do( char * title, char * subtitle, int nitems, newmenu_item * item,
|
|||
return newmenu_do2( title, subtitle, nitems, item, subfunction, userdata, 0, NULL );
|
||||
}
|
||||
|
||||
newmenu *newmenu_dotiny( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata )
|
||||
newmenu *newmenu_dotiny( char * title, char * subtitle, int nitems, newmenu_item * item, int TabsFlag, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata )
|
||||
{
|
||||
return newmenu_do4( title, subtitle, nitems, item, subfunction, userdata, 0, NULL, 1 );
|
||||
return newmenu_do4( title, subtitle, nitems, item, subfunction, userdata, 0, NULL, 1, TabsFlag );
|
||||
}
|
||||
|
||||
|
||||
|
@ -491,15 +491,48 @@ int newmenu_do2( char * title, char * subtitle, int nitems, newmenu_item * item,
|
|||
|
||||
return rval;
|
||||
}
|
||||
|
||||
// Basically the same as do2 but sets reorderitems flag for weapon priority menu a bit redundant to get lose of a global variable but oh well...
|
||||
int newmenu_doreorder( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata )
|
||||
{
|
||||
newmenu *menu;
|
||||
window *wind;
|
||||
int rval = -1;
|
||||
|
||||
menu = newmenu_do3( title, subtitle, nitems, item, subfunction, userdata, 0, NULL );
|
||||
|
||||
if (!menu)
|
||||
return -1;
|
||||
menu->reorderitems = 1;
|
||||
menu->leave = 0; // no leaving this function until we're finished
|
||||
wind = menu->wind; // avoid dereferencing a freed 'menu'
|
||||
|
||||
// newmenu_do2 and simpler get their own event loop
|
||||
// This is so the caller doesn't have to provide a callback that responds to EVENT_NEWMENU_SELECTED
|
||||
while (window_exists(wind))
|
||||
{
|
||||
event_process();
|
||||
|
||||
if (menu->leave)
|
||||
{
|
||||
rval = menu->citem;
|
||||
if (window_exists(wind) && !window_close(wind))
|
||||
menu->leave = 0; // user aborted close
|
||||
}
|
||||
}
|
||||
|
||||
return rval;
|
||||
}
|
||||
|
||||
newmenu *newmenu_do3( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem, char * filename )
|
||||
{
|
||||
set_screen_mode(SCREEN_MENU);//hafta set the screen mode before calling or fonts might get changed/freed up if screen res changes
|
||||
return newmenu_do4( title, subtitle, nitems, item, subfunction, userdata, citem, filename, 0 );
|
||||
return newmenu_do4( title, subtitle, nitems, item, subfunction, userdata, citem, filename, 0, 0 );
|
||||
}
|
||||
|
||||
newmenu *newmenu_do_fixedfont( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem, char * filename){
|
||||
set_screen_mode(SCREEN_MENU);//hafta set the screen mode before calling or fonts might get changed/freed up if screen res changes
|
||||
return newmenu_do4( title, subtitle, nitems, item, subfunction, userdata, citem, filename, 0);
|
||||
return newmenu_do4( title, subtitle, nitems, item, subfunction, userdata, citem, filename, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -914,7 +947,7 @@ int newmenu_key_command(window *wind, d_event *event, newmenu *menu)
|
|||
break;
|
||||
|
||||
case KEY_SHIFTED+KEY_UP:
|
||||
if (MenuReordering && menu->citem!=0)
|
||||
if (menu->reorderitems && menu->citem!=0)
|
||||
{
|
||||
Temp=menu->items[menu->citem].text;
|
||||
TempVal=menu->items[menu->citem].value;
|
||||
|
@ -927,7 +960,7 @@ int newmenu_key_command(window *wind, d_event *event, newmenu *menu)
|
|||
}
|
||||
break;
|
||||
case KEY_SHIFTED+KEY_DOWN:
|
||||
if (MenuReordering && menu->citem!=(menu->nitems-1))
|
||||
if (menu->reorderitems && menu->citem!=(menu->nitems-1))
|
||||
{
|
||||
Temp=menu->items[menu->citem].text;
|
||||
TempVal=menu->items[menu->citem].value;
|
||||
|
@ -1395,7 +1428,7 @@ int newmenu_draw(window *wind, newmenu *menu)
|
|||
for (i=menu->scroll_offset; i<menu->max_displayable+menu->scroll_offset; i++ )
|
||||
{
|
||||
menu->items[i].y-=(((int)LINE_SPACING)*menu->scroll_offset);
|
||||
draw_item( &menu->items[i], (i==menu->citem && !menu->all_text),menu->tiny_mode );
|
||||
draw_item( &menu->items[i], (i==menu->citem && !menu->all_text),menu->tiny_mode, menu->tabs_flag );
|
||||
menu->items[i].y+=(((int)LINE_SPACING)*menu->scroll_offset);
|
||||
|
||||
}
|
||||
|
@ -1510,7 +1543,7 @@ int newmenu_handler(window *wind, d_event *event, newmenu *menu)
|
|||
return 0;
|
||||
}
|
||||
|
||||
newmenu *newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem, char * filename, int TinyMode )
|
||||
newmenu *newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem, char * filename, int TinyMode, int TabsFlag )
|
||||
{
|
||||
window *wind = NULL;
|
||||
newmenu *menu;
|
||||
|
@ -1536,6 +1569,8 @@ newmenu *newmenu_do4( char * title, char * subtitle, int nitems, newmenu_item *
|
|||
menu->items = item;
|
||||
menu->filename = filename;
|
||||
menu->tiny_mode = TinyMode;
|
||||
menu->tabs_flag = TabsFlag;
|
||||
menu->reorderitems = 0; // will be set if needed
|
||||
menu->leave = 1; // Default to leaving newmenu_doX function
|
||||
menu->userdata = userdata;
|
||||
|
||||
|
|
|
@ -72,7 +72,10 @@ extern int newmenu_do2(char *title, char *subtitle, int nitems, newmenu_item *it
|
|||
extern newmenu *newmenu_do3(char *title, char *subtitle, int nitems, newmenu_item *item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata, int citem, char *filename);
|
||||
|
||||
// Tiny menu with GAME_FONT
|
||||
extern newmenu *newmenu_dotiny(char * title, char * subtitle, int nitems, newmenu_item * item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata);
|
||||
extern newmenu *newmenu_dotiny(char * title, char * subtitle, int nitems, newmenu_item * item, int TabsFlag, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata);
|
||||
|
||||
// Basically the same as do2 but sets reorderitems flag for weapon priority menu a bit redundant to get lose of a global variable but oh well...
|
||||
extern int newmenu_doreorder(char * title, char * subtitle, int nitems, newmenu_item *item, int (*subfunction)(newmenu *menu, d_event *event, void *userdata), void *userdata);
|
||||
|
||||
// Sample Code:
|
||||
/*
|
||||
|
|
|
@ -437,10 +437,7 @@ void ReorderPrimary ()
|
|||
m[i].text=(char *)PRIMARY_WEAPON_NAMES(PlayerCfg.PrimaryOrder[i]);
|
||||
m[i].value=PlayerCfg.PrimaryOrder[i];
|
||||
}
|
||||
MenuReordering=1;
|
||||
i = newmenu_do("Reorder Primary","Shift+Up/Down arrow to move item", i, m, NULL, NULL);
|
||||
MenuReordering=0;
|
||||
|
||||
i = newmenu_doreorder("Reorder Primary","Shift+Up/Down arrow to move item", i, m, NULL, NULL);
|
||||
for (i=0;i<MAX_PRIMARY_WEAPONS+1;i++)
|
||||
PlayerCfg.PrimaryOrder[i]=m[i].value;
|
||||
}
|
||||
|
@ -459,9 +456,7 @@ void ReorderSecondary ()
|
|||
m[i].text=(char *)SECONDARY_WEAPON_NAMES(PlayerCfg.SecondaryOrder[i]);
|
||||
m[i].value=PlayerCfg.SecondaryOrder[i];
|
||||
}
|
||||
MenuReordering=1;
|
||||
i = newmenu_do("Reorder Secondary","Shift+Up/Down arrow to move item", i, m, NULL, NULL);
|
||||
MenuReordering=0;
|
||||
i = newmenu_doreorder("Reorder Secondary","Shift+Up/Down arrow to move item", i, m, NULL, NULL);
|
||||
for (i=0;i<MAX_SECONDARY_WEAPONS+1;i++)
|
||||
PlayerCfg.SecondaryOrder[i]=m[i].value;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue