1 #include "infomessages.qh"
3 #include <common/ent_cs.qh>
4 #include <common/mapinfo.qh>
6 // Info messages panel (#14)
8 #define drawInfoMessage(s) MACRO_BEGIN { \
9 if(autocvar_hud_panel_infomessages_flip) \
10 o.x = pos.x + mySize.x - stringwidth(s, true, fontsize); \
11 drawcolorcodedstring(o, s, fontsize, a, DRAWFLAG_NORMAL); \
14 void HUD_InfoMessages()
16 if(!autocvar__hud_configure)
18 if(!autocvar_hud_panel_infomessages) return;
21 HUD_Panel_UpdateCvars();
26 if (autocvar_hud_panel_infomessages_dynamichud)
33 pos += '1 1 0' * panel_bg_padding;
34 mySize -= '2 2 0' * panel_bg_padding;
37 // always force 5:1 aspect
38 vector newSize = '0 0 0';
39 if(mySize.x/mySize.y > 5)
41 newSize.x = 5 * mySize.y;
44 pos.x = pos.x + (mySize.x - newSize.x) / 2;
48 newSize.y = 1/5 * mySize.x;
51 pos.y = pos.y + (mySize.y - newSize.y) / 2;
60 fontsize = '0.20 0.20 0' * mySize.y;
66 if(!autocvar__hud_configure)
71 if(spectatee_status == -1)
74 s = sprintf(_("^1Spectating: ^7%s"), entcs_GetName(current_player));
77 if(spectatee_status == -1)
78 s = sprintf(_("^1Press ^3%s^1 to spectate"), getcommandkey("primary fire", "+fire"));
80 s = sprintf(_("^1Press ^3%s^1 or ^3%s^1 for next or previous player"), getcommandkey("next weapon", "weapnext"), getcommandkey("previous weapon", "weapprev"));
83 if(spectatee_status == -1)
84 s = sprintf(_("^1Use ^3%s^1 or ^3%s^1 to change the speed"), getcommandkey("next weapon", "weapnext"), getcommandkey("previous weapon", "weapprev"));
86 s = sprintf(_("^1Press ^3%s^1 to observe"), getcommandkey("secondary fire", "+fire2"));
89 s = sprintf(_("^1Press ^3%s^1 for gamemode info"), getcommandkey("server info", "+show_info"));
92 if(gametype == MAPINFO_TYPE_LMS)
95 sk = playerslots[player_localnum];
96 if(sk.(scores[ps_primary]) >= 666)
97 s = _("^1Match has already begun");
98 else if(sk.(scores[ps_primary]) > 0)
99 s = _("^1You have no more lives left");
101 s = sprintf(_("^1Press ^3%s^1 to join"), getcommandkey("jump", "+jump"));
104 s = sprintf(_("^1Press ^3%s^1 to join"), getcommandkey("jump", "+jump"));
108 if (time < STAT(GAMESTARTTIME))
110 //we need to ceil, otherwise the countdown would be off by .5 when using round()
111 float countdown = ceil(STAT(GAMESTARTTIME) - time);
112 s = sprintf(_("^1Game starts in ^3%d^1 seconds"), countdown);
118 s = _("^2Currently in ^1warmup^2 stage!");
122 if(autocvar_cl_showspectators)
124 //if(spectatee_status != -1)
126 s = ((spectatee_status) ? _("^1Spectating this player:") : _("^1Spectating you:"));
128 int limit = min(num_spectators, MAX_SPECTATORS);
129 for(int i = 0; i < limit; ++i)
131 float slot = spectatorlist[i];
133 s = strcat(s, " ^3", entcs_GetName(slot));
135 s = strcat("^3", entcs_GetName(slot));
146 if(ready_waiting && !spectatee_status)
148 if(ready_waiting_for_me)
151 s = sprintf(_("%sPress ^3%s%s to end warmup"), blinkcolor, getcommandkey("ready", "ready"), blinkcolor);
153 s = sprintf(_("%sPress ^3%s%s once you are ready"), blinkcolor, getcommandkey("ready", "ready"), blinkcolor);
158 s = _("^2Waiting for others to ready up to end warmup...");
160 s = _("^2Waiting for others to ready up...");
164 else if(warmup_stage && !spectatee_status)
166 s = sprintf(_("^2Press ^3%s^2 to end warmup"), getcommandkey("ready", "ready"));
170 if(teamplay && !spectatee_status && gametype != MAPINFO_TYPE_CA && teamnagger)
172 float ts_min = 0, ts_max = 0;
173 tm = teams.sort_next;
176 for (; tm.sort_next; tm = tm.sort_next)
178 if(!tm.team_size || tm.team == NUM_SPECTATOR)
180 if(!ts_min) ts_min = tm.team_size;
181 else ts_min = min(ts_min, tm.team_size);
182 if(!ts_max) ts_max = tm.team_size;
183 else ts_max = max(ts_max, tm.team_size);
185 if ((ts_max - ts_min) > 1)
187 s = strcat(blinkcolor, _("Teamnumbers are unbalanced!"));
188 tm = GetTeam(myteam, false);
190 if (tm.team != NUM_SPECTATOR)
191 if (tm.team_size == ts_max)
192 s = strcat(s, sprintf(_(" Press ^3%s%s to adjust"), getcommandkey("team menu", "menu_showteamselect"), blinkcolor));
200 s = _("^7Press ^3ESC ^7to show HUD options.");
202 s = _("^3Doubleclick ^7a panel for panel-specific options.");
204 s = _("^3CTRL ^7to disable collision testing, ^3SHIFT ^7and");
206 s = _("^3ALT ^7+ ^3ARROW KEYS ^7for fine adjustments.");