Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
cl_clanarena.qc
Go to the documentation of this file.
1#include "cl_clanarena.qh"
2
3#include <client/draw.qh>
4
6
7void HUD_Mod_CA_Export(int fh)
8{
9 HUD_Write_Cvar("hud_panel_modicons_ca_layout");
10}
11
12REGISTER_MUTATOR(cl_ca, true);
13
14MUTATOR_HOOKFUNCTION(cl_ca, DrawInfoMessages)
15{
17}
18
19void DrawCAItem(vector myPos, vector mySize, float aspect_ratio, int layout, int i)
20{
21 TC(int, layout); TC(int, i);
22 int stat = -1;
23 string pic = "";
24 vector color = '0 0 0';
25 switch(i)
26 {
27 case 0: stat = STAT(REDALIVE); pic = "player_red"; color = '1 0 0'; break;
28 case 1: stat = STAT(BLUEALIVE); pic = "player_blue"; color = '0 0 1'; break;
29 case 2: stat = STAT(YELLOWALIVE); pic = "player_yellow"; color = '1 1 0'; break;
30 default:
31 case 3: stat = STAT(PINKALIVE); pic = "player_pink"; color = '1 0 1'; break;
32 }
33
34 if(mySize.x/mySize.y > aspect_ratio)
35 {
36 i = aspect_ratio * mySize.y;
37 myPos.x = myPos.x + (mySize.x - i) / 2;
38 mySize.x = i;
39 }
40 else
41 {
42 i = 1/aspect_ratio * mySize.x;
43 myPos.y = myPos.y + (mySize.y - i) / 2;
44 mySize.y = i;
45 }
46
47 if(layout)
48 {
49 drawpic_aspect_skin(myPos, pic, vec2(0.5 * mySize.x, mySize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
50 drawstring_aspect(myPos + eX * 0.5 * mySize.x, ftos(stat), vec2(0.5 * mySize.x, mySize.y), color, panel_fg_alpha, DRAWFLAG_NORMAL);
51 }
52 else
54}
55
56void HUD_Mod_CA_Draw(vector myPos, vector mySize, int layout)
57{
58 int rows, columns;
59 float aspect_ratio;
60 aspect_ratio = (layout) ? 2 : 1;
61 rows = HUD_GetRowCount(team_count, mySize, aspect_ratio);
62 columns = ceil(team_count/rows);
63
64 int i;
65 float row = 0, column = 0;
66 vector pos = '0 0 0', itemSize;
67 itemSize = vec2(mySize.x / columns, mySize.y / rows);
68 for(i=0; i<team_count; ++i)
69 {
70 pos.x = myPos.x + column * itemSize.x;
71 pos.y = myPos.y + row * itemSize.y;
72
73 DrawCAItem(pos, itemSize, aspect_ratio, layout, i);
74
75 ++row;
76 if(row >= rows)
77 {
78 row = 0;
79 ++column;
80 }
81 }
82}
83
84// Clan Arena and Freeze Tag HUD modicons
85void HUD_Mod_CA(vector myPos, vector mySize)
86{
87 mod_active = 1; // required in each mod function that always shows something
88
90}
#define REGISTER_MUTATOR(...)
Definition base.qh:295
#define MUTATOR_HOOKFUNCTION(...)
Definition base.qh:335
void HUD_Mod_CA_Draw(vector myPos, vector mySize, int layout)
void DrawCAItem(vector myPos, vector mySize, float aspect_ratio, int layout, int i)
void HUD_Mod_CA(vector myPos, vector mySize)
void HUD_Mod_CA_Export(int fh)
int autocvar_hud_panel_modicons_ca_layout
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
#define ISGAMETYPE(NAME)
Definition main.qh:46
float team_count
Definition main.qh:59
const float DRAWFLAG_NORMAL
float player_localnum
vector color
Definition dynlight.qc:15
int entcs_GetSpecState(int i)
Definition ent_cs.qh:81
const int ENTCS_SPEC_IN_SCOREBOARD
Definition ent_cs.qh:75
float HUD_GetRowCount(int item_count, vector size, float item_aspect)
Definition hud.qc:165
float panel_fg_alpha
Definition hud.qh:169
#define HUD_Write_Cvar(cvar)
Definition hud_config.qh:40
#define TC(T, sym)
Definition _all.inc:82
#define STAT(...)
Definition stats.qh:82
float ceil(float f)
string ftos(float f)
bool mod_active
Definition modicons.qh:7
vector
Definition self.qh:92
const vector eX
Definition vector.qh:44
#define vec2(...)
Definition vector.qh:90