1 #include "cl_keyhunt.qh"
3 #include <client/hud/panel/modicons.qh>
5 // Keyhunt HUD modicon section
8 void HUD_Mod_KH(vector pos, vector mySize)
10 mod_active = 1; // keyhunt should never hide the mod icons panel
13 int state = STAT(KH_KEYS);
17 int all_keys, team1_keys, team2_keys, team3_keys, team4_keys, dropped_keys, carrying_keys;
18 all_keys = team1_keys = team2_keys = team3_keys = team4_keys = dropped_keys = carrying_keys = 0;
20 for(i = 0; i < 4; ++i)
22 key_state = (bitshift(state, i * -5) & 31) - 1;
35 case NUM_TEAM_1: ++team1_keys; break;
36 case NUM_TEAM_2: ++team2_keys; break;
37 case NUM_TEAM_3: ++team3_keys; break;
38 case NUM_TEAM_4: ++team4_keys; break;
39 case 29: ++dropped_keys; break;
45 // Calculate slot measurements
47 if(all_keys == 4 && mySize.x * 0.5 < mySize.y && mySize.y * 0.5 < mySize.x)
49 // Quadratic arrangement
50 slot_size = vec2(mySize.x * 0.5, mySize.y * 0.5);
52 KH_SLOTS[1] = pos + eX * slot_size.x;
53 KH_SLOTS[2] = pos + eY * slot_size.y;
54 KH_SLOTS[3] = pos + eX * slot_size.x + eY * slot_size.y;
58 if(mySize.x > mySize.y)
60 // Horizontal arrangement
61 slot_size = vec2(mySize.x / all_keys, mySize.y);
62 for(i = 0; i < all_keys; ++i)
63 KH_SLOTS[i] = pos + eX * slot_size.x * i;
67 // Vertical arrangement
68 slot_size = vec2(mySize.x, mySize.y / all_keys);
69 for(i = 0; i < all_keys; ++i)
70 KH_SLOTS[i] = pos + eY * slot_size.y * i;
74 // Make icons blink in case of RUN HERE
79 float blink = 0.6 + sin(2 * M_PI * time) * 0.4; // Oscillate between 0.2 and 1
82 case NUM_TEAM_1: if(team1_keys == all_keys) alpha = blink; break;
83 case NUM_TEAM_2: if(team2_keys == all_keys) alpha = blink; break;
84 case NUM_TEAM_3: if(team3_keys == all_keys) alpha = blink; break;
85 case NUM_TEAM_4: if(team4_keys == all_keys) alpha = blink; break;
94 if(myteam == NUM_TEAM_1 && carrying_keys)
96 drawpic_aspect_skin(KH_SLOTS[i++], "kh_red_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
100 drawpic_aspect_skin(KH_SLOTS[i++], "kh_red_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
103 if(myteam == NUM_TEAM_2 && carrying_keys)
105 drawpic_aspect_skin(KH_SLOTS[i++], "kh_blue_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
109 drawpic_aspect_skin(KH_SLOTS[i++], "kh_blue_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
112 if(myteam == NUM_TEAM_3 && carrying_keys)
114 drawpic_aspect_skin(KH_SLOTS[i++], "kh_yellow_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
118 drawpic_aspect_skin(KH_SLOTS[i++], "kh_yellow_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
121 if(myteam == NUM_TEAM_4 && carrying_keys)
123 drawpic_aspect_skin(KH_SLOTS[i++], "kh_pink_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
127 drawpic_aspect_skin(KH_SLOTS[i++], "kh_pink_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
129 while(dropped_keys--)
130 drawpic_aspect_skin(KH_SLOTS[i++], "kh_dropped", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);