]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud/hud.qc
Merge branch 'master' into develop
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / hud.qc
index bbb49199f9d727f342b5775c1456e1532b897842..9593e193652a6843a290fe7b47f55c22c52907c1 100644 (file)
@@ -1,25 +1,25 @@
 #include "hud.qh"
 
-#include <client/defs.qh>
-#include <client/miscfunctions.qh>
+#include <client/draw.qh>
+#include <client/hud/hud_config.qh>
+#include <client/hud/panel/chat.qh>
+#include <client/hud/panel/scoreboard.qh>
+#include <client/items/items.qh>
+#include <client/mapvoting.qh>
+#include <client/teamradar.qh>
 #include <client/view.qh>
-#include "panel/scoreboard.qh"
-#include "hud_config.qh"
-#include "../mapvoting.qh"
-#include "../teamradar.qh"
-#include <common/minigames/cl_minigames.qh>
-#include <common/t_items.qh>
 #include <common/deathtypes/all.qh>
 #include <common/ent_cs.qh>
+#include <common/gamemodes/_mod.qh>
 #include <common/items/_mod.qh>
 #include <common/mapinfo.qh>
-#include <common/vehicles/all.qh>
-#include <common/vehicles/vehicle/bumblebee.qh>
+#include <common/minigames/cl_minigames.qh>
 #include <common/mutators/mutator/waypoints/all.qh>
 #include <common/stats.qh>
-#include <lib/csqcmodel/cl_player.qh>
+#include <common/vehicles/all.qh>
+#include <common/vehicles/vehicle/bumblebee.qh>
 #include <lib/csqcmodel/cl_model.qh>
-#include <common/gamemodes/_mod.qh>
+#include <lib/csqcmodel/cl_player.qh>
 
 
 /*
@@ -28,6 +28,98 @@ Misc HUD functions
 ==================
 */
 
+void draw_cursor(vector pos, vector ofs, string img, vector col, float a)
+{
+       ofs = vec2(ofs.x * SIZE_CURSOR.x, ofs.y * SIZE_CURSOR.y);
+       drawpic(pos - ofs, strcat(draw_currentSkin, img), SIZE_CURSOR, col, a, DRAWFLAG_NORMAL);
+}
+
+void draw_cursor_normal(vector pos, vector col, float a)
+{
+       draw_cursor(pos, OFFSET_CURSOR, "/cursor", col, a);
+}
+
+void LoadMenuSkinValues()
+{
+       int fh = -1;
+       if(cvar_string("menu_skin") != "")
+       {
+               draw_currentSkin = strcat("gfx/menu/", cvar_string("menu_skin"));
+               fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ);
+       }
+       if(fh < 0 && cvar_defstring("menu_skin") != "")
+       {
+               cvar_set("menu_skin", cvar_defstring("menu_skin"));
+               draw_currentSkin = strcat("gfx/menu/", cvar_string("menu_skin"));
+               fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ);
+       }
+       if(fh < 0)
+       {
+               draw_currentSkin = "gfx/menu/default";
+               fh = fopen(strcat(draw_currentSkin, "/skinvalues.txt"), FILE_READ);
+       }
+
+       draw_currentSkin = strzone(draw_currentSkin);
+
+       if(fh >= 0)
+       {
+               string s;
+               while((s = fgets(fh)))
+               {
+                       int n = tokenize_console(s);
+                       if (n < 2)
+                               continue;
+                       if(substring(argv(0), 0, 2) == "//")
+                               continue;
+                       if(argv(0) == "SIZE_CURSOR")
+                               SIZE_CURSOR = stov(substring(s, argv_start_index(1), argv_end_index(-1) - argv_start_index(1)));
+                       else if(argv(0) == "OFFSET_CURSOR")
+                               OFFSET_CURSOR = stov(substring(s, argv_start_index(1), argv_end_index(-1) - argv_start_index(1)));
+               }
+               fclose(fh);
+       }
+}
+
+void HUD_Scale_Disable()
+{
+       hud_scale = '1 1 0';
+       hud_shift = '0 0 0';
+       drawfontscale = hud_scale;
+}
+
+void HUD_Scale_Enable()
+{
+       hud_scale = hud_scale_current;
+       hud_shift = hud_shift_current;
+       drawfontscale = hud_scale;
+}
+
+vector HUD_Scale(vector v)
+{
+       v.x = HUD_ScaleX(v.x);
+       v.y = HUD_ScaleY(v.y);
+       return v;
+}
+
+vector HUD_Shift(vector v)
+{
+       v.x = HUD_ShiftX(v.x);
+       v.y = HUD_ShiftY(v.y);
+       return v;
+}
+
+vector HUD_GetFontsize(string cvarname)
+{
+       vector v;
+       v = stov(cvar_string(cvarname));
+       if(v.x == 0)
+               v = '8 8 0';
+       if(v.y == 0)
+               v.y = v.x;
+       v.z = 0;
+       return v;
+}
+
 vector HUD_Get_Num_Color(float hp, float maxvalue, bool blink)
 {
        const vector COLOR100 = '0 1 0'; // green
@@ -201,11 +293,11 @@ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, flo
                        pic = "gfx/hud/default/progressbar_vertical";
                }
 
-        if (baralign == 1) // bottom align
+               if (baralign == 1) // bottom align
                        theOrigin.y += (1 - length_ratio) * theSize.y;
-        else if (baralign == 2) // center align
-            theOrigin.y += 0.5 * (1 - length_ratio) * theSize.y;
-        else if (baralign == 3) // center align, positive values down, negative up
+               else if (baralign == 2) // center align
+                       theOrigin.y += 0.5 * (1 - length_ratio) * theSize.y;
+               else if (baralign == 3) // center align, positive values down, negative up
                {
                        theSize.y *= 0.5;
                        if (length_ratio > 0)
@@ -245,9 +337,9 @@ void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, flo
 
                if (baralign == 1) // right align
                        theOrigin.x += (1 - length_ratio) * theSize.x;
-        else if (baralign == 2) // center align
-            theOrigin.x += 0.5 * (1 - length_ratio) * theSize.x;
-        else if (baralign == 3) // center align, positive values on the right, negative on the left
+               else if (baralign == 2) // center align
+                       theOrigin.x += 0.5 * (1 - length_ratio) * theSize.x;
+               else if (baralign == 3) // center align, positive values on the right, negative on the left
                {
                        theSize.x *= 0.5;
                        if (length_ratio > 0)