float mv_detail;
float mv_timeout;
float mv_maps_mask;
+float mv_top2_time;
+float mv_top2_alpha;
vector mv_mousepos;
float mv_selection;
string MapVote_FormatMapItem(float id, string map, float count, float maxwidth, vector fontsize)
{
string pre, post;
- pre = strcat(ftos(id+1), ". ");
+ pre = sprintf("%d. ", id+1);
if(mv_detail)
{
if(count == 1)
- post = strcat(" (1 vote)");
- else
- post = strcat(" (", ftos(count), " votes)");
+ post = _(" (1 vote)");
+ else if(count >= 0)
+ post = sprintf(_(" (%d votes)"), count);
}
else
post = "";
return strcat(pre, map, post);
}
-vector MapVote_RGB(float id)
+vector MapVote_RGB(float id, float count)
{
+ if(count < 0)
+ return '1 1 1';
if(id == mv_ownvote)
return '0 1 0';
else if (id == mv_selection)
isize -= hud_fontsize_y; // respect the text when calculating the image size
- rgb = MapVote_RGB(id);
+ rgb = MapVote_RGB(id, count);
img_size_y = isize;
img_size_x = isize / 0.75; // 4:3 x can be stretched easily, height is defined in isize
- drawfont = hud_font;
pos_y = pos_y + img_size_y;
label = MapVote_FormatMapItem(id, map, count, tsize, hud_fontsize);
text_size = stringwidth(label, false, hud_fontsize);
-
+
+ float alpha;
+ if (count < 0 && mv_top2_alpha)
+ alpha = mv_top2_alpha;
+ else
+ alpha = 1;
+
pos_x -= text_size*0.5;
- drawstring(pos, label, hud_fontsize, rgb, 1, DRAWFLAG_NORMAL);
+ drawstring(pos, label, hud_fontsize, rgb, alpha, DRAWFLAG_NORMAL);
pos_x = pos_x + text_size*0.5 - img_size_x*0.5;
pos_y = pos_y - img_size_y;
- pos += hud_border_thickness * '1 1 0';
- img_size -= (hud_border_thickness * 2) * '1 1 0';
+ pos += autocvar_scoreboard_border_thickness * '1 1 0';
+ img_size -= (autocvar_scoreboard_border_thickness * 2) * '1 1 0';
if(pic == "")
{
- drawfill(pos, img_size, '.5 .5 .5', .7, DRAWFLAG_NORMAL);
+ drawfill(pos, img_size, '.5 .5 .5', .7 * alpha, DRAWFLAG_NORMAL);
}
else
{
- drawpic(pos, pic, img_size, '1 1 1', 1, DRAWFLAG_NORMAL);
+ if(precache_pic(pic) == "")
+ drawpic(pos, draw_UseSkinFor("nopreview_player"), img_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+ else
+ drawpic(pos, pic, img_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
}
if(id == mv_ownvote)
- drawborderlines(hud_border_thickness, pos, img_size, rgb, 1, DRAWFLAG_NORMAL);
+ drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, rgb, alpha, DRAWFLAG_NORMAL);
else
- drawborderlines(hud_border_thickness, pos, img_size, '0 0 0', 1, DRAWFLAG_NORMAL);
+ drawborderlines(autocvar_scoreboard_border_thickness, pos, img_size, '0 0 0', alpha, DRAWFLAG_NORMAL);
- if(id == mv_selection)
- drawfill(pos, img_size, rgb, 0.1, DRAWFLAG_NORMAL);
+ if(id == mv_selection && count >= 0)
+ drawfill(pos, img_size, '1 1 1', 0.1, DRAWFLAG_NORMAL);
}
void MapVote_DrawAbstain(vector pos, float isize, float tsize, float count, float id)
float text_size;
string label;
- rgb = MapVote_RGB(id);
+ rgb = MapVote_RGB(id, count);
- drawfont = hud_font;
pos_y = pos_y + hud_fontsize_y;
- label = MapVote_FormatMapItem(id, "Don't care", count, tsize, hud_fontsize);
+ label = MapVote_FormatMapItem(id, _("Don't care"), count, tsize, hud_fontsize);
text_size = stringwidth(label, false, hud_fontsize);
if(!mv_active)
return;
-
+
mv_mousepos = mv_mousepos + getmousepos();
mv_mousepos_x = bound(0, mv_mousepos_x, vid_conwidth);
xmin = vid_conwidth*0.05; // 5% border must suffice
xmax = vid_conwidth - xmin;
ymin = 20;
- i = cvar("con_chatpos"); //*cvar("con_chatsize");
+ i = autocvar_con_chatpos; //*autocvar_con_chatsize;
if(i < 0)
- ymax = vid_conheight + (i - cvar("con_chat")) * cvar("con_chatsize");
+ ymax = vid_conheight + (i - autocvar_con_chat) * autocvar_con_chatsize;
if(i >= 0 || ymax < (vid_conheight*0.5))
ymax = vid_conheight - ymin;
- drawfont = hud_bigfont;
hud_fontsize = HUD_GetFontsize("hud_fontsize");
pos_y = ymin;
pos_z = 0;
- //pos_x = center - stringwidth("Vote for a map", false) * 0.5 * 24;
- pos_x = center - stringwidth("Vote for a map", false, '12 0 0');
- drawstring(pos, "Vote for a map", '24 24 0', '1 1 1', 1, DRAWFLAG_NORMAL);
+
+ map = _("Vote for a map");
+ pos_x = center - stringwidth(map, false, '12 0 0');
+ drawstring(pos, map, '24 24 0', '1 1 1', 1, DRAWFLAG_NORMAL);
pos_y += 26;
i = ceil(max(0, mv_timeout - time));
- map = strcat(ftos(i), " seconds left");
- //pos_x = center - stringwidth(map, false) * 0.5 * 16;
+ map = sprintf(_("%d seconds left"), i);
pos_x = center - stringwidth(map, false, '8 0 0');
drawstring(pos, map, '16 16 0', '0 1 0', 1, DRAWFLAG_NORMAL);
pos_y += 22;
pos_x = xmin;
- drawfont = hud_font;
-
// base for multi-column stuff...
ymin = pos_y;
if(mv_abstain)
mv_num_maps -= 1;
-
+
if(mv_num_maps > 3)
{
columns = 3;
pos_y += (dist_y - isize) / 2;
ymax -= isize;
+ if (mv_top2_time)
+ mv_top2_alpha = max(0.2, 1 - (time - mv_top2_time)*(time - mv_top2_time));
+
for(i = 0; i < mv_num_maps; ++i)
{
tmp = mv_votes[i]; // FTEQCC bug: too many array accesses in the function call screw it up
- if(tmp < 0)
- continue;
map = mv_maps[i];
if(mv_preview[i])
MapVote_DrawMapItem(pos + MapVote_GridVec(dist, i, columns), isize, tsize, map, mv_pics[i], tmp, i);
if(mv_abstain)
++mv_num_maps;
-
+
if(mv_abstain && i < mv_num_maps) {
tmp = mv_votes[i];
pos_y = ymax + isize - hud_fontsize_y;
MapVote_DrawAbstain(pos, isize, xmax - xmin, tmp, i);
}
- drawpic(mv_mousepos, strcat("gfx/menu/", cvar_string("menu_skin"), "/cursor.tga"), '32 32 0', '1 1 1', autocvar_hud_panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawpic(mv_mousepos, strcat("gfx/menu/", autocvar_menu_skin, "/cursor.tga"), '32 32 0', '1 1 1', autocvar_hud_panel_fg_alpha, DRAWFLAG_NORMAL);
}
void Cmd_MapVote_MapDownload(float argc)
if(argc != 2 || !mv_pk3list)
{
- print("mv_mapdownload: ^3You're not supposed to use this command on your own!\n");
+ print(_("mv_mapdownload: ^3You're not supposed to use this command on your own!\n"));
return;
}
break;
if(!pak || pak.sv_entnum != id) {
- print("^1Error:^7 Couldn't find pak index.\n");
+ print(_("^1Error:^7 Couldn't find pak index.\n"));
return;
}
- //print(strcat("^3Adding: ", ftos(id), " - ", pak.message, " - "));
-
if(PreviewExists(pak.message))
{
mv_preview[id] = true;
- //print("^2Found...\n");
return;
} else {
- print("Requesting preview...\n");
+ print(_("Requesting preview...\n"));
localcmd(strcat("\ncmd mv_getpic ", ftos(id), "\n"));
}
}
mv_preview[i] = false;
- //print(strcat("RECV: ", map, " in ", pk3, "\n"));
MapVote_CheckPic(map, pk3, i);
}
else
localcmd(strcat("\nimpulse ", ftos(imp), "\n"));
return true;
}
+ switch(nPrimary)
+ {
+ case K_KP_1: localcmd("\nimpulse 1\n"); return true;
+ case K_KP_2: localcmd("\nimpulse 2\n"); return true;
+ case K_KP_3: localcmd("\nimpulse 3\n"); return true;
+ case K_KP_4: localcmd("\nimpulse 4\n"); return true;
+ case K_KP_5: localcmd("\nimpulse 5\n"); return true;
+ case K_KP_6: localcmd("\nimpulse 6\n"); return true;
+ case K_KP_7: localcmd("\nimpulse 7\n"); return true;
+ case K_KP_8: localcmd("\nimpulse 8\n"); return true;
+ case K_KP_9: localcmd("\nimpulse 9\n"); return true;
+ case K_KP_0: localcmd("\nimpulse 10\n"); return true;
+ }
if (nPrimary == K_MOUSE1)
if (mv_selection >= 0)
if(oldmask & mv_maps_mask != oldmask)
if(oldmask & mv_maps_mask == mv_maps_mask)
- sound(world, CHAN_AUTO, "misc_invshot.wav", VOL_BASE, ATTN_NONE);
+ sound(world, CH_INFO, "misc_invshot.wav", VOL_BASE, ATTN_NONE);
// remove votes that no longer apply
for(i = 0, power = 1; i < mv_num_maps; ++i, power *= 2)
if not(mv_maps_mask & power)
mv_votes[i] = -1;
+
+ mv_top2_time = time;
}
void MapVote_UpdateVotes()