#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>
/*
}
}
+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
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)
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)
drawsubpic(pos + eX * mySize.x - eX * min(mySize.x * 0.5, mySize.y), eX * min(mySize.x * 0.5, mySize.y) + eY * mySize.y, pic, '0.75 0 0', '0.25 1 0', color, theAlpha, drawflag);
}
-void DrawNumIcon_expanding(vector myPos, vector mySize, float theTime, string icon, bool vertical, int icon_right_align, vector color, float theAlpha, float fadelerp)
+void DrawNumIcon_expanding(vector myPos, vector mySize, float theTime, string icon, bool vertical, bool isInfinite, int icon_right_align, vector color, float theAlpha, float fadelerp)
{
TC(bool, vertical); TC(int, icon_right_align);
vector newPos = '0 0 0', newSize = '0 0 0';
vector picpos, numpos;
+ string text = isInfinite ? "\xE2\x88\x9E" : ftos(theTime); // Use infinity symbol (U+221E)
if (vertical)
{
// reduce only y to draw numbers with different number of digits with the same y size
numpos.y += newSize.y * ((1 - 0.7) / 2);
newSize.y *= 0.7;
- drawstring_aspect(numpos, ftos(theTime), newSize, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
+ drawstring_aspect(numpos, text, newSize, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
return;
}
// NOTE: newSize_x is always equal to 3 * mySize_y so we can use
// '2 1 0' * newSize_y instead of eX * (2/3) * newSize_x + eY * newSize_y
- drawstring_aspect_expanding(numpos, ftos(theTime), '2 1 0' * newSize.y, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL, fadelerp);
+ drawstring_aspect_expanding(numpos, text, '2 1 0' * newSize.y, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL, fadelerp);
drawpic_aspect_skin_expanding(picpos, icon, '1 1 0' * newSize.y, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL, fadelerp);
}
-void DrawNumIcon(vector myPos, vector mySize, float theTime, string icon, bool vertical, int icon_right_align, vector color, float theAlpha)
+void DrawNumIcon(vector myPos, vector mySize, float theTime, string icon, bool vertical, bool isInfinite, int icon_right_align, vector color, float theAlpha)
{
TC(bool, vertical); TC(int, icon_right_align);
- DrawNumIcon_expanding(myPos, mySize, theTime, icon, vertical, icon_right_align, color, theAlpha, 0);
+ DrawNumIcon_expanding(myPos, mySize, theTime, icon, vertical, isInfinite, icon_right_align, color, theAlpha, 0);
}
/*
{
if(autocvar__hud_configure)
return true;
- if(mv_active)
+ if(mv_active && !isdemo())
return true;
//entity local_player = ((csqcplayer) ? csqcplayer : CSQCModel_server2csqc(player_localentnum - 1)); // TODO: doesn't use regular cursor handling
//if(local_player.viewloc && (local_player.viewloc.spawnflags & VIEWLOC_FREEAIM))