case 9: return "vote"; break;
case 10: return "modicons"; break;
case 11: return "pressedkeys"; break;
+ case 12: return "chat"; break;
default: return "";
}
}
fputs(fh, strcat("seta hud_", HUD_Panel_GetName(i), "_flip ", ftos(cvar(strcat("hud_", HUD_Panel_GetName(i), "_flip"))), "\n"));
fputs(fh, strcat("seta hud_", HUD_Panel_GetName(i), "_mirror ", ftos(cvar(strcat("hud_", HUD_Panel_GetName(i), "_mirror"))), "\n"));
break;
+ case 4:
+ fputs(fh, strcat("seta hud_", HUD_Panel_GetName(i), "_flip ", ftos(cvar(strcat("hud_", HUD_Panel_GetName(i), "_flip"))), "\n"));
+ break;
case 9:
fputs(fh, strcat("seta hud_", HUD_Panel_GetName(i), "_alreadyvoted_alpha ", ftos(cvar(strcat("hud_", HUD_Panel_GetName(i), "_alreadyvoted_alpha"))), "\n"));
break;
if(cvar("hud_healtharmor") == 2)
mySize_y = 0.23; // 0.23 * width, trial and error...
break;
+ case 4:
+ mySize_x = 0.8; // 8/10 * height, as panel cant support more than 10 entries...
+ mySize_y = 1/8; // 1/8 * width
+ break;
case 5:
mySize_y = 1/4.1; // 1/4.1 * width, trial and error...
break;
padding = cvar_string(strcat("hud_", HUD_Panel_GetName(id), "_bg_padding"));
if(padding == "")
padding = cvar_string("hud_bg_padding");
- return stof(padding);
+
+ vector mySize;
+ mySize = HUD_Panel_GetSize(id);
+ float smallestsize;
+ smallestsize = min(mySize_x, mySize_y);
+ return min(smallestsize/2, stof(padding));
}
// draw the background/borders
-void HUD_Panel_DrawBg(float id, vector pos, vector mySize)
+void HUD_Panel_DrawBg(float id, vector pos, vector mySize, float alpha)
{
- float alpha;
-
if(!hud_configure && cvar_string(strcat("hud_", HUD_Panel_GetName(id), "_bg")) == "0")
return;
if(bg == "0" && hud_configure) {
bg = "border"; // we probably want to see a background in config mode at all times...
- alpha = cvar("hud_configure_bg_minalpha");
}
if(bg != "0")
if(!alpha)
alpha = HUD_Panel_GetAlpha(id);
+ if(hud_configure)
+ alpha = max(cvar("hud_configure_bg_minalpha"), alpha);
+
draw_BorderPicture(pos - '1 1 0' * border, strcat("gfx/hud/", cvar_string("hud_skin"), "/", bg), mySize + '1 1 0' * 2 * border, color, alpha, '1 1 0' * (border/BORDER_MULTIPLIER));
}
}
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(15 * 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
}
heapsort(weapon_cnt, weaponorder_swap, weaponorder_cmp, world);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
string Weapon_SuicideMessage(float deathtype)
{
- float w;
- w = DEATH_WEAPONOF(deathtype);
-
- switch (w)
- {
- case 1:
- return "lasered himself to hell";
- case 2:
- return "did the impossible";
- case 3:
- return "did the impossible";
- case 4:
- if(deathtype & HITTYPE_SECONDARY)
- return "tried out his own grenade";
- return "detonated";
- }
- // TODO: was blasted by?
- return strcat("[no kill message for weapon ", ftos(w), "!]");
+ w_deathtype = deathtype;
+ get_weaponinfo(DEATH_WEAPONOF(deathtype)).weapon_func(WR_SUICIDEMESSAGE);
+ return w_deathtypestring;
}
string Weapon_KillMessage(float deathtype)
{
- float w;
- w = DEATH_WEAPONOF(deathtype);
-
- switch (w)
- {
- case 1:
- return "was lasered to death by";
- case 2:
- return "was gunned by";
- case 3:
- if(deathtype & HITTYPE_SECONDARY)
- return "was sniped by";
- return "was riddled full of holes by";
- case 4:
- if(deathtype & HITTYPE_BOUNCE)
- return "didn't see #'s grenade";
- return "almost dodged #'s grenade";
- }
- return strcat("[no suicide message for weapon ", ftos(w), "!]");
+ w_deathtype = deathtype;
+ get_weaponinfo(DEATH_WEAPONOF(deathtype)).weapon_func(WR_KILLMESSAGE);
+ return w_deathtypestring;
}
float killnotify_times[10];
print ("^1",s1, "^1 needs a restart\n");
else
print ("^1",s1, "^1 died\n");
- }
+ }
} else if(msg == MSG_KILL_ACTION_SPREE) {
HUD_KillNotify_Push(s1, "", DEATH_KILL);
if(cvar("cl_gentle"))
print ("^1",s1,"^1 needs a restart after a ",s2," scoring spree\n");
else
print ("^1",s1,"^1 died with a ",s2," kill spree\n");
+ } else if(msg == MSG_INFO) {
+ if(type == INFO_GOTFLAG) {
+ HUD_KillNotify_Push(s1, s2, INFO_GOTFLAG);
+ print(s1, "^7 got the ", s2, "\n");
+ } else if(type == INFO_LOSTFLAG) {
+ HUD_KillNotify_Push(s1, s2, INFO_LOSTFLAG);
+ print(s1, "^7 lost the ", s2, "\n");
+ } else if(type == INFO_PICKUPFLAG) {
+ HUD_KillNotify_Push(s1, s2, INFO_GOTFLAG);
+ print(s1, "^7 picked up the ", s2, "\n");
+ } else if(type == INFO_RETURNFLAG) {
+ HUD_KillNotify_Push(s1, s2, INFO_RETURNFLAG);
+ print(s1, "^7 returned the ", s2, "\n");
+ }
}
+
}
#define DAMAGE_CENTERPRINT_SPACER NEWLINES
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
}
float entries, height;
- entries = 8 * mySize_y/mySize_x;
+ entries = bound(1, floor(8 * mySize_y/mySize_x), 10);
height = mySize_y/entries;
vector fontsize;
float a;
float when;
- when = 5;
+ when = cvar("hud_notify_time");
float fadetime;
- fadetime = 2;
+ fadetime = cvar("hud_notify_fadetime");
- float i;
- for(i = 0; i <= entries; ++i)
+ string s;
+
+ float i, j;
+ for(j = 0; j < entries; ++j)
{
- a = bound(0, when + (fadetime - (time - killnotify_times[i]))/fadetime, 1);
- drawcolorcodedstring(pos + eY * 0.33 * height + eY * i * height, textShortenToWidth(killnotify_attackers[i], 0.5 * mySize_x - height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
- drawcolorcodedstring(pos + eY * 0.33 * height + eX * 0.5 * mySize_x + eX * height + eY * i * height, textShortenToWidth(killnotify_victims[i], 0.5 * mySize_x - height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
-
- if(WEP_VALID(killnotify_deathtype[i]))
+ if(cvar("hud_notify_flip"))
+ i = j;
+ else // rather nasty hack for ordering items from the bottom up
+ i = entries - j - 1;
+
+ if(fadetime)
{
- self = get_weaponinfo(killnotify_deathtype[i]);
- drawpic_skin(pos + eX * 0.5 * mySize_x - eX * (mySize_y/entries) + eY * i * (mySize_y/entries), strcat("weapon", self.netname), '2 1 0' * (mySize_y/entries), '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ if(killnotify_times[j] + when > time)
+ a = 1;
+ else
+ a = bound(0, (killnotify_times[j] + when + fadetime - time) / fadetime, 1);
+ }
+ else
+ {
+ if(killnotify_times[j] + when > time)
+ a = 1;
+ else
+ a = 0;
+ }
+
+ // X [did action to] Y
+ if(WEP_VALID(killnotify_deathtype[j]))
+ {
+ self = get_weaponinfo(killnotify_deathtype[j]);
+ drawpic_skin(pos + eX * 0.5 * mySize_x - eX * 0.5 * height + eY * 0.25 * height + eY * i * height, strcat("weapon", self.netname), '1 0.5 0' * height, '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eY * 0.33 * height + eY * i * height, textShortenToWidth(killnotify_attackers[j], 0.5 * mySize_x - 0.5 * height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eY * 0.33 * height + eX * 0.5 * mySize_x + eX * 0.5 * height + eY * i * height, textShortenToWidth(killnotify_victims[j], 0.5 * mySize_x - 0.5 * height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
}
- else if(killnotify_deathtype[i] == DEATH_KILL)
+ else if(killnotify_deathtype[j] == DEATH_FALL)
{
- drawpic_skin(pos + eX * 0.5 * mySize_x - eX * (mySize_y/entries) + eY * i * (mySize_y/entries), "notify_selfkill", '2 1 0' * (mySize_y/entries), '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawpic_skin(pos + eX * 0.5 * mySize_x - eX * 0.5 * height + eY * 0.25 * height + eY * i * height, "notify_pushoffedge", '1 0.5 0' * height, '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eY * 0.33 * height + eY * i * height, textShortenToWidth(killnotify_attackers[j], 0.5 * mySize_x - 0.5 * height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eY * 0.33 * height + eX * 0.5 * mySize_x + eX * 0.5 * height + eY * i * height, textShortenToWidth(killnotify_victims[j], 0.5 * mySize_x - 0.5 * height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
}
- else if(killnotify_deathtype[i] == DEATH_FALL)
+
+ // Y [used by] X
+ else if(killnotify_deathtype[j] == DEATH_KILL)
{
- drawpic_skin(pos + eX * 0.5 * mySize_x - eX * (mySize_y/entries) + eY * i * (mySize_y/entries), "notify_pushoffedge", '2 1 0' * (mySize_y/entries), '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawpic_skin(pos + eY * 0.25 * height + eY * i * height, "notify_selfkill", '1 0.5 0' * height, '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * height + eY * 0.33 * height + eY * i * height, textShortenToWidth(killnotify_attackers[j], mySize_x - height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ }
+ else if(killnotify_deathtype[j] == INFO_GOTFLAG)
+ {
+ if(killnotify_victims[j] == "^1RED^7 flag")
+ s = "red";
+ else
+ s = "blue";
+ drawpic_skin(pos + eY * i * height, strcat("flag_", s, "_carrying"), '1 1 0' * height, '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * height + eY * 0.33 * height + eY * i * height, textShortenToWidth(killnotify_attackers[j], mySize_x - height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ }
+ else if(killnotify_deathtype[j] == INFO_RETURNFLAG)
+ {
+ if(killnotify_victims[j] == "^1RED^7 flag")
+ s = "red";
+ else
+ s = "blue";
+ drawpic_skin(pos + eY * i * height, strcat("flag_", s, "_taken"), '1 1 0' * height, '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * height + eY * 0.33 * height + eY * i * height, textShortenToWidth(killnotify_attackers[j], mySize_x - height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ }
+ else if(killnotify_deathtype[j] == INFO_LOSTFLAG)
+ {
+ if(killnotify_victims[j] == "^1RED^7 flag")
+ s = "red";
+ else
+ s = "blue";
+ drawpic_skin(pos + eY * i * height, strcat("flag_", s, "_lost"), '1 1 0' * height, '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+ drawcolorcodedstring(pos + eX * height + eY * 0.33 * height + eY * i * height, textShortenToWidth(killnotify_attackers[j], mySize_x - height, fontsize, stringwidth_colors), fontsize, hud_alpha_fg * a, DRAWFLAG_NORMAL);
}
}
/* This will come later.
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
float a;
if(vote_active != vote_prev) {
vote_change = time;
- vote_prev = bound(0, vote_active, 1);
+ vote_prev = vote_active;
}
- if(vote_active)
+ if(vote_active || hud_configure)
vote_alpha = bound(0, (time - vote_change) * 2, 1);
else
vote_alpha = bound(0, 1 - (time - vote_change) * 2, 1);
if(hud_configure)
{
- vote_alpha = 1;
vote_yescount = 3;
vote_nocount = 2;
vote_needed = 4;
}
- HUD_Panel_DrawBg(id, pos, mySize);
+ if(!vote_alpha)
+ return;
+
+ a = vote_alpha * bound(cvar_or("hud_vote_alreadyvoted_alpha", 0.75), 1 - vote_highlighted, 1);
+
+ HUD_Panel_DrawBg(id, pos, mySize, a * hud_alpha_bg);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
mySize -= '2 2 0' * padding;
}
- if(vote_alpha) {
- a = vote_alpha * bound(cvar_or("hud_vote_alreadyvoted_alpha", 0.75), 1 - vote_highlighted, 1);
+ drawpic_skin(pos, "voteprogress_back", mySize, '1 1 1', a * hud_alpha_bg, DRAWFLAG_NORMAL);
- drawpic_skin(pos, "voteprogress_back", mySize, HUD_Panel_GetColor(id), a * hud_alpha_bg, DRAWFLAG_NORMAL);
+ s = "A vote has been called for: ";
+ drawstring(pos + '0.5 0 0' * mySize_x + '0 0.1 0' * mySize_y - eX * stringwidth(s, FALSE, '1 1 0' * 0.5 * mySize_y*(1/5)), s, '1 1 0' * mySize_y*(1/5), '1 1 1', a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ s = textShortenToWidth(vote_called_vote, mySize_x * 0.96, '1 1 0' * mySize_y*(1/5), stringwidth_colors); // TODO: broken?
+ if(hud_configure)
+ s = "Configure the HUD";
+ drawcolorcodedstring(pos + '0.52 0 0' * mySize_x + '0 0.3 0' * mySize_y - eX * stringwidth(s, FALSE, '1 1 0' * 0.5 * mySize_y*(1/6)), s, '1 1 0' * mySize_y*(1/6), a * hud_alpha_fg, DRAWFLAG_NORMAL);
- s = "A vote has been called for: ";
- drawstring(pos + '0.5 0 0' * mySize_x + '0 0.1 0' * mySize_y - eX * stringwidth(s, FALSE, '1 1 0' * 0.5 * mySize_y*(1/5)), s, '1 1 0' * mySize_y*(1/5), '1 1 1', a * hud_alpha_fg, DRAWFLAG_NORMAL);
- s = textShortenToWidth(vote_called_vote, mySize_x * 0.96, '10 0 0', stringwidth_colors); // TODO: broken?
- if(hud_configure)
- s = "Configure the HUD";
- drawcolorcodedstring(pos + '0.52 0 0' * mySize_x + '0 0.3 0' * mySize_y - eX * stringwidth(s, FALSE, '1 1 0' * 0.5 * mySize_y*(1/6)), s, '1 1 0' * mySize_y*(1/6), a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ // print the yes/no counts
+ s = strcat("Yes: ", ftos(vote_yescount));
+ drawstring(pos + '0 0.6 0' * mySize_y + '0.02 0 0' * mySize_x, s, '1 1 0' * mySize_y*(1/6) , eY, a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ s = strcat("No: ", ftos(vote_nocount));
+ drawstring(pos + '0 0.6 0' * mySize_y + '0.98 0 0' * mySize_x - eX * stringwidth(s, FALSE, '1 1 0' * mySize_y*(1/6)), s, '1 1 0' * mySize_y*(1/6), eX, a * hud_alpha_fg, DRAWFLAG_NORMAL);
- // print the yes/no counts
- s = strcat("Yes: ", ftos(vote_yescount));
- drawstring(pos + '0 0.6 0' * mySize_y + '0.02 0 0' * mySize_x, s, '1 1 0' * mySize_y*(1/6) , eY, a * hud_alpha_fg, DRAWFLAG_NORMAL);
- s = strcat("No: ", ftos(vote_nocount));
- drawstring(pos + '0 0.6 0' * mySize_y + '0.98 0 0' * mySize_x - eX * stringwidth(s, FALSE, '1 1 0' * mySize_y*(1/6)), s, '1 1 0' * mySize_y*(1/6), eX, a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ // draw the progress bars
+ drawsetcliparea(pos_x, pos_y, mySize_x * 0.5 * (vote_yescount/vote_needed), mySize_y);
+ drawpic_skin(pos, "voteprogress_prog", mySize, eY, a * hud_alpha_fg, DRAWFLAG_NORMAL);
- // draw the progress bars
- drawsetcliparea(pos_x, pos_y, mySize_x * 0.5 * (vote_yescount/vote_needed), mySize_y);
- drawpic_skin(pos, "voteprogress_prog", mySize, eY, a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ drawsetcliparea(pos_x + mySize_x - mySize_x * 0.5 * (vote_nocount/vote_needed), pos_y, mySize_x * 0.5, mySize_y);
+ drawpic_skin(pos, "voteprogress_prog", mySize, eX, a * hud_alpha_fg, DRAWFLAG_NORMAL);
- drawsetcliparea(pos_x + mySize_x - mySize_x * 0.5 * (vote_nocount/vote_needed), pos_y, mySize_x * 0.5, mySize_y);
- drawpic_skin(pos, "voteprogress_prog", mySize, eX, a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ // draw the highlights
+ if(vote_highlighted == 1) {
+ drawsetcliparea(pos_x, pos_y, mySize_x * 0.5, mySize_y);
+ drawpic_skin(pos, "voteprogress_voted", mySize, eY, a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ }
+ else if(vote_highlighted == 2) {
+ drawsetcliparea(pos_x + 0.5 * mySize_x, pos_y, mySize_x * 0.5, mySize_y);
+ drawpic_skin(pos, "voteprogress_voted", mySize, eX, a * hud_alpha_fg, DRAWFLAG_NORMAL);
+ }
- // draw the highlights
- if(vote_highlighted == 1) {
- drawsetcliparea(pos_x, pos_y, mySize_x * 0.5, mySize_y);
- drawpic_skin(pos, "voteprogress_voted", mySize, eY, a * hud_alpha_fg, DRAWFLAG_NORMAL);
- }
- else if(vote_highlighted == 2) {
- drawsetcliparea(pos_x + 0.5 * mySize_x, pos_y, mySize_x * 0.5, mySize_y);
- drawpic_skin(pos, "voteprogress_voted", mySize, eX, a * hud_alpha_fg, DRAWFLAG_NORMAL);
- }
+ drawresetcliparea();
- drawresetcliparea();
- }
- else if(!vote_active) {
+ if(!vote_active) {
vote_highlighted = 0;
}
}
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
pos = HUD_Panel_GetPos(id);
mySize = HUD_Panel_GetSize(id);
- HUD_Panel_DrawBg(id, pos, mySize);
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
float padding;
padding = HUD_Panel_GetPadding(id);
if(padding)
drawpic_skin(pos + eX * mySize_x - eX * 0.372 * mySize_x + eY * 0.486 * mySize_y, ((pressedkeys & KEY_RIGHT) ? "key_right_inv.tga" : "key_right.tga"), '1 1 0' * 0.46 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
}
+// Handle chat as a panel (#12)
+//
+float chat_prevtime;
+void HUD_Chat(void)
+{
+ float id = 12;
+ vector pos, mySize;
+ pos = HUD_Panel_GetPos(id);
+ mySize = HUD_Panel_GetSize(id);
+
+ HUD_Panel_DrawBg(id, pos, mySize, 0);
+ float padding;
+ padding = HUD_Panel_GetPadding(id);
+ if(padding)
+ {
+ pos += '1 1 0' * padding;
+ mySize -= '2 2 0' * padding;
+ }
+
+ cvar_set("con_csqcpositioning", "1");
+
+ cvar_set("con_chatrect_x", ftos(pos_x/vid_conwidth));
+ cvar_set("con_chatrect_y", ftos(pos_y/vid_conheight));
+
+ cvar_set("con_chatwidth", ftos(mySize_x/vid_conwidth));
+ cvar_set("con_chat", ftos(floor(mySize_y/cvar("con_chatsize") - 0.5)));
+
+ if(hud_configure)
+ {
+ if(chat_prevtime != floor(time/5))
+ {
+ 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));
+ }
+ }
+}
+
/*
==================
Main HUD system
{
float i;
// x-axis
- for(i = 0; i < vid_conwidth/cvar("hud_configure_grid_x"); ++i)
+ for(i = 0; i < vid_conwidth/max(2, cvar("hud_configure_grid_x")); ++i)
{
- drawfill(eX * i * cvar("hud_configure_grid_x"), eX + eY * vid_conheight, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
+ drawfill(eX * i * max(2, cvar("hud_configure_grid_x")), eX + eY * vid_conheight, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
}
// y-axis
- for(i = 0; i < vid_conheight/cvar("hud_configure_grid_y"); ++i)
+ for(i = 0; i < vid_conheight/max(2, cvar("hud_configure_grid_y")); ++i)
{
- drawfill(eY * i * cvar("hud_configure_grid_y"), eY + eX * vid_conwidth, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
+ drawfill(eY * i * max(2, cvar("hud_configure_grid_y")), eY + eX * vid_conwidth, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
}
}
if(HUD_Panel_CheckActive(11))
if(spectatee_status > 0 || cvar("hud_pressedkeys") >= 2 || hud_configure)
HUD_DrawPressedKeys();
+ if(HUD_Panel_CheckActive(12))
+ HUD_Chat();
+ else
+ cvar_set("con_csqcpositioning", "0");
// TODO hud_'ify these
if (cvar("cl_showspeed"))