X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fmapvoting.qc;h=b34bd0f3a1476b9fda20e2da89b0c7249c648a03;hb=e87123e5fba23f7a8907e6fbab241c5eec5be168;hp=72b60b5bd378097c74ed43b3b754328dc0b7d435;hpb=7785114f6fb42a3a52c39413bf6e725607d338b2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/mapvoting.qc b/qcsrc/client/mapvoting.qc index 72b60b5bd..b34bd0f3a 100644 --- a/qcsrc/client/mapvoting.qc +++ b/qcsrc/client/mapvoting.qc @@ -1,5 +1,8 @@ #include "mapvoting.qh" +#include "autocvars.qh" +#include "miscfunctions.qh" +#include "defs.qh" #include "hud/_mod.qh" #include "hud/panel/scoreboard.qh" @@ -24,7 +27,6 @@ float mv_timeout; float mv_top2_time; float mv_top2_alpha; -vector mv_mousepos; int mv_selection; int mv_columns; int mv_mouse_selection; @@ -297,10 +299,10 @@ float MapVote_Selection(vector topleft, vector cellsize, float rows, float colum for (r = 0; r < rows; ++r) for (c = 0; c < columns; ++c) { - if (mv_mousepos.x >= topleft.x + cellsize.x * c && - mv_mousepos.x <= topleft.x + cellsize.x * (c + 1) && - mv_mousepos.y >= topleft.y + cellsize.y * r && - mv_mousepos.y <= topleft.y + cellsize.y * (r + 1)) + if (mousepos.x >= topleft.x + cellsize.x * c && + mousepos.x <= topleft.x + cellsize.x * (c + 1) && + mousepos.y >= topleft.y + cellsize.y * r && + mousepos.y <= topleft.y + cellsize.y * (r + 1)) { mv_mouse_selection = r * columns + c; break; @@ -338,13 +340,10 @@ void MapVote_Draw() if (!autocvar_hud_cursormode) { - vector mpos = mv_mousepos + getmousepos(); - mpos.x = bound(0, mpos.x, vid_conwidth); - mpos.y = bound(0, mpos.y, vid_conheight); - - if ( mpos.x != mv_mousepos.x || mpos.y != mv_mousepos.y ) + vector mpos = mousepos; + update_mousepos(); + if (mpos.x != mousepos.x || mpos.y != mousepos.y) mv_selection_keyboard = 0; - mv_mousepos = mpos; } center = (vid_conwidth - 1)/2; @@ -402,7 +401,7 @@ void MapVote_Draw() // higher than the image itself ratio for mapvote items to reserve space for long map names int item_aspect = (gametypevote) ? 3/1 : 5/3; - vector table_size = HUD_GetTableSize_BestItemAR(mv_num_maps, eX * (xmax - xmin) + eY * (ymax - ymin), item_aspect); + vector table_size = HUD_GetTableSize_BestItemAR(mv_num_maps, vec2(xmax - xmin, ymax - ymin), item_aspect); mv_columns = table_size.x; rows = table_size.y; @@ -488,7 +487,7 @@ void MapVote_Draw() MapVote_DrawAbstain(pos, dist.x, xmax - xmin, tmp, i); } - draw_cursor_normal(mv_mousepos, '1 1 1', panel_fg_alpha); + draw_cursor_normal(mousepos, '1 1 1', panel_fg_alpha); } void Cmd_MapVote_MapDownload(int argc) @@ -498,7 +497,7 @@ void Cmd_MapVote_MapDownload(int argc) if(argc != 2 || !mv_pk3list) { - LOG_INFO(_("mv_mapdownload: ^3You're not supposed to use this command on your own!\n")); + LOG_INFO(_("mv_mapdownload: ^3You're not supposed to use this command on your own!")); return; } @@ -508,7 +507,7 @@ void Cmd_MapVote_MapDownload(int argc) break; if(!pak || pak.sv_entnum != id) { - LOG_INFO(_("^1Error:^7 Couldn't find pak index.\n")); + LOG_INFO(_("^1Error:^7 Couldn't find pak index.")); return; } @@ -517,7 +516,7 @@ void Cmd_MapVote_MapDownload(int argc) mv_preview[id] = true; return; } else { - LOG_INFO(_("Requesting preview...\n")); + LOG_INFO(_("Requesting preview...")); localcmd(strcat("\ncmd mv_getpicture ", ftos(id), "\n")); } } @@ -612,12 +611,7 @@ void GameTypeVote_ReadOption(int i) mv_maps[i] = gt; mv_flags[i] = ReadByte(); - string mv_picpath = sprintf("gfx/menu/%s/gametype_%s", autocvar_menu_skin, gt); - if(precache_pic(mv_picpath) == "") - mv_picpath = strcat("gfx/menu/default/gametype_", gt); - string pic = strzone(mv_picpath); - mv_pics[i] = pic; - mv_preview[i] = PreviewExists(pic); + string basetype = ""; if ( mv_flags[i] & GTV_CUSTOM ) { @@ -626,6 +620,7 @@ void GameTypeVote_ReadOption(int i) name = gt; mv_pk3[i] = strzone(name); mv_desc[i] = strzone(ReadString()); + basetype = strzone(ReadString()); } else { @@ -633,13 +628,30 @@ void GameTypeVote_ReadOption(int i) mv_pk3[i] = strzone(MapInfo_Type_ToText(type)); mv_desc[i] = MapInfo_Type_Description(type); } + + string mv_picpath = sprintf("gfx/menu/%s/gametype_%s", autocvar_menu_skin, gt); + if(precache_pic(mv_picpath) == "") + { + mv_picpath = strcat("gfx/menu/default/gametype_", gt); + if(precache_pic(mv_picpath) == "") + { + mv_picpath = sprintf("gfx/menu/%s/gametype_%s", autocvar_menu_skin, basetype); + if(precache_pic(mv_picpath) == "") + { + mv_picpath = strcat("gfx/menu/default/gametype_", basetype); + } + } + } + string pic = strzone(mv_picpath); + mv_pics[i] = pic; + mv_preview[i] = PreviewExists(pic); } void MapVote_Init() { mv_active = 1; - if(autocvar_hud_cursormode) { setcursormode(1); } - else { mv_mousepos = '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight; } + if(autocvar_hud_cursormode) setcursormode(1); + else mousepos = '0.5 0 0' * vid_conwidth + '0 0.5 0' * vid_conheight; mv_selection = -1; mv_selection_keyboard = 0; @@ -775,8 +787,8 @@ float MapVote_InputEvent(int bInputType, float nPrimary, float nSecondary) if(bInputType == 3) { - mv_mousepos.x = nPrimary; - mv_mousepos.y = nSecondary; + mousepos.x = nPrimary; + mousepos.y = nSecondary; mv_selection_keyboard = 0; return true; }