X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fslider_resolution.c;h=f29b35e173af6dde24a961735857fd0be95fd7ad;hp=2e3ea4ce4c4d255166b123e5062b6d8fff345df3;hb=56c6c5f48123cb8a92f8ca1a280e0a07c838226e;hpb=a7b24450e4c7ca75636df1375d01d2266bd00c8c diff --git a/qcsrc/menu/xonotic/slider_resolution.c b/qcsrc/menu/xonotic/slider_resolution.c index 2e3ea4ce4..f29b35e17 100644 --- a/qcsrc/menu/xonotic/slider_resolution.c +++ b/qcsrc/menu/xonotic/slider_resolution.c @@ -6,18 +6,25 @@ CLASS(XonoticResolutionSlider) EXTENDS(XonoticTextSlider) METHOD(XonoticResolutionSlider, saveCvars, void(entity)) ENDCLASS(XonoticResolutionSlider) entity makeXonoticResolutionSlider(); +void initConwidths(float width, float height); void updateConwidths(); #endif #ifdef IMPLEMENTATION +void initConwidths(float width, float height) +{ + cvar_set("_menu_vid_width", ftos(width)); + cvar_set("_menu_vid_height", ftos(height)); + cvar_set("_menu_vid_pixelheight", cvar_string("vid_pixelheight")); +} void updateConwidths() { vector r, c; float minfactor, maxfactor; float sz, f; - r_x = cvar("menu_vid_width"); - r_y = cvar("menu_vid_height"); - r_z = cvar("menu_vid_pixelheight"); + r_x = cvar("_menu_vid_width"); + r_y = cvar("_menu_vid_height"); + r_z = cvar("_menu_vid_pixelheight"); sz = cvar("menu_vid_scale"); // calculate the base resolution @@ -65,12 +72,13 @@ void XonoticResolutionSlider_addResolution(entity me, float w, float h, float pi me.addValue(me, strzone(sprintf(_("%dx%d"), w, h)), strzone(strcat(ftos(w), " ", ftos(h), " ", ftos(pixelheight)))); // FIXME (in case you ever want to dynamically instantiate this): THIS IS NEVER FREED } +float autocvar_menu_vid_allowdualscreenresolution; void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) { float i; vector r0, r; - me.configureXonoticTextSlider(me, "menu_vid_width"); + me.configureXonoticTextSlider(me, "_menu_vid_width"); r0 = '0 0 0'; for(i = 0;; ++i) @@ -86,7 +94,9 @@ void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) if(r_x < 640 || r_y < 480) continue; if(r_x > 2 * r_y) // likely dualscreen resolution, skip this one - continue; + if(autocvar_menu_vid_allowdualscreenresolution <= 0) + continue; + me.addResolution(me, r_x, r_y, r_z); } @@ -105,16 +115,16 @@ void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) } void XonoticResolutionSlider_loadCvars(entity me) { - me.setValueFromIdentifier(me, strcat(cvar_string("menu_vid_width"), " ", cvar_string("menu_vid_height"), " ", cvar_string("menu_vid_pixelheight"))); + me.setValueFromIdentifier(me, strcat(cvar_string("_menu_vid_width"), " ", cvar_string("_menu_vid_height"), " ", cvar_string("_menu_vid_pixelheight"))); } void XonoticResolutionSlider_saveCvars(entity me) { if(me.value >= 0 || me.value < me.nValues) { tokenize_console(me.getIdentifier(me)); - cvar_set("menu_vid_width", argv(0)); - cvar_set("menu_vid_height", argv(1)); - cvar_set("menu_vid_pixelheight", argv(2)); + cvar_set("_menu_vid_width", argv(0)); + cvar_set("_menu_vid_height", argv(1)); + cvar_set("_menu_vid_pixelheight", argv(2)); } } #endif