📄 vid.java
字号:
static Menu.menuslider_s s_brightness_slider = new Menu.menuslider_s(); static Menu.menulist_s s_fs_box = new Menu.menulist_s(); static Menu.menulist_s s_stipple_box = new Menu.menulist_s(); static Menu.menulist_s s_paletted_texture_box = new Menu.menulist_s(); static Menu.menulist_s s_windowed_mouse = new Menu.menulist_s(); static Menu.menuaction_s s_apply_action = new Menu.menuaction_s(); static Menu.menuaction_s s_defaults_action= new Menu.menuaction_s(); static void DriverCallback( Object unused ) { s_current_menu = s_opengl_menu; // s_software_menu; } static void ScreenSizeCallback( Object s ) { Menu.menuslider_s slider = (Menu.menuslider_s) s; Cvar.SetValue( "viewsize", slider.curvalue * 10 ); } static void BrightnessCallback( Object s ) { Menu.menuslider_s slider = (Menu.menuslider_s) s; // if ( stricmp( vid_ref.string, "soft" ) == 0 || // stricmp( vid_ref.string, "softx" ) == 0 ) if ( vid_ref.string.equalsIgnoreCase("soft") || vid_ref.string.equalsIgnoreCase("softx") ) { float gamma = ( 0.8f - ( slider.curvalue/10.0f - 0.5f ) ) + 0.5f; Cvar.SetValue( "vid_gamma", gamma ); } } static void ResetDefaults( Object unused ) { MenuInit(); } static void ApplyChanges( Object unused ) { /* ** invert sense so greater = brighter, and scale to a range of 0.5 to 1.3 */ // the original was modified, because on CRTs it was too dark. // the slider range is [5; 13] // gamma: [1.1; 0.7] float gamma = ( 0.4f - ( s_brightness_slider.curvalue/20.0f - 0.25f ) ) + 0.7f; // modulate: [1.0; 2.6] float modulate = s_brightness_slider.curvalue * 0.2f; Cvar.SetValue( "vid_gamma", gamma ); Cvar.SetValue( "gl_modulate", modulate); Cvar.SetValue( "sw_stipplealpha", s_stipple_box.curvalue ); Cvar.SetValue( "gl_picmip", 3 - s_tq_slider.curvalue ); Cvar.SetValue( "vid_fullscreen", s_fs_box.curvalue ); Cvar.SetValue( "gl_ext_palettedtexture", s_paletted_texture_box.curvalue ); Cvar.SetValue( "gl_mode", s_mode_list.curvalue ); Cvar.SetValue( "_windowed_mouse", s_windowed_mouse.curvalue); Cvar.Set( "vid_ref", drivers[s_ref_list.curvalue] ); Cvar.Set( "gl_driver", drivers[s_ref_list.curvalue] ); if (gl_driver.modified) vid_ref.modified = true; Menu.ForceMenuOff(); } static final String[] resolutions = { "[320 240 ]", "[400 300 ]", "[512 384 ]", "[640 480 ]", "[800 600 ]", "[960 720 ]", "[1024 768 ]", "[1152 864 ]", "[1280 1024]", "[1600 1200]", "[2048 1536]", "user mode", }; static String[] fs_resolutions; static int mode_x; static String[] refs; static String[] drivers; static final String[] yesno_names = { "no", "yes", }; static void initModeList() { DisplayMode[] modes = re.getModeList(); fs_resolutions = new String[modes.length]; fs_modes = new vidmode_t[modes.length]; for (int i = 0; i < modes.length; i++) { DisplayMode m = modes[i]; StringBuffer sb = new StringBuffer(18); sb.append('['); sb.append(m.getWidth()); sb.append(' '); sb.append(m.getHeight()); while (sb.length() < 10) sb.append(' '); sb.append(']'); fs_resolutions[i] = sb.toString(); sb.setLength(0); sb.append("Mode "); sb.append(i); sb.append(':'); sb.append(m.getWidth()); sb.append('x'); sb.append(m.getHeight()); fs_modes[i] = new vidmode_t(sb.toString(), m.getWidth(), m.getHeight(), i); } } private static void initRefs() { drivers = Renderer.getDriverNames(); refs = new String[drivers.length]; StringBuffer sb = new StringBuffer(); for (int i = 0; i < drivers.length; i++) { sb.setLength(0); sb.append("[OpenGL ").append(drivers[i]); while (sb.length() < 16) sb.append(" "); sb.append("]"); refs[i] = sb.toString(); } } /* ** VID_MenuInit */ public static void MenuInit() { initRefs(); if ( gl_driver == null ) gl_driver = Cvar.Get( "gl_driver", Renderer.getPreferedName(), 0 ); if ( gl_picmip == null ) gl_picmip = Cvar.Get( "gl_picmip", "0", 0 ); if ( gl_mode == null) gl_mode = Cvar.Get( "gl_mode", "3", 0 ); if ( sw_mode == null ) sw_mode = Cvar.Get( "sw_mode", "0", 0 ); if ( gl_ext_palettedtexture == null ) gl_ext_palettedtexture = Cvar.Get( "gl_ext_palettedtexture", "1", CVAR_ARCHIVE ); if ( sw_stipplealpha == null ) sw_stipplealpha = Cvar.Get( "sw_stipplealpha", "0", CVAR_ARCHIVE ); if ( _windowed_mouse == null) _windowed_mouse = Cvar.Get( "_windowed_mouse", "0", CVAR_ARCHIVE ); s_mode_list.curvalue = (int)gl_mode.value; if (vid_fullscreen.value != 0.0f) { s_mode_list.itemnames = fs_resolutions; if (s_mode_list.curvalue >= fs_resolutions.length - 1) { s_mode_list.curvalue = 0; } mode_x = fs_modes[s_mode_list.curvalue].width; } else { s_mode_list.itemnames = resolutions; if (s_mode_list.curvalue >= resolutions.length - 1) { s_mode_list.curvalue = 0; } mode_x = vid_modes[s_mode_list.curvalue].width; } if ( SCR.scr_viewsize == null ) SCR.scr_viewsize = Cvar.Get ("viewsize", "100", CVAR_ARCHIVE); s_screensize_slider.curvalue = (int)(SCR.scr_viewsize.value/10); for (int i = 0; i < drivers.length; i++) { if (vid_ref.string.equals(drivers[i])) { s_ref_list.curvalue = i; } } s_opengl_menu.x = (int)(viddef.width * 0.50f); s_opengl_menu.nitems = 0; s_ref_list.type = MTYPE_SPINCONTROL; s_ref_list.name = "driver"; s_ref_list.x = 0; s_ref_list.y = 0; s_ref_list.callback = new Menu.mcallback() { public void execute(Object self) { DriverCallback(self); } }; s_ref_list.itemnames = refs; s_mode_list.type = MTYPE_SPINCONTROL; s_mode_list.name = "video mode"; s_mode_list.x = 0; s_mode_list.y = 10; s_screensize_slider.type = MTYPE_SLIDER; s_screensize_slider.x = 0; s_screensize_slider.y = 20; s_screensize_slider.name = "screen size"; s_screensize_slider.minvalue = 3; s_screensize_slider.maxvalue = 12; s_screensize_slider.callback = new Menu.mcallback() { public void execute(Object self) { ScreenSizeCallback(self); } }; s_brightness_slider.type = MTYPE_SLIDER; s_brightness_slider.x = 0; s_brightness_slider.y = 30; s_brightness_slider.name = "brightness"; s_brightness_slider.callback = new Menu.mcallback() { public void execute(Object self) { BrightnessCallback(self); } }; s_brightness_slider.minvalue = 5; s_brightness_slider.maxvalue = 13; s_brightness_slider.curvalue = ( 1.3f - vid_gamma.value + 0.5f ) * 10; s_fs_box.type = MTYPE_SPINCONTROL; s_fs_box.x = 0; s_fs_box.y = 40; s_fs_box.name = "fullscreen"; s_fs_box.itemnames = yesno_names; s_fs_box.curvalue = (int)vid_fullscreen.value; s_fs_box.callback = new Menu.mcallback() { public void execute(Object o) { int fs = ((Menu.menulist_s)o).curvalue; if (fs == 0) { s_mode_list.itemnames = resolutions; int i = vid_modes.length - 2; while (i > 0 && vid_modes[i].width > mode_x) i--; s_mode_list.curvalue = i; } else { s_mode_list.itemnames = fs_resolutions; int i = fs_modes.length - 1; while (i > 0 && fs_modes[i].width > mode_x) i--; s_mode_list.curvalue = i; } } }; s_defaults_action.type = MTYPE_ACTION; s_defaults_action.name = "reset to default"; s_defaults_action.x = 0; s_defaults_action.y = 90; s_defaults_action.callback = new Menu.mcallback() { public void execute(Object self) { ResetDefaults(self); } }; s_apply_action.type = MTYPE_ACTION; s_apply_action.name = "apply"; s_apply_action.x = 0; s_apply_action.y = 100; s_apply_action.callback = new Menu.mcallback() { public void execute(Object self) { ApplyChanges(self); } }; s_stipple_box.type = MTYPE_SPINCONTROL; s_stipple_box.x = 0; s_stipple_box.y = 60; s_stipple_box.name = "stipple alpha"; s_stipple_box.curvalue = (int)sw_stipplealpha.value; s_stipple_box.itemnames = yesno_names; s_windowed_mouse.type = MTYPE_SPINCONTROL; s_windowed_mouse.x = 0; s_windowed_mouse.y = 72; s_windowed_mouse.name = "windowed mouse"; s_windowed_mouse.curvalue = (int)_windowed_mouse.value; s_windowed_mouse.itemnames = yesno_names; s_tq_slider.type = MTYPE_SLIDER; s_tq_slider.x = 0; s_tq_slider.y = 60; s_tq_slider.name = "texture quality"; s_tq_slider.minvalue = 0; s_tq_slider.maxvalue = 3; s_tq_slider.curvalue = 3 - gl_picmip.value; s_paletted_texture_box.type = MTYPE_SPINCONTROL; s_paletted_texture_box.x = 0; s_paletted_texture_box.y = 70; s_paletted_texture_box.name = "8-bit textures"; s_paletted_texture_box.itemnames = yesno_names; s_paletted_texture_box.curvalue = (int)gl_ext_palettedtexture.value; Menu.Menu_AddItem( s_opengl_menu, s_ref_list ); Menu.Menu_AddItem( s_opengl_menu, s_mode_list ); Menu.Menu_AddItem( s_opengl_menu, s_screensize_slider ); Menu.Menu_AddItem( s_opengl_menu, s_brightness_slider ); Menu.Menu_AddItem( s_opengl_menu, s_fs_box ); Menu.Menu_AddItem( s_opengl_menu, s_tq_slider ); Menu.Menu_AddItem( s_opengl_menu, s_paletted_texture_box ); Menu.Menu_AddItem( s_opengl_menu, s_defaults_action ); Menu.Menu_AddItem( s_opengl_menu, s_apply_action ); Menu.Menu_Center( s_opengl_menu ); s_opengl_menu.x -= 8; } /* ================ VID_MenuDraw ================ */ static void MenuDraw() { s_current_menu = s_opengl_menu; /* ** draw the banner */ Dimension dim = new Dimension(); re.DrawGetPicSize( dim, "m_banner_video" ); re.DrawPic( viddef.width / 2 - dim.width / 2, viddef.height /2 - 110, "m_banner_video" ); /* ** move cursor to a reasonable starting position */ Menu.Menu_AdjustCursor( s_current_menu, 1 ); /* ** draw the menu */ Menu.Menu_Draw( s_current_menu ); } /* ================ VID_MenuKey ================ */ static String MenuKey( int key ) { Menu.menuframework_s m = s_current_menu; final String sound = "misc/menu1.wav"; switch ( key ) { case K_ESCAPE: Menu.PopMenu(); return null; case K_UPARROW: m.cursor--; Menu.Menu_AdjustCursor( m, -1 ); break; case K_DOWNARROW: m.cursor++; Menu.Menu_AdjustCursor( m, 1 ); break; case K_LEFTARROW: Menu.Menu_SlideItem( m, -1 ); break; case K_RIGHTARROW: Menu.Menu_SlideItem( m, 1 ); break; case K_ENTER: Menu.Menu_SelectItem( m ); break; } return sound; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -