| version 1.3 |  | version 1.4 | 
|---|
|  |  |  | 
| * Routines to configure keyboard, joystick, etc.. |  | * Routines to configure keyboard, joystick, etc.. | 
| * |  | * | 
| * $Log$ |  | * $Log$ | 
|  |  | * Revision 1.4  1999/11/20 10:05:17  donut | 
|  |  | * variable size menu patch from Jan Bobrowski.  Variable menu font size support and a bunch of fixes for menus that didn't work quite right, by me (MPM). | 
|  |  | * | 
| * Revision 1.3  1999/10/14 20:33:06  donut |  | * Revision 1.3  1999/10/14 20:33:06  donut | 
| * alpha fixes from Falk Hueffner |  | * alpha fixes from Falk Hueffner | 
| * |  | * | 
|  |  |  | 
|  |  |  | 
|  |  |  | 
|  |  |  | 
|  |  | static float scale=1.0; | 
| void kconfig_sub(kc_item * items,int nitems, char * title) |  | void kconfig_sub(kc_item * items,int nitems, char * title) | 
| { |  | { | 
| grs_canvas * save_canvas; |  | grs_canvas * save_canvas, canvas; | 
| grs_font * save_font; |  | grs_font * save_font; | 
| int old_keyd_repeat; |  | int old_keyd_repeat; | 
|  |  |  | 
|  |  |  | 
| } |  | } | 
|  |  |  | 
| save_canvas = grd_curcanv; |  | save_canvas = grd_curcanv; | 
| gr_set_current_canvas( NULL ); |  |  | 
|  |  | // menu screen scaling, 10/14/99 Jan Bobrowski - scaling for different font sizes 11/18/99 Matt Mueller | 
|  |  | scale=GAME_FONT->ft_h/5.0;//5 is the size of the standard font the menus were designed for. | 
|  |  | printf("scale=%f\n",scale); | 
|  |  | gr_init_sub_canvas(&canvas, &grd_curscreen->sc_canvas, (SWIDTH - 320*scale)/2, (SHEIGHT - 200*scale)/2, 320*scale, 200*scale); | 
|  |  | gr_set_current_canvas(&canvas); | 
|  |  |  | 
| save_font = grd_curcanv->cv_font; |  | save_font = grd_curcanv->cv_font; | 
| game_flush_inputs(); |  | game_flush_inputs(); | 
| old_keyd_repeat = keyd_repeat; |  | old_keyd_repeat = keyd_repeat; | 
| keyd_repeat = 1; |  | keyd_repeat = 1; | 
|  |  |  | 
| nm_draw_background(0,0,grd_curcanv->cv_bitmap.bm_w, grd_curcanv->cv_bitmap.bm_h ); |  | nm_draw_background(0,0,grd_curcanv->cv_bitmap.bm_w-1, grd_curcanv->cv_bitmap.bm_h-1 );//args are x,y,x2,y2 NOT x,y,w,h | 
|  |  |  | 
| grd_curcanv->cv_font = Gamefonts[GFONT_MEDIUM_3]; |  | grd_curcanv->cv_font = Gamefonts[GFONT_MEDIUM_3]; | 
|  |  |  | 
|  |  |  | 
| char * p; |  | char * p; | 
| p = strchr( title, '\n' ); |  | p = strchr( title, '\n' ); | 
| if ( p ) *p = 32; |  | if ( p ) *p = 32; | 
| gr_string( 0x8000, 8, title ); |  | gr_string( 0x8000, 8*scale, title ); | 
| if ( p ) *p = '\n'; |  | if ( p ) *p = '\n'; | 
| } |  | } | 
|  |  |  | 
|  |  |  | 
| grd_curcanv->cv_font = GAME_FONT; |  | grd_curcanv->cv_font = GAME_FONT; | 
| gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); |  | gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); | 
|  |  |  | 
| gr_string( 0x8000, 28, TXT_KCONFIG_STRING_1 ); |  | gr_string( 0x8000, 28*scale, TXT_KCONFIG_STRING_1 ); | 
| gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); |  | gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); | 
| if ( items == kc_keyboard ) |  | if ( items == kc_keyboard ) | 
| { |  | { | 
| gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); |  | gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); | 
| gr_setcolor( BM_XRGB(31,27,6) ); |  | gr_setcolor( BM_XRGB(31,27,6) ); | 
|  |  |  | 
| gr_scanline( 98, 106, 42 ); |  | gr_scanline( 98*scale, 106*scale, 42*scale ); | 
| gr_scanline( 120, 128, 42 ); |  | gr_scanline( 120*scale, 128*scale, 42*scale ); | 
| gr_pixel( 98, 43 ); |  | gr_pixel( 98*scale, 43*scale ); | 
| gr_pixel( 98, 44 ); |  | gr_pixel( 98*scale, 44*scale ); | 
| gr_pixel( 128, 43 ); |  | gr_pixel( 128*scale, 43*scale ); | 
| gr_pixel( 128, 44 ); |  | gr_pixel( 128*scale, 44*scale ); | 
|  |  |  | 
| gr_string( 109, 40, "OR" ); |  | gr_string( 109*scale, 40*scale, "OR" ); | 
|  |  |  | 
| gr_scanline( 253, 261, 42 ); |  | gr_scanline( 253*scale, 261*scale, 42*scale ); | 
| gr_scanline( 274, 283, 42 ); |  | gr_scanline( 274*scale, 283*scale, 42*scale ); | 
| gr_pixel( 253, 43 ); |  | gr_pixel( 253*scale, 43*scale ); | 
| gr_pixel( 253, 44 ); |  | gr_pixel( 253*scale, 44*scale ); | 
| gr_pixel( 283, 43 ); |  | gr_pixel( 283*scale, 43*scale ); | 
| gr_pixel( 283, 44 ); |  | gr_pixel( 283*scale, 44*scale ); | 
|  |  |  | 
| gr_string( 264, 40, "OR" ); |  | gr_string( 264*scale, 40*scale, "OR" ); | 
|  |  |  | 
| } |  | } | 
| else if ( items == kc_joystick ) |  | else if ( items == kc_joystick ) | 
| { |  | { | 
| gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); |  | gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); | 
| gr_setcolor( BM_XRGB(31,27,6) ); |  | gr_setcolor( BM_XRGB(31,27,6) ); | 
| gr_scanline( 18, 135, 37 ); |  | gr_scanline( 18*scale, 135*scale, 37*scale ); | 
| gr_scanline( 181, 294, 37 ); |  | gr_scanline( 181*scale, 294*scale, 37*scale ); | 
| gr_scanline( 18, 144, 122+10 );        //122 was 119 |  | gr_scanline( 18*scale, 144*scale, (122+10)*scale );        //122 was 119 | 
| gr_scanline( 174, 294, 122+10 );       //122 was 119 |  | gr_scanline( 174*scale, 294*scale, (122+10)*scale );       //122 was 119 | 
| gr_string( 0x8000, 35, TXT_BUTTONS ); |  | gr_string( 0x8000, 35*scale, TXT_BUTTONS ); | 
| gr_string( 0x8000,120+10, TXT_AXES );  //120 was 117 |  | gr_string( 0x8000,(120+10)*scale, TXT_AXES );  //120 was 117 | 
| gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); |  | gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); | 
| gr_string( 81, 137, TXT_AXIS ); |  | gr_string( 81*scale, 137*scale, TXT_AXIS ); | 
| gr_string( 111, 137, TXT_INVERT ); |  | gr_string( 111*scale, 137*scale, TXT_INVERT ); | 
| gr_string( 222, 137, TXT_AXIS ); |  | gr_string( 222*scale, 137*scale, TXT_AXIS ); | 
| gr_string( 252, 137, TXT_INVERT ); |  | gr_string( 252*scale, 137*scale, TXT_INVERT ); | 
| } |  | } | 
| else if ( items == kc_mouse ) |  | else if ( items == kc_mouse ) | 
| { |  | { | 
| gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); |  | gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); | 
| gr_setcolor( BM_XRGB(31,27,6) ); |  | gr_setcolor( BM_XRGB(31,27,6) ); | 
| gr_scanline( 18, 135, 37 ); |  | gr_scanline( 18*scale, 135*scale, 37*scale ); | 
| gr_scanline( 181, 294, 37 ); |  | gr_scanline( 181*scale, 294*scale, 37*scale ); | 
| gr_scanline( 18, 144, 119+5 ); |  | gr_scanline( 18*scale, 144*scale, (119+5)*scale ); | 
| gr_scanline( 174, 294, 119+5 ); |  | gr_scanline( 174*scale, 294*scale, (119+5)*scale ); | 
| gr_string( 0x8000, 35, TXT_BUTTONS ); |  | gr_string( 0x8000, 35*scale, TXT_BUTTONS ); | 
| gr_string( 0x8000,117+5, TXT_AXES ); |  | gr_string( 0x8000,(117+5)*scale, TXT_AXES ); | 
| gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); |  | gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); | 
| gr_string( 169, 129, TXT_AXIS ); |  | gr_string( 169*scale, 129*scale, TXT_AXIS ); | 
| gr_string( 199, 129, TXT_INVERT ); |  | gr_string( 199*scale, 129*scale, TXT_INVERT ); | 
| } |  | } | 
| else if ( items == kc_d1x ) |  | else if ( items == kc_d1x ) | 
| { |  | { | 
| gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); |  | gr_set_fontcolor( BM_XRGB(31,27,6), -1 ); | 
| gr_setcolor( BM_XRGB(31,27,6) ); |  | gr_setcolor( BM_XRGB(31,27,6) ); | 
|  |  |  | 
| gr_string( 94, 40, "KB"); |  | gr_string( 94*scale, 40*scale, "KB"); | 
| gr_string(121, 40, "JOY"); |  | gr_string(121*scale, 40*scale, "JOY"); | 
| } |  | } | 
|  |  |  | 
| for (i=0; i<nitems; i++ ) |  | for (i=0; i<nitems; i++ ) | 
|  |  |  | 
|  |  |  | 
|  |  |  | 
| if((item->text_num1) < N_TEXT_STRINGS) |  | if((item->text_num1) < N_TEXT_STRINGS) | 
| gr_string( item->x, item->y, Text_string[item->text_num1] ); |  | gr_string( item->x*scale, item->y*scale, Text_string[item->text_num1] ); | 
| else |  | else | 
| { |  | { | 
| switch(item->text_num1-N_TEXT_STRINGS) |  | switch(item->text_num1-N_TEXT_STRINGS) | 
| { |  | { | 
| case 0:  gr_string( item->x, item->y,"CYC PRIMARY"); break; |  | case 0:  gr_string( item->x*scale, item->y*scale,"CYC PRIMARY"); break; | 
| case 1:  gr_string( item->x, item->y,"CYC SECONDARY"); break; |  | case 1:  gr_string( item->x*scale, item->y*scale,"CYC SECONDARY"); break; | 
| case 2:  gr_string( item->x, item->y,"TOGGLE PRIM AUTO"); break; |  | case 2:  gr_string( item->x*scale, item->y*scale,"TOGGLE PRIM AUTO"); break; | 
| case 3:  gr_string( item->x, item->y,"TOGGLE SEC AUTO"); break; |  | case 3:  gr_string( item->x*scale, item->y*scale,"TOGGLE SEC AUTO"); break; | 
| case 4:  gr_string( item->x, item->y,"WEAPON 1"); break; |  | case 4:  gr_string( item->x*scale, item->y*scale,"WEAPON 1"); break; | 
| case 5:  gr_string( item->x, item->y,"WEAPON 2"); break; |  | case 5:  gr_string( item->x*scale, item->y*scale,"WEAPON 2"); break; | 
| case 6:  gr_string( item->x, item->y,"WEAPON 3"); break; |  | case 6:  gr_string( item->x*scale, item->y*scale,"WEAPON 3"); break; | 
| case 7:  gr_string( item->x, item->y,"WEAPON 4"); break; |  | case 7:  gr_string( item->x*scale, item->y*scale,"WEAPON 4"); break; | 
| case 8:  gr_string( item->x, item->y,"WEAPON 5"); break; |  | case 8:  gr_string( item->x*scale, item->y*scale,"WEAPON 5"); break; | 
| case 9:  gr_string( item->x, item->y,"WEAPON 6"); break; |  | case 9:  gr_string( item->x*scale, item->y*scale,"WEAPON 6"); break; | 
| case 10: gr_string( item->x, item->y,"WEAPON 7"); break; |  | case 10: gr_string( item->x*scale, item->y*scale,"WEAPON 7"); break; | 
| case 11: gr_string( item->x, item->y,"WEAPON 8"); break; |  | case 11: gr_string( item->x*scale, item->y*scale,"WEAPON 8"); break; | 
| case 12: gr_string( item->x, item->y,"WEAPON 9"); break; |  | case 12: gr_string( item->x*scale, item->y*scale,"WEAPON 9"); break; | 
| case 13: gr_string( item->x, item->y,"WEAPON 0"); break; |  | case 13: gr_string( item->x*scale, item->y*scale,"WEAPON 0"); break; | 
| } |  | } | 
| } |  | } | 
|  |  |  | 
|  |  |  | 
| gr_setcolor( BM_XRGB(21,0,24) ); |  | gr_setcolor( BM_XRGB(21,0,24) ); | 
| else |  | else | 
| gr_setcolor( BM_XRGB(16,0,19) ); |  | gr_setcolor( BM_XRGB(16,0,19) ); | 
| gr_urect( item->w1+item->x, item->y-1, item->w1+item->x+item->w2, item->y+h ); |  | gr_urect( (item->w1+item->x)*scale, item->y*scale-1, (item->w1+item->x+item->w2)*scale, item->y*scale+h ); | 
|  |  |  | 
| gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); |  | gr_set_fontcolor( BM_XRGB(28,28,28), -1 ); | 
|  |  |  | 
| x = item->w1+item->x+((item->w2-w)/2); |  | x = (item->w1+item->x)*scale+((item->w2*scale-w)/2); | 
|  |  |  | 
| gr_string( x, item->y, btext ); |  | gr_string( x, item->y*scale, btext ); | 
| } |  | } | 
|  |  |  | 
|  |  |  |