3 #include <client/draw.qh>
7 void HUD_Vote_Export(int fh)
9 // allow saving cvars that aesthetically change the panel into hud skin files
10 HUD_Write_Cvar("hud_panel_vote_alreadyvoted_alpha");
15 if(autocvar_cl_allow_uid2name == -1 && (MUTATOR_CALLHOOK(ShowRankings) || (serverflags & SERVERFLAG_PLAYERSTATS)))
17 // this dialog gets overriden by the uid2name menu dialog, if it exists
18 // TODO remove this client side uid2name dialog in the next release
19 if(!autocvar__menu_alpha)
23 localcmd("menu_cmd directmenu Uid2Name\n");
26 if (autocvar__hud_configure)
30 LOG_INFO(_("^1You must answer before entering hud configure mode"));
31 cvar_set("_hud_configure", "0");
33 strcpy(vote_called_vote, _("^2Name ^7instead of \"^1Anonymous player^7\" in stats"));
37 if(!autocvar__hud_configure)
39 if(!autocvar_hud_panel_vote) return;
41 if(cvar("hud_panel_vote_test")) {
42 if(vote_called_vote) strunzone(vote_called_vote); vote_called_vote = strzone("^1test the vote panel");
43 vote_active = true; vote_yescount = 3; vote_nocount = 2; vote_needed = 4;
44 } else vote_active = false;
56 if(vote_active != vote_prev) {
58 vote_prev = vote_active;
61 if(vote_active || autocvar__hud_configure)
62 vote_alpha = bound(0, (time - vote_change) * 2, 1);
64 vote_alpha = bound(0, 1 - (time - vote_change) * 2, 1);
66 a = vote_alpha * (vote_highlighted ? autocvar_hud_panel_vote_alreadyvoted_alpha : 1);
69 //panel_fade_alpha *= a;
70 // nothing can hide this panel, not even the menu
71 float hud_fade_alpha_save = hud_fade_alpha;
72 if(uid2name_dialog && autocvar__menu_alpha)
76 HUD_Panel_LoadCvars();
77 hud_fade_alpha = hud_fade_alpha_save;
81 panel_pos = vec2(0.3 * vid_conwidth, 0.1 * vid_conheight);
82 panel_size = vec2(0.4 * vid_conwidth, 0.3 * vid_conheight);
89 if (autocvar_hud_panel_vote_dynamichud)
97 pos += '1 1 0' * panel_bg_padding;
98 mySize -= '2 2 0' * panel_bg_padding;
101 // always force 3:1 aspect
102 vector newSize = '0 0 0';
103 if(mySize.x/mySize.y > 3)
105 newSize.x = 3 * mySize.y;
106 newSize.y = mySize.y;
108 pos.x = pos.x + (mySize.x - newSize.x) / 2;
112 newSize.y = 1/3 * mySize.x;
113 newSize.x = mySize.x;
115 pos.y = pos.y + (mySize.y - newSize.y) / 2;
119 s = _("A vote has been called for:");
121 s = _("Allow servers to store and display your name?");
122 drawstring_aspect(pos, s, vec2(mySize.x, (2/8) * mySize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
123 s = textShortenToWidth(ColorTranslateRGB(vote_called_vote), mySize.x, '1 1 0' * mySize.y * (1/8), stringwidth_colors);
124 if(autocvar__hud_configure)
125 s = _("^1Configure the HUD");
126 drawcolorcodedstring_aspect(pos + eY * (2/8) * mySize.y, s, vec2(mySize.x, (1.75/8) * mySize.y), panel_fg_alpha, DRAWFLAG_NORMAL);
128 // print the yes/no counts
129 s = sprintf("^2%s ^7(%d)", getcommandkey_forcename(_("Yes"), "vyes"), vote_yescount);
130 drawcolorcodedstring_aspect(pos + eY * (4/8) * mySize.y, s, vec2(0.5 * mySize.x, (1.5/8) * mySize.y), panel_fg_alpha, DRAWFLAG_NORMAL);
131 s = sprintf("^1%s ^7(%d)", getcommandkey_forcename(_("No"), "vno"), vote_nocount);
132 drawcolorcodedstring_aspect(pos + vec2(0.5 * mySize.x, (4/8) * mySize.y), s, vec2(0.5 * mySize.x, (1.5/8) * mySize.y), panel_fg_alpha, DRAWFLAG_NORMAL);
134 pos.y += (5/8) * mySize.y;
135 vector tmp_size = vec2(mySize.x, (3/8) * mySize.y);
136 // draw the progress bar backgrounds
137 drawpic_skin(pos, "voteprogress_back", tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
139 // draw the highlights
140 if(vote_highlighted == 1) {
141 drawsetcliparea(pos.x, pos.y, mySize.x * 0.5, mySize.y);
142 drawpic_skin(pos, "voteprogress_voted", tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
144 else if(vote_highlighted == -1) {
145 drawsetcliparea(pos.x + 0.5 * mySize.x, pos.y, mySize.x * 0.5, mySize.y);
146 drawpic_skin(pos, "voteprogress_voted", tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
149 // draw the progress bars
150 if(vote_yescount && vote_needed)
152 drawsetcliparea(pos.x, pos.y, mySize.x * 0.5 * (vote_yescount/vote_needed), mySize.y);
153 drawpic_skin(pos, "voteprogress_prog", tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
156 if(vote_nocount && vote_needed)
158 drawsetcliparea(pos.x + mySize.x - mySize.x * 0.5 * (vote_nocount/vote_needed), pos.y, mySize.x * 0.5, mySize.y);
159 drawpic_skin(pos, "voteprogress_prog", tmp_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);