]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
mod icons, still a bit unfinished but in the interest of getting other importart...
authorFruitieX <rasse@rasse-lappy.localdomain>
Sun, 16 May 2010 17:56:34 +0000 (20:56 +0300)
committerFruitieX <rasse@rasse-lappy.localdomain>
Sun, 16 May 2010 17:56:34 +0000 (20:56 +0300)
defaultXonotic.cfg
gfx/hud/old/ammo_bullets.tga [new file with mode: 0644]
gfx/hud/old/ammo_cells.tga [new file with mode: 0644]
gfx/hud/old/ammo_current_bg.tga [new file with mode: 0644]
gfx/hud/old/ammo_rocket.tga [new file with mode: 0644]
gfx/hud/old/ammo_shells.tga [new file with mode: 0644]
gfx/scoreboard/accuracy_bg.tga [new file with mode: 0644]
qcsrc/client/hud.qc
qcsrc/client/hud.qh

index 2acf80febb76b3871b5bda147894113cad546025..77cec713d84106e6f561e9f1b845ea33b070f04b 100644 (file)
@@ -1459,6 +1459,7 @@ seta hud_modicons_bg_color "" "optional R G B string of the background color, ot
 seta hud_modicons_bg_alpha 0 "if set to something else than 0 = override default alpha"
 seta hud_modicons_bg_border 0 "if set to something else than 0 = override size of border around the background"
 seta hud_modicons_bg_padding 0 "padding of contents from border"
+seta hud_progressbar_nexball_color "0.7 0.1 0" "R G B vector of the progress bar background color"
 
 seta hud_pressedkeys 1 "enable/disable this panel"
 seta hud_pressedkeys_pos "-0.571569 -0.265625" "position of this base of the panel"
diff --git a/gfx/hud/old/ammo_bullets.tga b/gfx/hud/old/ammo_bullets.tga
new file mode 100644 (file)
index 0000000..394fa05
Binary files /dev/null and b/gfx/hud/old/ammo_bullets.tga differ
diff --git a/gfx/hud/old/ammo_cells.tga b/gfx/hud/old/ammo_cells.tga
new file mode 100644 (file)
index 0000000..5365314
Binary files /dev/null and b/gfx/hud/old/ammo_cells.tga differ
diff --git a/gfx/hud/old/ammo_current_bg.tga b/gfx/hud/old/ammo_current_bg.tga
new file mode 100644 (file)
index 0000000..7f3a2af
Binary files /dev/null and b/gfx/hud/old/ammo_current_bg.tga differ
diff --git a/gfx/hud/old/ammo_rocket.tga b/gfx/hud/old/ammo_rocket.tga
new file mode 100644 (file)
index 0000000..e2b4df2
Binary files /dev/null and b/gfx/hud/old/ammo_rocket.tga differ
diff --git a/gfx/hud/old/ammo_shells.tga b/gfx/hud/old/ammo_shells.tga
new file mode 100644 (file)
index 0000000..24e5c72
Binary files /dev/null and b/gfx/hud/old/ammo_shells.tga differ
diff --git a/gfx/scoreboard/accuracy_bg.tga b/gfx/scoreboard/accuracy_bg.tga
new file mode 100644 (file)
index 0000000..2974c1d
Binary files /dev/null and b/gfx/scoreboard/accuracy_bg.tga differ
index 16dbc6bc68874ae4070217538fba4a9ad8117bc7..52583e584d67296768a6fe4ac25c3453c75d9e24 100644 (file)
@@ -80,6 +80,10 @@ void drawpic_skin(vector pos, string pic, vector sz, vector color, float alpha,
        drawpic(pos, strcat("gfx/hud/", cvar_string("hud_skin"), "/", pic), sz, color, alpha, drawflag);
 }
 
