break;
case 3:
if(cvar("hud_healtharmor") == 2)
- mySize_y = 0.23; // 0.23 * width, trial and error...
+ {
+ mySize_x = 4.35; // 4.35 * height, trial and error...
+ mySize_y = 0.01; // "unlimited" ;)
+ }
break;
case 4:
mySize_x = 1.2; // 12/10 * height, as panel cant support more than 10 entries...
mySize_y = 0.5898; // 0.5898 * width, reason: bg has weird dimensions...
break;
}
- if(!mySize_x)
+ if(!mySize_x && mySize_y)
mySize_x = 1/mySize_y;
return mySize;
}
mySize = eX * mySize_x * vid_conwidth + eY * mySize_y * vid_conheight;
+ if(disable_menu_alphacheck == 2 && id == highlightedPanel)
+ {
+ vector menu_enable_maxsize, menu_enable_size;
+ menu_enable_maxsize = '0 0 0'; // shut up FTEQCC
+ menu_enable_maxsize_x = 0.3 * vid_conwidth;
+ menu_enable_maxsize_y = 0.18 * vid_conheight;
+ if(mySize_x > mySize_y)
+ {
+ if(mySize_y > menu_enable_maxsize_y)
+ {
+ menu_enable_size_y = menu_enable_maxsize_y;
+ menu_enable_size_x = mySize_x * (menu_enable_maxsize_y/mySize_y);
+ mySize = (1 - cvar("_menu_alpha")) * mySize + (cvar("_menu_alpha")) * menu_enable_size;
+ }
+ }
+ else
+ {
+ if(mySize_x > menu_enable_maxsize_x)
+ {
+ menu_enable_size_x = menu_enable_maxsize_x;
+ menu_enable_size_y = mySize_y * (menu_enable_maxsize_x/mySize_x);
+ mySize = (1 - cvar("_menu_alpha")) * mySize + (cvar("_menu_alpha")) * menu_enable_size;
+ }
+ }
+ }
return mySize;
}
pos_x = vid_conwidth + pos_x;
if (pos_y < 0)
pos_y = vid_conheight + pos_y;
+
+ if(disable_menu_alphacheck == 2 && id == highlightedPanel)
+ {
+ vector mySize, menu_enable_panelpos;
+ mySize = HUD_Panel_GetSize(id);
+ if(mySize_x > mySize_y)
+ menu_enable_panelpos = eX * 0.5 * vid_conwidth - eX * 0.5 * mySize_x + eY * 0.82 * vid_conheight;
+ else
+ menu_enable_panelpos = eY * 0.5 * vid_conheight - eY * 0.5 * mySize_y + eX * 0.7 * vid_conwidth;
+ pos = (1 - cvar("_menu_alpha")) * pos + (cvar("_menu_alpha")) * menu_enable_panelpos;
+ }
return pos;
}
if(alpha == "")
alpha = cvar_string("hud_bg_alpha");
- if(hud_configure)
+ if(hud_configure && disable_menu_alphacheck == 2 && highlightedPanel == id) // do not set a minalpha cap when showing the config dialog for this panel
+ alpha = ftos((1 - cvar("_menu_alpha")) * max(cvar("hud_configure_bg_minalpha"), stof(alpha)) + (cvar("_menu_alpha")) * stof(alpha));
+ else if(hud_configure)
alpha = ftos(max(cvar("hud_configure_bg_minalpha"), stof(alpha)));
if(hud_configure && !cvar(strcat("hud_", HUD_Panel_GetName(id)))) // ALWAYS show disabled panels at 0.25 alpha when in config mode
cvar_set(strcat("hud_", HUD_Panel_GetName(id), "_pos"), s);
}
+float HUD_Panel_CheckValidity_of_ResizeSuggestion(float id, vector mySize)
+{
+ vector oldSize;
+ oldSize = mySize;
+
+ // copy pasta from SetPosSize:
+ // minimum panel size cap
+ mySize_x = max(0.025 * vid_conwidth, mySize_x);
+ mySize_y = max(0.025 * vid_conheight, mySize_y);
+
+ if(id == 12) // some panels have their own restrictions, like the chat panel (which actually only moves the engine chat print around). Looks bad if it's too small.
+ {
+ mySize_x = max(17 * cvar("con_chatsize"), mySize_x);
+ mySize_y = max(2 * cvar("con_chatsize") + 2 * HUD_Panel_GetPadding(id), mySize_y);
+ }
+
+ // cap against panel's own limits
+ vector minSize;
+ minSize = HUD_Panel_GetMinSize(id); // mySize_x at least minSize_x * mySize_y, and vice versa
+
+ mySize_x = max(minSize_x * mySize_y, mySize_x);
+ mySize_y = max(minSize_y * mySize_x, mySize_y);
+
+ if(mySize == oldSize)
+ return 1;
+ else
+ return 0;
+}
+
// check if resize will result in panel being moved into another panel. If so, return snapped vector, otherwise return the given vector
-vector HUD_Panel_CheckResize(float id, vector myPos, vector mySize)
+vector HUD_Panel_CheckResize(float id, vector myPos, vector mySize, vector resizeorigin)
{
float i;
- vector myTarget;
- myTarget = mySize;
-
vector targPos;
vector targSize;
vector myCenter;
if(i == id || !HUD_Panel_CheckActive(i))
continue;
- targPos = HUD_Panel_GetPos(i);
- targSize = HUD_Panel_GetSize(i);
-
targPos = HUD_Panel_GetPos(i) - '1 1 0' * HUD_Panel_GetBorder(id);
targSize = HUD_Panel_GetSize(i) + '2 2 0' * HUD_Panel_GetBorder(id);
continue;
// OK, there IS a collision.
+ //
+
+ // Now check some special cases
+ // If the resizeorigin is too close to the target panel on either axis, we do not want to perform any collision avoidance on that axis
+ float Check_X, Check_Y;
+ Check_X = Check_Y = 1;
+ // check upper/left edges of targ panel
+ if(fabs(targPos_x - resizeorigin_x) < 0.025 * vid_conwidth)
+ Check_X = 0;
+ if(fabs(targPos_y - resizeorigin_y) < 0.025 * vid_conheight)
+ Check_Y = 0;
+ // check lower/right edges of targ panel
+ if(fabs(resizeorigin_x - (targPos_x + targSize_x)) < 0.025 * vid_conwidth)
+ Check_X = 0;
+ if(fabs(resizeorigin_y - (targPos_y + targSize_y)) < 0.025 * vid_conheight)
+ Check_Y = 0;
myCenter_x = myPos_x + 0.5 * mySize_x;
myCenter_y = myPos_y + 0.5 * mySize_y;
if(myCenter_x < targCenter_x && myCenter_y < targCenter_y) // top left (of target panel)
{
- if(myPos_x + mySize_x - targPos_x < myPos_y + mySize_y - targPos_y) // push it to the side
- myTarget_x = targPos_x - myPos_x;
- else // push it upwards
- myTarget_y = targPos_y - myPos_y;
+ //if(!HUD_Panel_CheckValidity_of_ResizeSuggestion(id, eX * (targPos_x - myPos_x) + eY * (targPos_y - resizeorigin_y)))
+ // continue;
+
+ if(myPos_x + mySize_x - targPos_x < myPos_y + mySize_y - targPos_y && Check_X) // push it to the side
+ mySize_x = targPos_x - myPos_x;
+ else if(Check_Y) // push it upwards
+ mySize_y = targPos_y - resizeorigin_y;
}
else if(myCenter_x > targCenter_x && myCenter_y < targCenter_y) // top right
{
- if(targPos_x + targSize_x - myPos_x < myPos_y + mySize_y - targPos_y) // push it to the side
- myTarget_x = targPos_x + targSize_x;
- else // push it upwards
- myTarget_y = targPos_y - myPos_y;
+ //if(!HUD_Panel_CheckValidity_of_ResizeSuggestion(id, eX * (resizeorigin_x - (targPos_x + targSize_x)) + eY * (targPos_y - resizeorigin_y)))
+ // continue;
+
+ if(targPos_x + targSize_x - myPos_x < myPos_y + mySize_y - targPos_y && Check_X) // push it to the side
+ mySize_x = resizeorigin_x - (targPos_x + targSize_x);
+ else if(Check_Y) // push it upwards
+ mySize_y = targPos_y - resizeorigin_y;
}
else if(myCenter_x < targCenter_x && myCenter_y > targCenter_y) // bottom left
{
- if(myPos_x + mySize_x - targPos_x < targPos_y + targSize_y - myPos_y) // push it to the side
- myTarget_x = targPos_x - myPos_x;
- else // push it downwards
- myTarget_y = targPos_y + targSize_y;
+ //if(!HUD_Panel_CheckValidity_of_ResizeSuggestion(id, eX * (targPos_x - resizeorigin_x) + eY * (resizeorigin_y - (targPos_y + targSize_y))))
+ // continue;
+
+ if(myPos_x + mySize_x - targPos_x < targPos_y + targSize_y - myPos_y && Check_X) // push it to the side
+ mySize_x = targPos_x - resizeorigin_x;
+ else if(Check_Y) // push it upwards
+ mySize_y = resizeorigin_y - (targPos_y + targSize_y);
}
else if(myCenter_x > targCenter_x && myCenter_y > targCenter_y) // bottom right
{
- if(targPos_x + targSize_x - myPos_x < targPos_y + targSize_y - myPos_y) // push it to the side
- myTarget_x = targPos_x + targSize_x;
- else // push it downwards
- myTarget_y = targPos_y + targSize_y;
+ //if(!HUD_Panel_CheckValidity_of_ResizeSuggestion(id, eX * (resizeorigin_x - (targPos_x + targSize_x)) + eY * (resizeorigin_y - (targPos_y + targSize_y))))
+ // continue;
+
+ if(targPos_x + targSize_x - myPos_x < targPos_y + targSize_y - myPos_y && Check_X) // push it to the side
+ mySize_x = resizeorigin_x - (targPos_x + targSize_x);
+ else if(Check_Y) // push it upwards
+ mySize_y = resizeorigin_y - (targPos_y + targSize_y);
}
}
- return myTarget;
+ return mySize;
}
void HUD_Panel_SetPosSize(float id, vector resizeorigin)
{
vector mySize, myPos;
- vector oldPos;
if(resizeCorner == 1) {
mySize_x = resizeorigin_x - (mousepos_x - panel_click_distance_x);
if(id == 12) // some panels have their own restrictions, like the chat panel (which actually only moves the engine chat print around). Looks bad if it's too small.
{
- mySize_x = max(15 * cvar("con_chatsize"), mySize_x);
+ mySize_x = max(17 * cvar("con_chatsize"), mySize_x);
mySize_y = max(2 * cvar("con_chatsize") + 2 * HUD_Panel_GetPadding(id), mySize_y);
}
mySize_x = min(vid_conwidth - myPos_x, mySize_x);
mySize_y = min(vid_conheight - myPos_y, mySize_y);
- if(cvar("hud_configure_checkcollisions")) {
- oldPos = myPos;
- mySize = HUD_Panel_CheckResize(id, myPos, mySize);
- myPos = HUD_Panel_CheckMove(id, myPos, mySize); // touching myPos won't do anything... unless we make it change mySize somehow, see next line
- mySize = mySize - myPos + oldPos; // TODO: this is still borked in some situations :(
- }
+ if(cvar("hud_configure_checkcollisions"))
+ mySize = HUD_Panel_CheckResize(id, myPos, mySize, resizeorigin);
if(cvar("hud_configure_grid"))
{
drawpic_skin(picpos, "armor", '1 1 0' * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
}
HUD_DrawXNum_Colored(numpos, x, 3, mySize_y, HUD_Panel_GetFgAlpha(id)); // draw the combined health and armor
+
+ // fuel
+ if(cvar(strcat("hud_", HUD_Panel_GetName(id), "_mirror"))) {
+ barpos = pos + eX * mySize_x - eX * mySize_x * min(1, fuel/100);
+ barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y;
+ } else {
+ barpos = pos;
+ barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y;
+ }
+ if(fuel)
+ HUD_Panel_DrawProgressBar(barpos, 0, barsize, HUD_Panel_GetProgressBarColor("fuel"), HUD_Panel_GetFgAlpha(id) * 0.8, DRAWFLAG_NORMAL);
}
else
{
attacker = textShortenToWidth("Player1", 0.5 * mySize_x - height, fontsize, stringwidth_colors);
victim = textShortenToWidth("Player2", 0.5 * mySize_x - height, fontsize, stringwidth_colors);
+ a = bound(0, (when - j) / 4, 1);
}
else
{
if(hud_configure) // example actions for config mode
{
- drawpic_skin(weap_pos, strcat("weapon", "electro"), '2 1 0' * height, '1 1 1', HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos_attacker, attacker, fontsize, HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos_victim, victim, fontsize, HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
+ drawpic_skin(weap_pos, strcat("weapon", "electro"), '2 1 0' * height, '1 1 1', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos_attacker, attacker, fontsize, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos_victim, victim, fontsize, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
}
else if(WEP_VALID(killnotify_deathtype[j]))
{
if(hud_configure)
{
s = "0:13:37";
- drawstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, FALSE, '0.75 0.75 0' * mySize_y), s, '0.75 0.75 0' * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
+ drawstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, FALSE, '0.60 0.60 0' * mySize_y), s, '0.60 0.60 0' * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
s = "^1Intermediate 1 (+15.42)";
- drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.25 * mySize_y) + eY * 0.75 * mySize_y, s, '1 1 0' * 0.25 * mySize_y, HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.20 * mySize_y) + eY * 0.60 * mySize_y, s, '1 1 0' * 0.20 * mySize_y, HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
+ s = strcat("^1PENALTY: ", ftos_decimals(20 * 0.1, 1), " (missing a checkpoint)");
+ drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.20 * mySize_y) + eY * 0.80 * mySize_y, s, '1 1 0' * 0.20 * mySize_y, HUD_Panel_GetFgAlpha(id), DRAWFLAG_NORMAL);
}
else if(race_checkpointtime)
{
{
dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
//drawcolorcodedstring(m - '0 16 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.25 * mySize_y) + eY * 0.75 * mySize_y, s, '1 1 0' * 0.25 * mySize_y, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
}
- // ___ TODO!!!___
if(race_penaltytime)
{
a = bound(0, 2 - (time - race_penaltyeventtime), 1);
s = strcat("^1PENALTY: ", ftos_decimals(race_penaltytime * 0.1, 1), " (", race_penaltyreason, ")");
dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
//drawcolorcodedstring(m - '0 32 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos - '0 32 0' - '0.5 0 0' * stringwidth(s, TRUE, '16 16 0'), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.8 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
}
}
{
a = bound(0, (time - race_checkpointtime) / 0.5, 1);
//drawstring_expanding(m - '16 0 0' * stringwidth(forcetime, FALSE), forcetime, '32 32 0', '1 1 1', HUD_Panel_GetFgAlpha(id), 0, a);
- drawstring_expanding(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(forcetime, FALSE, '1 1 0' * 0.75 * mySize_y), forcetime, '1 1 0' * 0.75 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(id), 0, a);
+ drawstring_expanding(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(forcetime, FALSE, '1 1 0' * 0.6 * mySize_y), forcetime, '1 1 0' * 0.6 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(id), 0, a);
}
else
a = 1;
{
s = TIME_ENCODED_TOSTRING(TIME_ENCODE(time + TIME_DECODE(race_penaltyaccumulator) - race_laptime));
//drawstring(m - '16 0 0' * stringwidth(s, FALSE), s, '32 32 0', '1 1 1', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
- drawstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, FALSE, '0.75 0.75 0' * mySize_y), s, '0.75 0.75 0' * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, FALSE, '0.6 0.6 0' * mySize_y), s, '0.6 0.6 0' * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
}
}
else
s = MakeRaceString(race_mycheckpoint, TIME_DECODE(race_mycheckpointdelta), -!race_mycheckpointenemy, race_mycheckpointlapsdelta, race_mycheckpointenemy);
dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
//drawcolorcodedstring(m - '0 16 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos - '0 16 0' - '0.5 0 0' * stringwidth(s, TRUE, '16 16 0'), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
}
if(race_othercheckpointtime && race_othercheckpointenemy != "")
{
s = MakeRaceString(race_othercheckpoint, -TIME_DECODE(race_othercheckpointdelta), -!race_othercheckpointenemy, race_othercheckpointlapsdelta, race_othercheckpointenemy);
dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
//drawcolorcodedstring(m - '0 0 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos - '0 0 0' - '0.5 0 0' * stringwidth(s, TRUE, '16 16 0'), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
}
if(race_penaltytime && !race_penaltyaccumulator)
s = strcat("^2PENALTY: 0.0 (", race_penaltyreason, ")");
dummyfunction(0, 0, 0, 0, 0, 0, 0, 0); // work around DP bug (set OFS_PARAM5 to 0)
//drawcolorcodedstring(m - '0 32 0' - '8 0 0' * stringwidth(s, TRUE), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos - '0 32 0' - '0.5 0 0' * stringwidth(s, TRUE, '16 16 0'), s, '16 16 0', HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * 0.5 * mySize_x - '0.5 0 0' * stringwidth(s, TRUE, '1 1 0' * 0.2 * mySize_y) + eY * 0.6 * mySize_y, s, '1 1 0' * 0.2 * mySize_y, HUD_Panel_GetFgAlpha(id) * a, DRAWFLAG_NORMAL);
}
}
}
a = bound(0, race_status_time - time, 1);
string s;
- s = textShortenToWidth(race_status_name, 120, '10 10 0', stringwidth_colors);
+ s = textShortenToWidth(race_status_name, mySize_y, '1 1 0' * 0.1 * mySize_y, stringwidth_colors);
float rank;
if(race_status > 0)
string rankname;
rankname = race_PlaceName(rank);
+ vector namepos;
+ namepos = pos + '0.5 0.9 0' * mySize_y - eX * stringwidth(s, TRUE, '1 1 0' * 0.1 * mySize_y);
+ vector rankpos;
+ rankpos = pos + '0.5 0.25 0' * mySize_y - eX * stringwidth(rankname, TRUE, '1 1 0' * 0.15 * mySize_y);
+
if(race_status == 0)
- drawpic_skin(pos, "race_newfail", '80 80 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawpic_skin(pos, "race_newfail", '1 1 0' * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
else if(race_status == 1) {
- drawpic_skin(pos, "race_newtime", '80 80 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
- drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawpic_skin(pos, "race_newtime", '1 1 0' * 0.9 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(namepos, s, '1 1 0' * 0.1 * mySize_y, HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawstring(rankpos, rankname, '1 1 0' * 0.15 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
} else if(race_status == 2) {
if(race_status_name == GetPlayerName(player_localentnum -1) || !race_myrank || race_myrank < rank)
- drawpic_skin(pos, "race_newrankgreen", '80 80 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawpic_skin(pos, "race_newrankgreen", '1 1 0' * 0.9 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
else
- drawpic_skin(pos, "race_newrankyellow", '80 80 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
- drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawpic_skin(pos, "race_newrankyellow", '1 1 0' * 0.9 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(namepos, s, '1 1 0' * 0.1 * mySize_y, HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawstring(rankpos, rankname, '1 1 0' * 0.15 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
} else if(race_status == 3) {
- drawpic_skin(pos, "race_newrecordserver", '80 80 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
- drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawpic_skin(pos, "race_newrecordserver", '1 1 0' * 0.9 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(namepos, s, '1 1 0' * 0.1 * mySize_y, HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
+ drawstring(rankpos, rankname, '1 1 0' * 0.15 * mySize_y, '1 1 1', HUD_Panel_GetFgAlpha(HUD_PANEL_MODICONS) * a, DRAWFLAG_NORMAL);
}
if (race_status_time - time <= 0) {
// Handle chat as a panel (#12)
//
-float chat_prevtime;
void HUD_Chat(void)
{
float id = HUD_PANEL_CHAT;
mySize -= '2 2 0' * padding;
}
- cvar_set("con_csqcpositioning", "1");
+ cvar_set("con_chatrect", "1");
cvar_set("con_chatrect_x", ftos(pos_x/vid_conwidth));
cvar_set("con_chatrect_y", ftos(pos_y/vid_conheight));
if(hud_configure)
{
- if(chat_prevtime != floor(time/5))
+ float chatsize;
+ chatsize = cvar("con_chatsize");
+ cvar_set("con_chatrect_x", "9001"); // over 9000, we'll fake it instead for more control over alpha and such
+ float i, a;
+ for(i = 0; i < cvar("con_chat"); ++i)
{
- chat_prevtime = floor(time/5);
-
- float sound_prev;
- sound_prev = cvar("con_chatsound");
-
- // disable chat bleep
- cvar_set("con_chatsound", "0");
- print("\x01Player^7: This is the chat area\n");
- cvar_set("con_chatsound", ftos(sound_prev));
+ if(i == cvar("con_chat") - 1)
+ a = HUD_Panel_GetFgAlpha(id);
+ else
+ a = HUD_Panel_GetFgAlpha(id) * floor(((i + 1) * 7 + cvar("con_chattime"))/45);
+ drawcolorcodedstring(pos + eY * i * chatsize, textShortenToWidth("^3Player^7: This is the chat area.", mySize_x, '1 1 0' * chatsize, stringwidth_colors), '1 1 0' * chatsize, a, DRAWFLAG_NORMAL);
}
}
}