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