Merge branch 'master' into samual/serverlist
authorRudolf Polzer <divverent@xonotic.org>
Sun, 13 Oct 2013 22:50:32 +0000 (00:50 +0200)
committerRudolf Polzer <divverent@xonotic.org>
Sun, 13 Oct 2013 22:50:32 +0000 (00:50 +0200)
gfx/menu/luminos/skinvalues.txt
qcsrc/client/csqcmodel_hooks.qc
qcsrc/dpdefs/csprogsdefs.qc
qcsrc/dpdefs/dpextensions.qc
qcsrc/dpdefs/menudefs.qc
qcsrc/menu/command/menu_cmd.qc
qcsrc/menu/draw.qc
qcsrc/menu/menu.qc
qcsrc/menu/xonotic/dialog_settings_misc.c
qcsrc/menu/xonotic/dialog_settings_video.c
qcsrc/menu/xonotic/slider_resolution.c

index e79dba0e099fd157d28f4c8f7ad7692b3568f7c1..5e311c9090adaef842639e5a1d0dc5165e559423 100755 (executable)
@@ -126,7 +126,7 @@ COLOR_SERVERINFO_IP             '1 0.4375 0'
 
 // item: server list
 ALPHA_SERVERLIST_FULL           0.4
-ALPHA_SERVERLIST_EMPTY          0.7
+ALPHA_SERVERLIST_EMPTY          0.6
 COLOR_SERVERLIST_LOWPING        '0 1 0'
 COLOR_SERVERLIST_MEDPING        '1 0.75 0'
 COLOR_SERVERLIST_HIGHPING       '1 0 0'
index b2c98e4ed4aab27040de2b888c0a6ef1a5f3431c..3837ed4c97b50823be3f604172221766a4c79cbb 100644 (file)
@@ -180,7 +180,7 @@ void CSQCPlayer_ModelAppearance_Apply(float islocalplayer)
        float isfriend;
        float cm;
        cm = self.forceplayermodels_savecolormap;
-       cm = (cm >= 1024) ? cm : (stof(getplayerkeyvalue(self.colormap - 1, "colors")) + 1024);
+       cm = (cm >= 1024) ? cm : (stof(getplayerkeyvalue(cm - 1, "colors")) + 1024);
 
        if(teamplay)
                isfriend = (cm == 1024 + 17 * myteam);
index f858afba2fdaa3457f8c1cc33b63dfcf336a9b3c..324f8082f75bf98f12fa9026a154ed3e91532c55 100644 (file)
@@ -447,6 +447,7 @@ string(float ccase, float calpha, float cnum, string s, ...) strconv = #224;
 string(float chars, string s, ...) strpad = #225;
 string(string info, string key, string value, ...) infoadd = #226;
 string(string info, string key) infoget = #227;
+float(string s1, string s2) strcmp = #228;
 float(string s1, string s2, float len) strncmp = #228;
 float(string s1, string s2) strcasecmp = #229;
 float(string s1, string s2, float len) strncasecmp = #230;
index 0a5504392736ebd13e4ee1456a5bb39e80a71950..39a2f593a1e0e8ec792b5c6f4f8b86115fce7632 100644 (file)
@@ -2426,6 +2426,7 @@ string(float ccase, float calpha, float cnum, string s, ...) strconv = #224; //
 string(float chars, string s, ...) strpad = #225; // pad string with spaces to a specified length, < 0 = left padding, > 0 = right padding
 string(string info, string key, string value, ...) infoadd = #226; // sets or adds a key/value pair to an infostring - note: forbidden characters are \ and "
 string(string info, string key) infoget = #227; // gets a key/value pair in an infostring, returns value or null if not found
+float(string s1, string s2) strcmp = #228; // compare two strings
 float(string s1, string s2, float len) strncmp = #228; // compare two strings up to the specified number of characters, if their length differs and is within the specified limit the result will be negative, otherwise it is the difference in value of their first non-matching character.
 float(string s1, string s2) strcasecmp = #229; // compare two strings with case-insensitive matching, characters a-z are considered equivalent to the matching A-Z character, no other differences, and this does not consider special characters equal even if they look similar
 float(string s1, string s2, float len) strncasecmp = #230; // same as strcasecmp but with a length limit, see strncmp
index 1f817cd2029de82d68bba5731993800a9d778ea0..d976973253cb3251865edcb86da2d439c48cf6aa 100644 (file)
@@ -401,6 +401,7 @@ string(float ccase, float calpha, float cnum, string s, ...) strconv = #224;
 string(float chars, string s, ...) strpad = #225;
 string(string info, string key, string value, ...) infoadd = #226;
 string(string info, string key) infoget = #227;
