| version 1.1 | | version 1.2 |
|---|
| | |
| grs_canvas * menu_canvas; | | grs_canvas * menu_canvas; |
| grs_bitmap * saved; // The background under the menu. | | grs_bitmap * saved; // The background under the menu. |
| grs_bitmap * background; | | grs_bitmap * background; |
| | | int background_is_sub; |
| } bkg; | | } bkg; |
| | | |
| extern grs_bitmap nm_background; | | extern grs_bitmap nm_background; |
| | |
| } | | } |
| } | | } |
| | | |
| | | int network_menu_hskip=4; |
| int network_menu_width[LINE_ITEMS] = { 10, 6, 72, 37, 38, 66, 25, 40 }; | | int network_menu_width[LINE_ITEMS] = { 10, 6, 72, 37, 38, 66, 25, 40 }; |
| | | int ref_network_menu_width[LINE_ITEMS] = { 10, 6, 72, 37, 38, 66, 25, 40 }; |
| char *network_menu_title[LINE_ITEMS] = { "", "", "Game", "Mode", "#Plrs", "Mission", "Lev", "Status" }; | | char *network_menu_title[LINE_ITEMS] = { "", "", "Game", "Mode", "#Plrs", "Mission", "Lev", "Status" }; |
| | | |
| static int selected_game; | | static int selected_game; |
| | |
| draw_item(bg, lis[i], i == selected_game); | | draw_item(bg, lis[i], i == selected_game); |
| } | | } |
| } | | } |
| | | |
| static void init_background(bkg *bg, int x, int y, int w, int h) { | | static void init_background(bkg *bg, int x, int y, int w, int h) { |
| bg->menu_canvas = gr_create_sub_canvas( &grd_curscreen->sc_canvas, x, y, w, h ); | | bg->menu_canvas = gr_create_sub_canvas( &grd_curscreen->sc_canvas, x, y, w, h ); |
| gr_set_current_canvas( bg->menu_canvas ); | | gr_set_current_canvas( bg->menu_canvas ); |
| | |
| gr_bm_bitblt(w, h, 0, 0, 0, 0, &grd_curcanv->cv_bitmap, bg->saved ); | | gr_bm_bitblt(w, h, 0, 0, 0, 0, &grd_curcanv->cv_bitmap, bg->saved ); |
| gr_set_current_canvas( NULL ); | | gr_set_current_canvas( NULL ); |
| nm_draw_background(x,y,x+w-1,y+h-1); | | nm_draw_background(x,y,x+w-1,y+h-1); |
| | | if (w > nm_background.bm_w || h > nm_background.bm_h){ |
| | | bg->background=gr_create_bitmap(w,h); |
| | | gr_bitmap_scale_to(&nm_background,bg->background); |
| | | bg->background_is_sub=0; |
| | | }else{ |
| bg->background = gr_create_sub_bitmap(&nm_background,0,0,w,h); | | bg->background = gr_create_sub_bitmap(&nm_background,0,0,w,h); |
| | | bg->background_is_sub=1; |
| | | } |
| gr_set_current_canvas( bg->menu_canvas ); | | gr_set_current_canvas( bg->menu_canvas ); |
| } | | } |
| | | |
| | |
| gr_set_current_canvas(bg->menu_canvas); | | gr_set_current_canvas(bg->menu_canvas); |
| gr_bitmap(0, 0, bg->saved); | | gr_bitmap(0, 0, bg->saved); |
| gr_free_bitmap(bg->saved); | | gr_free_bitmap(bg->saved); |
| free( bg->background ); | | if (bg->background_is_sub) |
| | | gr_free_sub_bitmap( bg->background ); |
| | | else |
| | | gr_free_bitmap( bg->background ); |
| gr_free_sub_canvas( bg->menu_canvas ); | | gr_free_sub_canvas( bg->menu_canvas ); |
| } | | } |
| | | |
| | |
| char menu_text[MAX_ACTIVE_NETGAMES][LINE_ITEMS][MAX_TEXT_LEN], | | char menu_text[MAX_ACTIVE_NETGAMES][LINE_ITEMS][MAX_TEXT_LEN], |
| struct line_item lis[MAX_ACTIVE_NETGAMES][LINE_ITEMS]) | | struct line_item lis[MAX_ACTIVE_NETGAMES][LINE_ITEMS]) |
| { | | { |
| int i,j,k; | | int i,j,k,yp; |
| | | |
| gr_set_current_canvas( NULL ); | | gr_set_current_canvas( NULL ); |
| | | |
| init_background(&bg, 0, 7, grd_curcanv->cv_bitmap.bm_w, | | init_background(&bg, 0, 7, grd_curcanv->cv_bitmap.bm_w, |
| grd_curcanv->cv_bitmap.bm_h - 14); | | grd_curcanv->cv_bitmap.bm_h - 14); |
| | | |
| | | yp=22; |
| gr_set_curfont(Gamefonts[GFONT_BIG_1]); | | gr_set_curfont(Gamefonts[GFONT_BIG_1]); |
| gr_string(0x8000, 22, "Netgames"); | | gr_string(0x8000, yp, "Netgames");//yp was 22 |
| | | yp+=grd_curcanv->cv_font->ft_h+network_menu_hskip*3+Gamefonts[GFONT_SMALL]->ft_h;//need to account for size of current socket, drawn elsewhere |
| // draw titles | | // draw titles |
| gr_set_curfont(Gamefonts[GFONT_SMALL]); | | gr_set_curfont(Gamefonts[GFONT_SMALL]); |
| gr_set_fontcolor(BM_XRGB(27, 27, 27), -1); | | gr_set_fontcolor(BM_XRGB(27, 27, 27), -1); |
| k = 15; | | k = 15; |
| for (j = 0; j < LINE_ITEMS; j++) { | | for (j = 0; j < LINE_ITEMS; j++) { |
| gr_ustring(k, 61, network_menu_title[j]); | | gr_ustring(k, yp, network_menu_title[j]);//yp was 61 |
| k += network_menu_width[j]; | | k += network_menu_width[j]; |
| } | | } |
| | | |
| | | |
| for (i = 0; i < MAX_ACTIVE_NETGAMES; i++) { | | for (i = 0; i < MAX_ACTIVE_NETGAMES; i++) { |
| struct line_item *li = lis[i]; | | struct line_item *li = lis[i]; |
| k=15; | | k=15; |
| | | |
| | | yp+=grd_curcanv->cv_font->ft_h+network_menu_hskip; |
| for (j = 0; j < LINE_ITEMS; j++) { | | for (j = 0; j < LINE_ITEMS; j++) { |
| li[j].x = k; | | li[j].x = k; |
| li[j].y = 70 + i * 9; | | li[j].y = yp; |
| | | // li[j].y = 70 + i * 9; |
| li[j].width = network_menu_width[j] - (j > 1 ? 4 : 0); // HACK! | | li[j].width = network_menu_width[j] - (j > 1 ? 4 : 0); // HACK! |
| k += network_menu_width[j]; | | k += network_menu_width[j]; |
| li[j].value = menu_text[i][j]; | | li[j].value = menu_text[i][j]; |
| | |
| fix t, req_timer = 0; | | fix t, req_timer = 0; |
| | | |
| selected_game = 0; | | selected_game = 0; |
| | | |
| gr_palette_fade_in( gr_palette, 32, 0 ); | | gr_palette_fade_in( gr_palette, 32, 0 ); |
| save_canvas = grd_curcanv; | | save_canvas = grd_curcanv; |
| gr_set_current_canvas( NULL ); | | gr_set_current_canvas( NULL ); |
| save_font = grd_curcanv->cv_font; | | save_font = grd_curcanv->cv_font; |
| | | |
| | | for (k=0;k<LINE_ITEMS;k++)//scale columns to fit screen res. |
| | | network_menu_width[k]=ref_network_menu_width[k]*grd_curcanv->cv_bitmap.bm_w/320; |
| | | network_menu_hskip=(grd_curcanv->cv_bitmap.bm_h-Gamefonts[GFONT_BIG_1]->ft_h-22-Gamefonts[GFONT_SMALL]->ft_h*17)/17; |
| | | |
| init_background(&bg, 0, 7, grd_curcanv->cv_bitmap.bm_w, | | init_background(&bg, 0, 7, grd_curcanv->cv_bitmap.bm_w, |
| grd_curcanv->cv_bitmap.bm_h - 14); | | grd_curcanv->cv_bitmap.bm_h - 14); |
| | | |
| | |
| while (!done) { | | while (!done) { |
| if (Network_socket != old_socket) { | | if (Network_socket != old_socket) { |
| gr_set_fontcolor(BM_XRGB(27, 27, 27), -1); | | gr_set_fontcolor(BM_XRGB(27, 27, 27), -1); |
| draw_back(&bg, 30, 52, 250, 9); | | draw_back(&bg, 30, 22+Gamefonts[GFONT_BIG_1]->ft_h+network_menu_hskip*2, 250, Gamefonts[GFONT_SMALL]->ft_h+4);//was 52,250,9 |
| gr_printf(30, 52, "Current IPX socket is %+d " | | gr_printf(30, 22+Gamefonts[GFONT_BIG_1]->ft_h+network_menu_hskip*2, "Current IPX socket is %+d " |
| "(PgUp/PgDn to change)", Network_socket); | | "(PgUp/PgDn to change)", Network_socket); |
| if (old_socket != -32768) { /* changed by user? */ | | if (old_socket != -32768) { /* changed by user? */ |
| network_listen(); | | network_listen(); |