+void drawpic_skin_expanding(vector pos, string pic, vector sz, vector rgb, float alpha, float flag, float fadelerp) {
+       drawpic_expanding(pos, strcat("gfx/hud/", cvar_string("hud_skin"), "/", pic), sz, rgb, alpha, flag, fadelerp);
+}
+
 // return HUD background color
 vector HUD_GetBgColor()
 {
@@ -587,6 +591,7 @@ void HUD_Panel_ExportCfg(string cfgname)
                fputs(fh, strcat("seta hud_progressbar_health_color \"", cvar_string("hud_progressbar_health_color"), "\"", "\n"));
                fputs(fh, strcat("seta hud_progressbar_armor_color \"", cvar_string("hud_progressbar_armor_color"), "\"", "\n"));
                fputs(fh, strcat("seta hud_progressbar_fuel_color \"", cvar_string("hud_progressbar_fuel_color"), "\"", "\n"));
+               fputs(fh, strcat("seta hud_progressbar_nexball_color \"", cvar_string("hud_progressbar_nexball_color"), "\"", "\n"));
                fputs(fh, "\n");
 
                // common cvars for all panels
@@ -2206,10 +2211,33 @@ void HUD_Radar(void)
        drawresetcliparea();
 };
 
-todo merge!
-void HUD_Mod_Race (void) {
+// Score (#7)
+//
+void HUD_Score()
+{
+       float id = 7;
+       vector pos, mySize;
+       pos = HUD_Panel_GetPos(id);
+       mySize = HUD_Panel_GetSize(id);
+
+       HUD_Panel_DrawBg(id, pos, mySize);
+       float padding;
+       padding = cvar(strcat("hud_", HUD_Panel_GetName(id), "_bg_padding"));
+       if(padding)
+       {
+               pos += '1 1 0' * padding;
+               mySize -= '2 2 0' * padding;
+       }
+
+       float score, distribution, leader;
+       float score_len, distr_len;
+       vector score_pos, secondary_score_pos, distribution_color;
+       entity tm, pl, me;
+       me = (spectatee_status > 0) ? playerslots[spectatee_status - 1] : playerslots[player_localentnum - 1];
+
+       // TODO... this (race part) still uses constant coordinates :/
        if((scores_flags[ps_primary] & SFL_TIME) && !teamplay) { // race/cts record display on HUD
-               pl = players.sort_next;
+               /*pl = players.sort_next;
                if(pl == me)
                        pl = pl.sort_next;
                if(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)
@@ -2260,34 +2288,8 @@ void HUD_Mod_Race (void) {
 
                HUD_DrawXNum(bottomright - '0 32 0' - TIME_DECIMALS * '30 0 0' - '132 0 0', racemin, -2, 0, 30, '1 1 1', 0, 0, hud_alpha_fg, DRAWFLAG_NORMAL);
                drawpic_skin(bottomright - '0 32 0' - TIME_DECIMALS * '30 0 0' - '84 0 0', "num_colon", '30 30 0', '1 1 1', hud_alpha_fg, DRAWFLAG_ADDITIVE);
-       }
-}
-
-// Score (#7)
-//
-void HUD_Score()
-{
-       float id = 7;
-       vector pos, mySize;
-       pos = HUD_Panel_GetPos(id);
-       mySize = HUD_Panel_GetSize(id);
-
-       HUD_Panel_DrawBg(id, pos, mySize);
-       float padding;
-       padding = cvar(strcat("hud_", HUD_Panel_GetName(id), "_bg_padding"));
-       if(padding)
-       {
-               pos += '1 1 0' * padding;
-               mySize -= '2 2 0' * padding;
-       }
-
-       float score, distribution, leader;
-       float score_len, distr_len;
-       vector score_pos, secondary_score_pos, distribution_color;
-       entity tm, pl, me;
-       me = (spectatee_status > 0) ? playerslots[spectatee_status - 1] : playerslots[player_localentnum - 1];
-
-       if (!teamplay) { // non-teamgames
+               */
+       } else if (!teamplay) { // non-teamgames
                // me vector := [team/connected frags id]
                pl = players.sort_next;
                if(pl == me)
@@ -2699,13 +2701,13 @@ void HUD_Mod_CTF(vector pos, vector mySize)
 
        f = bound(0, redflag_statuschange_elapsedtime*2, 1);
        if(red_icon_prevstatus && f < 1)
-               drawpic_expanding(redflag_pos, red_icon_prevstatus, '1 1 0' * mySize_y, '1 1 1', hud_alpha_fg * red_alpha_prevstatus, DRAWFLAG_NORMAL, f);
+               drawpic_skin_expanding(redflag_pos, red_icon_prevstatus, '1 1 0' * mySize_y, '1 1 1', hud_alpha_fg * red_alpha_prevstatus, DRAWFLAG_NORMAL, f);
        if(red_icon)
                drawpic_skin(redflag_pos, red_icon, '1 1 0' * mySize_y, '1 1 1', hud_alpha_fg * red_alpha * f, DRAWFLAG_NORMAL);
 
        f = bound(0, blueflag_statuschange_elapsedtime*2, 1);
        if(blue_icon_prevstatus && f < 1)
-               drawpic_expanding(blueflag_pos, blue_icon_prevstatus, '1 1 0' * mySize_y, '1 1 1', hud_alpha_fg * blue_alpha_prevstatus, DRAWFLAG_NORMAL, f);
+               drawpic_skin_expanding(blueflag_pos, blue_icon_prevstatus, '1 1 0' * mySize_y, '1 1 1', hud_alpha_fg * blue_alpha_prevstatus, DRAWFLAG_NORMAL, f);
        if(blue_icon)
                drawpic_skin(blueflag_pos, blue_icon, '1 1 0' * mySize_y, '1 1 1', hud_alpha_fg * blue_alpha * f, DRAWFLAG_NORMAL);
 }
@@ -2718,22 +2720,25 @@ void HUD_Mod_KH_Reset(void)
        kh_runheretime = 0;
 }
 
-void HUD_Mod_KH(void)
+void HUD_Mod_KH(vector pos, vector mySize)
 {
        float kh_keys;
        float keyteam;
        float a, aa;
        vector p, pa, kh_size, kh_asize;
 
-       p_x = 6;
-       p_y = vid_conheight - 34 - 3;
-       p_z = 0;
+       p_x = pos_x;
+       p_y = pos_y + 0.25 * mySize_y;
 
        kh_keys = getstati(STAT_KH_KEYS);
 
-       kh_size = '19 34 0';
-       kh_asize = '19 10 0';
-       pa = p + '0 -10 0';
+       kh_size_x = mySize_x * 0.25;
+       kh_size_y = 0.75 * mySize_y;
+
+       pa = p - eY * 0.25 * mySize_y;
+
+       kh_asize_x = mySize_x * 0.25;
+       kh_asize_y = mySize_y * 0.25;
 
        float i, key;
 
@@ -2786,16 +2791,16 @@ void HUD_Mod_KH(void)
                        switch(keyteam)
                        {
                                case COLOR_TEAM1:
-                                       drawpic (pa, "kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(pa, "kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                                case COLOR_TEAM2:
-                                       drawpic (pa, "kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(pa, "kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                                case COLOR_TEAM3:
-                                       drawpic (pa, "kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(pa, "kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                                case COLOR_TEAM4:
-                                       drawpic (pa, "kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(pa, "kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                                default:
                                        break;
@@ -2803,46 +2808,32 @@ void HUD_Mod_KH(void)
                        switch(i) // YAY! switch(i) inside a for loop for i. DailyWTF, here we come!
                        {
                                case 0:
-                                       drawpic (p, "kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(p, "kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                                case 1:
-                                       drawpic (p, "kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(p, "kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                                case 2:
-                                       drawpic (p, "kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(p, "kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                                case 3:
-                                       drawpic (p, "kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
+                                       drawpic_skin(p, "kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% alpha key
                                        break;
                        }
                }
-               p_x += 24;
-               pa_x += 24;
+               p_x += 0.25 * mySize_x;
+               pa_x += 0.25 * mySize_x;
        }
 }
 
-// Nexball HUD modicon section
-#define NBPB_SIZE '96 38 0'
-#define NBPB_BT 2                   //thickness
-#define NBPB_BRGB '1 1 1'
-#define NBPB_BALPH 1                //alpha
-#define NBPB_BFLAG DRAWFLAG_NORMAL
-#define NBPB_IALPH 0.4
-#define NBPB_IFLAG DRAWFLAG_NORMAL
-#define NBPB_IRGB '0.7 0.1 0'
-
-void HUD_Mod_NexBall(void)
+// Nexball HUD mod icon
+void HUD_Mod_NexBall(vector pos, vector mySize)
 {
        float stat_items, nb_pb_starttime, dt, p;
-       vector pos;
 
        stat_items = getstati(STAT_ITEMS);
        nb_pb_starttime = getstatf(STAT_NB_METERSTART);
 
-       pos_x = 4;
-       pos_y = vid_conheight - 42;
-       pos_z = 0;
-
        //Manage the progress bar if any
        if (nb_pb_starttime > 0)
        {
@@ -2853,89 +2844,26 @@ void HUD_Mod_NexBall(void)
                if (p > 1)
                        p = 2 - p;
 
-               s = NBPB_SIZE;
                //Draw the filling
-               drawfill(pos, p * s_x * eX + s_y * eY, NBPB_IRGB, NBPB_IALPH, NBPB_IFLAG);
-
-               //Draw the box
-               s = NBPB_SIZE;
-               drawline(NBPB_BT, pos    , pos + eX * s_x, NBPB_BRGB, NBPB_BALPH, NBPB_BFLAG);
-               drawline(NBPB_BT, pos    , pos + eY * s_y, NBPB_BRGB, NBPB_BALPH, NBPB_BFLAG);
-               drawline(NBPB_BT, pos + s, pos + eX * s_x, NBPB_BRGB, NBPB_BALPH, NBPB_BFLAG);
-               drawline(NBPB_BT, pos + s, pos + eY * s_y, NBPB_BRGB, NBPB_BALPH, NBPB_BFLAG);
+               drawpic_skin(pos, "statusbar", eX * p * mySize_x + eY * mySize_y, HUD_Panel_GetProgressBarColor("nexball"), cvar("hud_progressbar_alpha"), DRAWFLAG_NORMAL);
        }
 
-       pos_x += 12; //horizontal margin to the picture
-       pos_y += 2; //vertical margin to the picture
+       pos_x += 0.5 * mySize_x - 0.5 * mySize_y; //horizontal margin to the picture
 
        if (stat_items & IT_KEY1)
-               drawpic_skin(pos, "nexball_carrying", '80 34 0', '1 1 1', 1, DRAWFLAG_NORMAL);
+               drawpic_skin(pos, "nexball_carrying", '1 1 0' * mySize_y, '1 1 1', 1, DRAWFLAG_NORMAL);
 }
 
-float race_status_time;
-float race_status_prev;
-string race_status_name_prev;
-void HUD_DrawRaceStatus(vector pos)
-{
-       if (race_status != race_status_prev || race_status_name != race_status_name_prev) {
-               race_status_time = time + 5;
-               race_status_prev = race_status;
-               if (race_status_name_prev)
-                       strunzone(race_status_name_prev);
-               race_status_name_prev = strzone(race_status_name);
-       }
-
-       float a;
-       a = bound(0, race_status_time - time, 1);
-
-       string s;
-       s = textShortenToWidth(race_status_name, 120, '10 10 0', stringwidth_colors);
-
-       float rank;
-       if(race_status > 0)
-               rank = race_CheckName(race_status_name);
-       string rankname;
-       rankname = race_PlaceName(rank);
-
-       if(race_status == 0)
-               drawpic_skin(pos, "race_newfail", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-       else if(race_status == 1) {
-               drawpic_skin(pos, "race_newtime", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-               drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-               drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', hud_alpha_fg * 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_alpha_fg * a, DRAWFLAG_NORMAL);
-               else
-                       drawpic_skin(pos, "race_newrankyellow", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-               drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-               drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-       } else if(race_status == 3) {
-               drawpic_skin(pos, "race_newrecordserver", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-               drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-               drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
-       }
-
-       if (race_status_time - time <= 0) {
-               race_status_prev = -1;
-               race_status = -1;
-               if(race_status_name)
-                       strunzone(race_status_name);
-               race_status_name = string_null;
-               if(race_status_name_prev)
-                       strunzone(race_status_name_prev);
-               race_status_name_prev = string_null;
-       }
-}
-
-foo
-// merge with above
-// Race/CTS HUD modicon section
+// Race/CTS HUD mod icons
 float crecordtime_prev; // last remembered crecordtime
 float crecordtime_change_time; // time when crecordtime last changed
 float srecordtime_prev; // last remembered srecordtime
 float srecordtime_change_time; // time when srecordtime last changed
-void CSQC_race_hud(void)
+
+float race_status_time;
+float race_status_prev;
+string race_status_name_prev;
+void HUD_Mod_Race(vector pos, vector mySize)
 {
        entity me;
        me = playerslots[player_localentnum - 1];
@@ -2947,9 +2875,6 @@ void CSQC_race_hud(void)
                return; // no records in the actual race
 
        drawfont = hud_bigfont;
-       vector pos;
-       pos_x = 2;
-       pos_y = vid_conheight - 48;
 
        // clientside personal record
        string rr;
@@ -2976,17 +2901,16 @@ void CSQC_race_hud(void)
        f = time - crecordtime_change_time;
 
        if (f > 1) {
-               drawstring(pos, "Personal best ", '10 10 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
-               drawstring(pos + '0 10 0', TIME_ENCODED_TOSTRING(t),'14 14 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring(pos, "Personal best ", '1 1 0' * 0.15 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring(pos + eY * 0.2 * mySize_y, TIME_ENCODED_TOSTRING(t), '1 1 0' * 0.2 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
        } else {
-               drawstring(pos, "Personal best ", '10 10 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
-               drawstring(pos + '0 10 0', TIME_ENCODED_TOSTRING(t),'14 14 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
-               drawstring_expanding(pos, "Personal best ", '10 10 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
-               drawstring_expanding(pos + '0 10 0', TIME_ENCODED_TOSTRING(t),'14 14 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
+               drawstring(pos, "Personal best ", '1 1 0' * 0.15 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring(pos + eY * 0.2 * mySize_y, TIME_ENCODED_TOSTRING(t), '1 1 0' * 0.2 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring_expanding(pos, "Personal best ", '1 1 0' * 0.15 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
+               drawstring_expanding(pos + eY * 0.2 * mySize_y, TIME_ENCODED_TOSTRING(t), '1 1 0' * 0.2 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
        }
 
        // server record
-       pos_y += 26;
        t = race_server_record;
        if(t != srecordtime_prev) {
                srecordtime_prev = t;
@@ -2995,13 +2919,65 @@ void CSQC_race_hud(void)
        f = time - srecordtime_change_time;
 
        if (f > 1) {
-               drawstring(pos, "Server best ", '10 10 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
-               drawstring(pos + '0 10 0', TIME_ENCODED_TOSTRING(t),'14 14 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring(pos + eY * 0.5 * mySize_y, "Server best ", '1 1 0' * 0.15 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring(pos + eY * 0.5 * mySize_y + eY * 0.2 * mySize_y, TIME_ENCODED_TOSTRING(t),'1 1 0' * 0.2 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
        } else {
-               drawstring(pos, "Server best ", '10 10 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
-               drawstring(pos + '0 10 0', TIME_ENCODED_TOSTRING(t),'14 14 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
-               drawstring_expanding(pos, "Server best ", '10 10 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
-               drawstring_expanding(pos + '0 10 0', TIME_ENCODED_TOSTRING(t),'14 14 0', '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
+               drawstring(pos + eY * 0.5 * mySize_y, "Server best ", '1 1 0' * 0.15 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring(pos + eY * 0.5 * mySize_y + eY * 0.2 * mySize_y, TIME_ENCODED_TOSTRING(t),'1 1 0' * 0.2 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL);
+               drawstring_expanding(pos + eY * 0.5 * mySize_y, "Server best ", '1 1 0' * 0.15 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
+               drawstring_expanding(pos + eY * 0.5 * mySize_y + eY * 0.2 * mySize_y, TIME_ENCODED_TOSTRING(t),'1 1 0' * 0.2 * mySize_y, '1 1 1', hud_alpha_fg, DRAWFLAG_NORMAL, f);
+       }
+
+       if (race_status != race_status_prev || race_status_name != race_status_name_prev) {
+               race_status_time = time + 5;
+               race_status_prev = race_status;
+               if (race_status_name_prev)
+                       strunzone(race_status_name_prev);
+               race_status_name_prev = strzone(race_status_name);
+       }
+
+       pos_x += mySize_x/2;
+       // race "awards"
+       float a;
+       a = bound(0, race_status_time - time, 1);
+
+       string s;
+       s = textShortenToWidth(race_status_name, 120, '10 10 0', stringwidth_colors);
+
+       float rank;
+       if(race_status > 0)
+               rank = race_CheckName(race_status_name);
+       string rankname;
+       rankname = race_PlaceName(rank);
+
+       if(race_status == 0)
+               drawpic_skin(pos, "race_newfail", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+       else if(race_status == 1) {
+               drawpic_skin(pos, "race_newtime", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+               drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+               drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', hud_alpha_fg * 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_alpha_fg * a, DRAWFLAG_NORMAL);
+               else
+                       drawpic_skin(pos, "race_newrankyellow", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+               drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+               drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+       } else if(race_status == 3) {
+               drawpic_skin(pos, "race_newrecordserver", '80 80 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+               drawcolorcodedstring(pos + '40 80 0' - eX * stringwidth(s, TRUE, '5 0 0'), s, '10 10 0', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+               drawstring(pos + '40 20 0' - eX * stringwidth(rankname, TRUE, '7 0 0'), rankname, '14 14 0', '1 1 1', hud_alpha_fg * a, DRAWFLAG_NORMAL);
+       }
+
+       if (race_status_time - time <= 0) {
+               race_status_prev = -1;
+               race_status = -1;
+               if(race_status_name)
+                       strunzone(race_status_name);
+               race_status_name = string_null;
+               if(race_status_name_prev)
+                       strunzone(race_status_name_prev);
+               race_status_name_prev = string_null;
        }
        drawfont = hud_font;
 }
@@ -3024,13 +3000,13 @@ void HUD_ModIcons(void)
 
        // TODO... well make them work in a panel etc
        if(gametype == GAME_KEYHUNT)
-               HUD_Mod_KH();
+               HUD_Mod_KH(pos, mySize);
        else if(gametype == GAME_CTF)
                HUD_Mod_CTF(pos, mySize);
        else if(gametype == GAME_NEXBALL)
-               HUD_Mod_NexBall();
+               HUD_Mod_NexBall(pos, mySize);
        else if(gametype == GAME_CTS || gametype == GAME_RACE)
-               HUD_Mod_Race();
+               HUD_Mod_Race(pos, mySize);
 }
 
 // Draw pressed keys (#11)
index 77855ae3a3bfb2d7209c55d10212226300c81b0f..e3c0c9a973dd850ebac7b144781a514f4aa1e50b 100644 (file)
@@ -1,11 +1,5 @@
 float panel_cnt = 12; // NOTE: IDs start from 0!
 
-void CSQC_kh_hudreset();
-void CSQC_kh_hud();
-void CSQC_ctf_hudreset();
-void CSQC_ctf_hud();
-void CSQC_nb_hud();
-void CSQC_race_hud();
 const float BORDER_MULTIPLIER = 0.25;
 float hud_color_bg_team;
 float scoreboard_bottom;