+float(string s1, string s2) strcmp = #228;
 float(string s1, string s2, float len) strncmp = #228;
 float(string s1, string s2) strcasecmp = #229;
 float(string s1, string s2, float len) strncasecmp = #230;
index 2c0b1edf38aa33fcd42e6117bf4a5c6c108bd04a..c7499e58e40a8a94ba1f31f2c504f0310bb465a3 100644 (file)
@@ -51,6 +51,12 @@ void GameCommand(string theCommand)
                return;
        }
 
+       if(argv(0) == "update_conwidths_before_vid_restart")
+       {
+               updateConwidths(cvar("vid_width"), cvar("vid_height"), cvar("vid_pixelheight"));
+               return;
+       }
+
        if(argv(0) == "directmenu" || argv(0) == "directpanelhudmenu")
        {
                string filter = string_null;
index 9c0d032432f384a60299fddc697c5b2df918ee06..df93daa6e0bcd3cacaf8fbf57d3ffdbdb0d5ba35 100644 (file)
@@ -276,8 +276,10 @@ void draw_BorderPicture(vector theOrigin, string pic, vector theSize, vector the
 }
 void draw_Text(vector theOrigin, string theText, vector theSize, vector theColor, float theAlpha, float ICanHasKallerz)
 {
-       if(theSize_x <= 0 || theSize_y <= 0)
-               error("Drawing zero size text?\n");
+       if(theSize_x <= 0 || theSize_y <= 0) {
+               dprint("Drawing zero size text?\n");
+               return;
+       }
 
        //float wi;
        //wi = draw_TextWidth(theText, ICanHasKallerz, theSize);
index d2e7fe7f1e4239243855fe958c5e49d21ce16541..1e4caf78a0972fcea91f2b5e32a04a2150d8508e 100644 (file)
@@ -17,7 +17,7 @@ float menuNotTheFirstFrame;
 float menuMouseMode;
 
 float conwidth_s, conheight_s, vidwidth_s, vidheight_s, vidpixelheight_s,
-      realconwidth, realconheight, screenconwidth, screenconheight;
+      realconwidth, realconheight;
 
 void m_sync()
 {
@@ -96,11 +96,10 @@ void m_init()
 }
 
 const float MENU_ASPECT = 1.25; // 1280x1024
-const float MENU_MINHEIGHT = 600;
 
 void draw_reset_cropped()
 {
-       draw_reset(screenconwidth, screenconheight, 0.5 * (realconwidth - screenconwidth), 0.5 * (realconheight - screenconheight));
+       draw_reset(conwidth, conheight, 0.5 * (realconwidth - conwidth), 0.5 * (realconheight - conheight));
 }
 void draw_reset_full()
 {
@@ -111,7 +110,8 @@ void UpdateConWidthHeight(float w, float h, float p)
 {
        if (w != vidwidth_s || h != vidheight_s || p != vidpixelheight_s)
        {
-               updateConwidths(w, h, p);
+               if (updateConwidths(w, h, p))
+                       localcmd(sprintf("\nexec %s\n", cvar_string("menu_font_cfg")));
                vidwidth_s = w;
                vidheight_s = h;
                vidpixelheight_s = p;
@@ -132,18 +132,6 @@ void UpdateConWidthHeight(float w, float h, float p)
                conwidth = realconwidth;
                conheight = realconwidth / MENU_ASPECT;
        }
-       screenconwidth = conwidth;
-       screenconheight = conheight;
-       if(conwidth < MENU_MINHEIGHT * MENU_ASPECT)
-       {
-               conheight *= MENU_MINHEIGHT * MENU_ASPECT / conwidth;
-               conwidth = MENU_MINHEIGHT * MENU_ASPECT;
-       }
-       if(conheight < MENU_MINHEIGHT)
-       {
-               conwidth *= MENU_MINHEIGHT / conheight;
-               conheight = MENU_MINHEIGHT;
-       }
        if(main)
        {
                if(conwidth_s != conwidth || conheight_s != conheight)
index 37effe93256e3415ac97140777ee7bda1062669e..c14a47c9c1633c0714b3ae8054a6f5a06c56b8bd 100644 (file)
@@ -50,6 +50,10 @@ void XonoticMiscSettingsTab_fill(entity me)
                me.TD(me, 1, 1.8, e = makeXonoticTextLabel(0, _("Client UDP port:")));
                me.TD(me, 1, 1, e = makeXonoticInputBox(0, "cl_port"));
                        e.enableClearButton = 0;
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               if(cvar_type("crypto_aeslevel") & CVAR_TYPEFLAG_ENGINE)
+                       me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(2, 1, "crypto_aeslevel", _("Use encryption (AES) when available")));
        me.TR(me);
        me.TR(me);
                me.TDempty(me, 0.2);
index 8d9f2192664cfd849eb4dc0372b616c82251bd09..076dd2337494296f0c0b4b4e8d8f5c7631f11c55 100644 (file)
@@ -140,6 +140,6 @@ void XonoticVideoSettingsTab_fill(entity me)
        }
 
        me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_width $_menu_vid_width; vid_height $_menu_vid_height; vid_pixelheight $_menu_vid_pixelheight; vid_desktopfullscreen $_menu_vid_desktopfullscreen; vid_restart; menu_restart; menu_cmd videosettings", COMMANDBUTTON_APPLY));
+               me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_width $_menu_vid_width; vid_height $_menu_vid_height; vid_pixelheight $_menu_vid_pixelheight; vid_desktopfullscreen $_menu_vid_desktopfullscreen; menu_cmd update_conwidths_before_vid_restart; vid_restart; menu_cmd sync", COMMANDBUTTON_APPLY));
 }
 #endif
index 0c33e345546c9db0d85636cb7e1380f775ef3430..66f48f9e58ef2bf26f838e6736889632fe659d1a 100644 (file)
@@ -9,7 +9,7 @@ CLASS(XonoticResolutionSlider) EXTENDS(XonoticTextSlider)
        ATTRIB(XonoticResolutionSlider, vid_fullscreen, float, -1)
 ENDCLASS(XonoticResolutionSlider)
 entity makeXonoticResolutionSlider();
-void updateConwidths(float width, float height, float pixelheight);
+float updateConwidths(float width, float height, float pixelheight);
 #endif
 
 #ifdef IMPLEMENTATION
@@ -17,12 +17,16 @@ void updateConwidths(float width, float height, float pixelheight);
 /* private static */ float XonoticResolutionSlider_DataHasChanged;
 
 // Updates cvars (to be called by menu.qc at startup or on detected res change)
-void updateConwidths(float width, float height, float pixelheight)
+float updateConwidths(float width, float height, float pixelheight)
 {
        vector r, c;
        float minfactor, maxfactor;
        float sz, f;
 
+       sz = cvar("menu_vid_scale");
+       if (sz < -1)
+               return 0;  // No recalculation.
+
        // Save off current settings.
        cvar_set("_menu_vid_width", ftos(width));
        cvar_set("_menu_vid_height", ftos(height));
@@ -32,7 +36,6 @@ void updateConwidths(float width, float height, float pixelheight)
        r_x = width;
        r_y = height;
        r_z = pixelheight;
-       sz = cvar("menu_vid_scale");
 
        // calculate the base resolution
        c_z = 0;
@@ -61,9 +64,19 @@ void updateConwidths(float width, float height, float pixelheight)
                f = 1;
        c = c * f; // fteqcc fail
 
-       cvar_set("vid_conwidth", ftos(rint(c_x)));
-       cvar_set("vid_conheight", ftos(rint(c_y)));
+       c_x = rint(c_x);
+       c_y = rint(c_y);
+
+       // Please reload resolutions list and such stuff.
        XonoticResolutionSlider_DataHasChanged = TRUE;
+
+       if (c_x != cvar("vid_conwidth") || c_y != cvar("vid_conheight"))
+       {
+               cvar_set("vid_conwidth", ftos(c_x));
+               cvar_set("vid_conheight", ftos(c_y));
+               return 1;
+       }
+       return 0;
 }
 entity makeXonoticResolutionSlider()
 {
@@ -149,10 +162,12 @@ void XonoticResolutionSlider_loadResolutions(entity me, float fullscreen)
        if(me.nValues == 0)
        {
                me.addResolution(me, 640, 480, 1); // pc res
+#if 0
                me.addResolution(me, 720, 480, 1.125); // DVD NTSC 4:3
                me.addResolution(me, 720, 576, 0.9375); // DVD PAL 4:3
                me.addResolution(me, 720, 480, 0.84375); // DVD NTSC 16:9
                me.addResolution(me, 720, 576, 0.703125); // DVD PAL 16:9
+#endif
                me.addResolution(me, 800, 480, 1); // 480p at 1:1 pixel aspect
                me.addResolution(me, 800, 600, 1); // pc res
                me.addResolution(me, 1024, 600, 1); // notebook res