Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
cl_lms.qc File Reference
#include "cl_lms.qh"
#include <common/mutators/base.qh>
Include dependency graph for cl_lms.qc:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void HUD_Mod_LMS (vector myPos, vector mySize)
void HUD_Mod_LMS_Draw (vector myPos, vector mySize)
 MUTATOR_HOOKFUNCTION (cl_lms, DrawInfoMessages)
 REGISTER_MUTATOR (cl_lms, true)

Function Documentation

◆ HUD_Mod_LMS()

void HUD_Mod_LMS ( vector myPos,
vector mySize )

Definition at line 66 of file cl_lms.qc.

67{
68 mod_active = 1;
69
70 HUD_Mod_LMS_Draw(myPos, mySize);
71}
void HUD_Mod_LMS_Draw(vector myPos, vector mySize)
Definition cl_lms.qc:27
bool mod_active
Definition modicons.qh:7

References HUD_Mod_LMS_Draw(), mod_active, and vector.

Referenced by LastManStanding::void().

◆ HUD_Mod_LMS_Draw()

void HUD_Mod_LMS_Draw ( vector myPos,
vector mySize )

Definition at line 27 of file cl_lms.qc.

28{
29 int leaders_count = STAT(REDALIVE); // recycled stat
30 if(!leaders_count)
31 {
32 mod_active = 0;
33 return;
34 }
35
36 int rows, columns;
37 float aspect_ratio = 2;
38 rows = HUD_GetRowCount(2, mySize, aspect_ratio);
39 columns = ceil(2 / rows);
40
41 vector pos = myPos;
42 vector itemSize = vec2(mySize.x / columns, mySize.y / rows);
43
44 bool visible_leaders = STAT(OBJECTIVE_STATUS);
45
46 if (visible_leaders)
47 drawpic_aspect_skin(pos, "flag_stalemate", vec2(0.5 * itemSize.x, itemSize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
48 drawpic_aspect_skin(pos, "player_neutral", vec2(0.5 * itemSize.x, itemSize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
49 drawstring_aspect(pos + eX * 0.5 * itemSize.x, ftos(leaders_count), vec2(0.5 * itemSize.x, itemSize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
50
51 if (rows > 1)
52 pos.y = myPos.y + itemSize.y;
53 else
54 pos.x = myPos.x + itemSize.x;
55
56 int lives_diff = STAT(BLUEALIVE); // recycled stat
57 vector color = '1 1 0';
58 if (lives_diff >= 4)
59 color = '1 0 0';
60 else if (lives_diff == 3)
61 color = '1 0.5 0';
62 float scale = 0.75;
63 drawstring_aspect(pos + itemSize * (1 - scale) * 0.5, strcat("+", ftos(lives_diff)), itemSize * scale, color, panel_fg_alpha, DRAWFLAG_NORMAL);
64}
void drawstring_aspect(vector pos, string text, vector sz, vector color, float theAlpha, float drawflag)
Definition draw.qc:110
#define drawpic_aspect_skin(pos, pic, sz, color, theAlpha, drawflag)
Definition draw.qh:78
const float DRAWFLAG_NORMAL
vector color
Definition dynlight.qc:15
float HUD_GetRowCount(int item_count, vector size, float item_aspect)
Definition hud.qc:165
float panel_fg_alpha
Definition hud.qh:169
#define STAT(...)
Definition stats.qh:82
float ceil(float f)
string ftos(float f)
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
float scale
Definition projectile.qc:14
vector
Definition self.qh:92
const vector eX
Definition vector.qh:44
#define vec2(...)
Definition vector.qh:90

References ceil(), color, DRAWFLAG_NORMAL, drawpic_aspect_skin, drawstring_aspect(), eX, ftos(), HUD_GetRowCount(), mod_active, panel_fg_alpha, scale, STAT, strcat(), vec2, and vector.

Referenced by HUD_Mod_LMS().

◆ MUTATOR_HOOKFUNCTION()

MUTATOR_HOOKFUNCTION ( cl_lms ,
DrawInfoMessages  )

Definition at line 7 of file cl_lms.qc.

8{
9 if(!warmup_stage && ISGAMETYPE(LMS))
10 {
12 vector pos = M_ARGV(0, vector);
13 vector mySize = M_ARGV(1, vector);
14 vector fontsize = '0.2 0.2 0' * mySize.y;
15 int img_curr_group = M_ARGV(2, int);
16 if(sk.(scores(ps_primary)) > 0)
17 {
18 InfoMessage(_("^1You have no more lives left"));
19 M_ARGV(0, vector) = pos;
20 M_ARGV(2, int) = img_curr_group;
21 return true;
22 }
23 }
24 return false;
25}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
entity playerslots[255]
Definition main.qh:84
#define ISGAMETYPE(NAME)
Definition main.qh:46
bool warmup_stage
Definition main.qh:120
#define M_ARGV(x, type)
Definition events.qh:17
float player_localnum
PlayerScoreField ps_primary
Definition hud.qh:117
#define InfoMessage(s)

References entity(), InfoMessage, ISGAMETYPE, M_ARGV, player_localnum, playerslots, ps_primary, vector, and warmup_stage.

◆ REGISTER_MUTATOR()

REGISTER_MUTATOR ( cl_lms ,
true  )