]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/client/hud/panel/pressedkeys.qc
Display more panels (engineinfo, modicons and timer) while showing the scoreboard
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / panel / pressedkeys.qc
1 #include "pressedkeys.qh"
2 /** Draw pressed keys (#11) */
3 void HUD_PressedKeys()
4 {
5         if(!autocvar__hud_configure)
6         {
7                 if(!autocvar_hud_panel_pressedkeys) return;
8                 if(spectatee_status <= 0 && autocvar_hud_panel_pressedkeys < 2) return;
9         }
10
11         if(1 - scoreboard_fade_alpha <= 0)
12                 return;
13         HUD_Panel_UpdateCvars(1 - scoreboard_fade_alpha);
14         vector pos, mySize;
15         pos = panel_pos;
16         mySize = panel_size;
17
18         if (autocvar_hud_panel_pressedkeys_dynamichud)
19                 HUD_Scale_Enable();
20         else
21                 HUD_Scale_Disable();
22         HUD_Panel_DrawBg();
23         if(panel_bg_padding)
24         {
25                 pos += '1 1 0' * panel_bg_padding;
26                 mySize -= '2 2 0' * panel_bg_padding;
27         }
28
29         // force custom aspect
30         float aspect = autocvar_hud_panel_pressedkeys_aspect;
31         if(aspect)
32         {
33                 vector newSize = '0 0 0';
34                 if(mySize.x/mySize.y > aspect)
35                 {
36                         newSize.x = aspect * mySize.y;
37                         newSize.y = mySize.y;
38
39                         pos.x = pos.x + (mySize.x - newSize.x) / 2;
40                 }
41                 else
42                 {
43                         newSize.y = 1/aspect * mySize.x;
44                         newSize.x = mySize.x;
45
46                         pos.y = pos.y + (mySize.y - newSize.y) / 2;
47                 }
48                 mySize = newSize;
49         }
50
51         vector keysize;
52         keysize = eX * mySize.x * (1/3.0) + eY * mySize.y * (1/(3.0 - !autocvar_hud_panel_pressedkeys_attack));
53         int pressedkeys = STAT(PRESSED_KEYS);
54
55         if(autocvar_hud_panel_pressedkeys_attack)
56         {
57                 drawpic_aspect_skin(pos + eX * keysize.x * 0.5, ((pressedkeys & KEY_ATCK) ? "key_atck_inv.tga" : "key_atck.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
58                 drawpic_aspect_skin(pos + eX * keysize.x * 1.5, ((pressedkeys & KEY_ATCK2) ? "key_atck_inv.tga" : "key_atck.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
59                 pos.y += keysize.y;
60         }
61
62         drawpic_aspect_skin(pos, ((pressedkeys & KEY_CROUCH) ? "key_crouch_inv.tga" : "key_crouch.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
63         drawpic_aspect_skin(pos + eX * keysize.x, ((pressedkeys & KEY_FORWARD) ? "key_forward_inv.tga" : "key_forward.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
64         drawpic_aspect_skin(pos + eX * keysize.x * 2, ((pressedkeys & KEY_JUMP) ? "key_jump_inv.tga" : "key_jump.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
65         pos.y += keysize.y;
66         drawpic_aspect_skin(pos, ((pressedkeys & KEY_LEFT) ? "key_left_inv.tga" : "key_left.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
67         drawpic_aspect_skin(pos + eX * keysize.x, ((pressedkeys & KEY_BACKWARD) ? "key_backward_inv.tga" : "key_backward.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
68         drawpic_aspect_skin(pos + eX * keysize.x * 2, ((pressedkeys & KEY_RIGHT) ? "key_right_inv.tga" : "key_right.tga"), keysize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
69 }