Skip to content

Commit 6956dbe

Browse files
committed
feat: sar hud text alignment
1 parent 1d5df76 commit 6956dbe

File tree

3 files changed

+11
-18
lines changed

3 files changed

+11
-18
lines changed

src/Features/Hud/Hud.cpp

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Variable sar_hud_x("sar_hud_x", "2", 0, "X padding of HUD.\n", FCVAR_DONTRECORD)
2626
Variable sar_hud_y("sar_hud_y", "2", 0, "Y padding of HUD.\n", FCVAR_DONTRECORD);
2727
Variable sar_hud_font_index("sar_hud_font_index", "0", 0, "Font index of HUD.\n", FCVAR_DONTRECORD);
2828
Variable sar_hud_font_color("sar_hud_font_color", "255 255 255 255", "RGBA font color of HUD.\n", FCVAR_DONTRECORD);
29+
Variable sar_hud_align("sar_hud_align", "0", 0, "Alignment of HUD. (0 = left, 1 = center, 2 = right).\n", FCVAR_DONTRECORD);
2930

3031
Variable sar_hud_precision("sar_hud_precision", "2", 0, "Precision of HUD numbers.\n");
3132
Variable sar_hud_velocity_precision("sar_hud_velocity_precision", "2", 0, "Precision of velocity HUD numbers.\n");
@@ -204,26 +205,15 @@ void HudContext::DrawElement(const char *fmt, ...) {
204205
if (colon) strcpy(data, colon + 2);
205206
}
206207

207-
surface->DrawTxt(font, this->xPadding, this->yPadding + this->elements * (this->fontSize + this->spacing), this->textColor, data);
208-
209-
++this->elements;
210-
208+
int align = sar_hud_align.GetInt();
211209
int width = surface->GetFontLength(this->font, "%s", data);
212-
if (width > this->maxWidth) this->maxWidth = width;
213-
}
214-
void HudContext::DrawElementOnScreen(const int groupID, const float xPos, const float yPos, const char *fmt, ...) {
215-
va_list argptr;
216-
va_start(argptr, fmt);
217-
char data[128];
218-
vsnprintf(data, sizeof(data), fmt, argptr);
219-
va_end(argptr);
210+
int offset = !align ? 0 : align == 1 ? width / 2 : width;
220211

221-
int pixLength = surface->GetFontLength(this->font, "%s", data);
222-
223-
surface->DrawTxt(font, xPos - pixLength / 2, yPos + this->group[groupID] * (this->fontSize + this->spacing), this->textColor, data);
212+
surface->DrawTxt(font, this->xPadding - offset, this->yPadding + this->elements * (this->fontSize + this->spacing), this->textColor, data);
224213

214+
++this->elements;
225215

226-
++this->group[groupID];
216+
if (width > this->maxWidth) this->maxWidth = width;
227217
}
228218

229219
void HudContext::Reset(int slot) {

src/Features/Hud/Hud.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ class HudContext {
5757

5858
public:
5959
void DrawElement(const char *fmt, ...);
60-
void DrawElementOnScreen(const int nbElement, const float xPos, const float yPos, const char *fmt, ...);
6160
void Reset(int slot);
6261
};
6362

@@ -170,6 +169,7 @@ extern Variable sar_hud_font_index;
170169
extern Variable sar_hud_font_color;
171170
extern Variable sar_hud_precision;
172171
extern Variable sar_hud_shorthand;
172+
extern Variable sar_hud_align;
173173
extern QAngle g_bluePortalAngles[2];
174174
extern QAngle g_orangePortalAngles[2];
175175
extern bool g_hudPrecisionWarn;

src/Modules/VGui.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ static void DrawHudBackground(int slot, HudContext &ctx) {
4949

5050
if (width != 0) width += 4;
5151

52-
int x = ctx.xPadding - 2;
52+
int align = sar_hud_align.GetInt();
53+
int offset = !align ? 2 : align == 1 ? width / 2 : width - 3;
54+
55+
int x = ctx.xPadding - offset;
5356
int y = ctx.yPadding - 2;
5457

5558
surface->DrawRect(Color{0, 0, 0, 192}, x, y, x + width, y + height);

0 commit comments

Comments
 (0)