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(); |