#include "miscfunctions.qh"
-#include "hud.qh"
+#include "hud/_mod.qh"
-#include "../common/command/generic.qh"
+#include <common/command/_mod.qh>
-#include "../common/teams.qh"
+#include <common/teams.qh>
-#include "../lib/csqcmodel/cl_model.qh"
+#include <lib/csqcmodel/cl_model.qh>
void AuditLists()
void MoveToLast(entity e)
{
AuditLists();
- other = e.sort_next;
- while(other)
+ entity ent = e.sort_next;
+ while(ent)
{
- SORT_SWAP(other, e);
- other = e.sort_next;
+ SORT_SWAP(ent, e);
+ ent = e.sort_next;
}
AuditLists();
}
float RegisterTeam(entity Team)
{
+ assert_once(Team.team, eprint(Team));
entity tm;
AuditLists();
for(tm = teams.sort_next; tm; tm = tm.sort_next)
entity GetTeam(int Team, bool add)
{
+ TC(int, Team); TC(bool, add);
int num = (Team == NUM_SPECTATOR) ? 16 : Team;
if(teamslots[num])
return teamslots[num];
if (!add)
- return world;
- entity tm = spawn();
+ return NULL;
+ entity tm = new_pure(team);
tm.team = Team;
teamslots[num] = tm;
RegisterTeam(tm);
return false;
}
-vector rotate(vector v, float a)
-{
- vector w = '0 0 0';
- // FTEQCC SUCKS AGAIN
- w.x = v.x * cos(a) + v.y * sin(a);
- w.y = -1 * v.x * sin(a) + v.y * cos(a);
- return w;
-}
-
// decolorizes and team colors the player name when needed
string playername(string thename, float teamid)
{
+ TC(int, teamid);
string t;
if (teamplay)
{
return vec;
}
-void dummyfunction(float a1, float a2, float a3, float a4, float a5, float a6, float a7, float a8)
-{
-}
-
float expandingbox_sizefactor_from_fadelerp(float fadelerp)
{
return 1.2 / (1.2 - fadelerp);
void drawpic_tiled(vector pos, string pic, vector sz, vector area, vector color, float theAlpha, float drawflag)
{
+ pos = HUD_Shift(pos);
+ sz = HUD_Scale(sz);
+ area = HUD_Scale(area);
+
vector current_pos = '0 0 0', end_pos, new_size = '0 0 0', ratio = '0 0 0';
end_pos = pos + area;
drawpic_skin(position, pic, theScale, rgb, theAlpha * fadelerp, flag);
}
+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;
+}
+
+float stringwidth(string text, float handleColors, vector sz)
+{
+ vector dfs = drawfontscale;
+ drawfontscale = '1 1 0';
+ float r = stringwidth_builtin(text, handleColors, sz);
+ drawfontscale = dfs;
+ return r;
+}
+
// drawstring wrapper to draw a string as large as possible with preserved aspect ratio into a box
void drawstring_aspect(vector pos, string text, vector sz, vector color, float theAlpha, float drawflag) {
SET_POS_AND_SZ_Y_ASPECT(false);
float sz;
sz = expandingbox_sizefactor_from_fadelerp(fadelerp);
+ drawfontscale = hud_scale * sz;
+ vector dfs = drawfontscale;
drawfontscale = sz * '1 1 0';
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0);
- drawstring(position + expandingbox_resize_centered_box_offset(sz, theScale, stringwidth(text, false, theScale * (sz / drawfontscale.x)) / (theScale.x * sz)), text, theScale * (sz / drawfontscale.x), rgb, theAlpha * (1 - fadelerp), flag);
+ float textaspect = stringwidth_builtin(text, false, theScale * (sz / drawfontscale.x)) / (theScale.x * sz);
+ drawfontscale = dfs;
+ drawstring(position + expandingbox_resize_centered_box_offset(sz, theScale, textaspect), text, HUD_Scale(theScale * (sz / drawfontscale.x)), rgb, theAlpha * (1 - fadelerp), flag);
// width parameter:
- // (scale_x * sz / drawfontscale_x) * drawfontscale_x * SIZE1 / (scale_x * sz)
+ // (scale_x * sz / drawfontscale.x) * drawfontscale.x * SIZE1 / (scale_x * sz)
// SIZE1
- drawfontscale = '1 1 0';
+ drawfontscale = hud_scale;
}
// drawstring wrapper to draw a string as large as possible with preserved aspect ratio into a box
float sz;
sz = expandingbox_sizefactor_from_fadelerp(fadelerp);
- drawfontscale = sz * '1 1 0';
- dummyfunction(0, 0, 0, 0, 0, 0, 0, 0);
- drawcolorcodedstring(position + expandingbox_resize_centered_box_offset(sz, theScale, stringwidth(text, true, theScale * (sz / drawfontscale.x)) / (theScale.x * sz)), text, theScale * (sz / drawfontscale.x), theAlpha * (1 - fadelerp), flag);
- drawfontscale = '1 1 0';
+ drawfontscale = hud_scale * sz;
+ // eventually replace with drawcolorcodedstring
+ drawcolorcodedstring(position + expandingbox_resize_centered_box_offset(sz, theScale, stringwidth_builtin(text, true, theScale * (sz / drawfontscale.x)) / (theScale.x * sz)), text, theScale * (sz / drawfontscale.x), theAlpha * (1 - fadelerp), flag);
+ drawfontscale = hud_scale;
}
void drawcolorcodedstring_aspect_expanding(vector pos, string text, vector sz, float theAlpha, float drawflag, float fadelerp) {
drawcolorcodedstring_expanding(pos, text, '1 1 0' * sz.y, theAlpha, drawflag, fadelerp);
}
+void update_mousepos()
+{
+ mousepos += getmousepos() * autocvar_menu_mouse_speed;
+ mousepos.x = bound(0, mousepos.x, vid_conwidth);
+ mousepos.y = bound(0, mousepos.y, vid_conheight);
+}
+
// this draws the triangles of a model DIRECTLY. Don't expect high performance, really...
float PolyDrawModelSurface(entity e, float i_s)
{
}
}
-vector getplayerorigin(int pl)
-{
- entity e;
-
- e = CSQCModel_server2csqc(pl + 1);
- if(e)
- return e.origin;
-
- e = entcs_receiver[pl];
- if(e)
- return e.origin;
-
- return GETPLAYERORIGIN_ERROR;
-}
-
-float getplayeralpha(float pl)
-{
- entity e;
-
- e = CSQCModel_server2csqc(pl + 1);
- if(e)
- return e.alpha;
-
- return 1;
-}
-
-vector getcsqcplayercolor(float pl)
-{
- entity e;
-
- e = CSQCModel_server2csqc(pl);
- if(e)
- {
- if(e.colormap > 0)
- return colormapPaletteColor(((e.colormap >= 1024) ? e.colormap : stof(getplayerkeyvalue(e.colormap - 1, "colors"))) & 0x0F, true);
- }
-
- return '1 1 1';
-}
-
-float getplayerisdead(float pl)
-{
- entity e;
-
- e = CSQCModel_server2csqc(pl + 1);
- if(e)
- return e.csqcmodel_isdead;
-
- return false;
-}
-
-void URI_Get_Callback(int id, float status, string data)
+/** engine callback */
+void URI_Get_Callback(int id, int status, string data)
{
+ TC(int, id); TC(int, status);
if(url_URI_Get_Callback(id, status, data))
{
// handled
}
}
-void draw_beginBoldFont()
-{
- drawfont = FONT_USER+2;
-}
-
-void draw_endBoldFont()
-{
- drawfont = FONT_USER+1;
-}
-
void Accuracy_LoadLevels()
{
if(autocvar_accuracy_color_levels != acc_color_levels)