Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
pressedkeys.qc
Go to the documentation of this file.
1
#include "
pressedkeys.qh
"
2
3
#include <
client/draw.qh
>
4
5
// Pressed keys (#11)
6
7
void
HUD_PressedKeys_Export
(
int
fh)
8
{
9
// allow saving cvars that aesthetically change the panel into hud skin files
10
HUD_Write_Cvar
(
"hud_panel_pressedkeys_aspect"
);
11
HUD_Write_Cvar
(
"hud_panel_pressedkeys_attack"
);
12
}
13
14
void
HUD_PressedKeys
(
bool
should_draw)
15
{
16
if
(!should_draw)
17
return
;
18
if
(!
autocvar__hud_configure
)
19
{
20
if
(!
autocvar_hud_panel_pressedkeys
||
spectatee_status
< 0)
21
return
;
22
if
(
spectatee_status
<= 0 &&
autocvar_hud_panel_pressedkeys
< 2)
23
return
;
24
}
25
26
HUD_Panel_LoadCvars
();
27
vector
pos =
panel_pos
;
28
vector
mySize =
panel_size
;
29
30
if
(
autocvar_hud_panel_pressedkeys_dynamichud
)
31
HUD_Scale_Enable
();
32
else
33
HUD_Scale_Disable
();
34
HUD_Panel_DrawBg
();
35
if
(
panel_bg_padding
)
36
{
37
pos +=
'1 1 0'
*
panel_bg_padding
;
38
mySize -=
'2 2 0'
*
panel_bg_padding
;
39
}
40
41
// force custom aspect
42
float
aspect =
autocvar_hud_panel_pressedkeys_aspect
;
43
if
(aspect)
44
{
45
vector
newSize =
'0 0 0'
;
46
if
(mySize.x / mySize.y > aspect)
47
{
48
newSize.x = aspect * mySize.y;
49
newSize.y = mySize.y;
50
51
pos.x += (mySize.x - newSize.x) * 0.5;
52
}
53
else
54
{
55
newSize.y = 1 / aspect * mySize.x;
56
newSize.x = mySize.x;
57
58
pos.y += (mySize.y - newSize.y) * 0.5;
59
}
60
mySize = newSize;
61
}
62
63
vector
keysize =
vec2
(mySize.x / (14/4), mySize.y / (3 - !
autocvar_hud_panel_pressedkeys_attack
));
64
int
pressedkeys
=
STAT
(PRESSED_KEYS);
65
66
if
(
autocvar_hud_panel_pressedkeys_attack
)
67
{
68
drawpic_aspect_skin
(pos +
eX
* (3/4 * keysize.x), ((
pressedkeys
&
KEY_ATCK
) ?
"key_atck_inv"
:
"key_atck"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
69
drawpic_aspect_skin
(pos +
eX
* (7/4 * keysize.x), ((
pressedkeys
&
KEY_ATCK2
) ?
"key_atck2_inv"
:
"key_atck2"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
70
pos.y += keysize.y;
71
}
72
73
drawpic_aspect_skin
(pos, ((
pressedkeys
&
KEY_CROUCH
) ?
"key_crouch_inv"
:
"key_crouch"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
74
drawpic_aspect_skin
(pos +
eX
* (5/4 * keysize.x), ((
pressedkeys
&
KEY_FORWARD
) ?
"key_forward_inv"
:
"key_forward"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
75
drawpic_aspect_skin
(pos +
eX
* (10/4 * keysize.x), ((
pressedkeys
&
KEY_JUMP
) ?
"key_jump_inv"
:
"key_jump"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
76
pos.y += keysize.y;
77
drawpic_aspect_skin
(pos +
eX
* (1/4 * keysize.x), ((
pressedkeys
&
KEY_LEFT
) ?
"key_left_inv"
:
"key_left"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
78
drawpic_aspect_skin
(pos +
eX
* (5/4 * keysize.x), ((
pressedkeys
&
KEY_BACKWARD
) ?
"key_backward_inv"
:
"key_backward"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
79
drawpic_aspect_skin
(pos +
eX
* (9/4 * keysize.x), ((
pressedkeys
&
KEY_RIGHT
) ?
"key_right_inv"
:
"key_right"
), keysize,
'1 1 1'
,
panel_fg_alpha
,
DRAWFLAG_NORMAL
);
80
}
draw.qh
drawpic_aspect_skin
#define drawpic_aspect_skin(pos, pic, sz, color, theAlpha, drawflag)
Definition
draw.qh:78
spectatee_status
int spectatee_status
the -1 disables HUD panels before CSQC receives necessary data
Definition
main.qh:197
KEY_JUMP
const int KEY_JUMP
Definition
constants.qh:39
KEY_ATCK2
const int KEY_ATCK2
Definition
constants.qh:42
KEY_RIGHT
const int KEY_RIGHT
Definition
constants.qh:38
KEY_BACKWARD
const int KEY_BACKWARD
Definition
constants.qh:36
KEY_FORWARD
const int KEY_FORWARD
Definition
constants.qh:35
KEY_LEFT
const int KEY_LEFT
Definition
constants.qh:37
KEY_CROUCH
const int KEY_CROUCH
Definition
constants.qh:40
KEY_ATCK
const int KEY_ATCK
Definition
constants.qh:41
DRAWFLAG_NORMAL
const float DRAWFLAG_NORMAL
Definition
csprogsdefs.qc:321
HUD_Panel_LoadCvars
void HUD_Panel_LoadCvars()
Definition
hud.qc:215
HUD_Scale_Enable
void HUD_Scale_Enable()
Definition
hud.qc:91
HUD_Scale_Disable
void HUD_Scale_Disable()
Definition
hud.qc:84
panel_size
vector panel_size
Definition
hud.qh:163
panel_fg_alpha
float panel_fg_alpha
Definition
hud.qh:169
panel_bg_padding
float panel_bg_padding
Definition
hud.qh:174
HUD_Panel_DrawBg
#define HUD_Panel_DrawBg()
Definition
hud.qh:55
panel_pos
vector panel_pos
Definition
hud.qh:162
HUD_Write_Cvar
#define HUD_Write_Cvar(cvar)
Definition
hud_config.qh:40
autocvar__hud_configure
bool autocvar__hud_configure
Definition
hud_config.qh:3
STAT
#define STAT(...)
Definition
stats.qh:82
HUD_PressedKeys_Export
void HUD_PressedKeys_Export(int fh)
Definition
pressedkeys.qc:7
HUD_PressedKeys
void HUD_PressedKeys(bool should_draw)
Definition
pressedkeys.qc:14
pressedkeys.qh
autocvar_hud_panel_pressedkeys_attack
bool autocvar_hud_panel_pressedkeys_attack
Definition
pressedkeys.qh:6
autocvar_hud_panel_pressedkeys_dynamichud
bool autocvar_hud_panel_pressedkeys_dynamichud
Definition
pressedkeys.qh:7
autocvar_hud_panel_pressedkeys
int autocvar_hud_panel_pressedkeys
Definition
pressedkeys.qh:4
autocvar_hud_panel_pressedkeys_aspect
float autocvar_hud_panel_pressedkeys_aspect
Definition
pressedkeys.qh:5
vector
vector
Definition
self.qh:92
pressedkeys
int pressedkeys
Definition
sv_dodging.qc:113
eX
const vector eX
Definition
vector.qh:44
vec2
#define vec2(...)
Definition
vector.qh:90
client
hud
panel
pressedkeys.qc
Generated on
for Xonotic QuakeC by
1.14.0