]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/gamemodes/gamemode/survival/cl_survival.qc
Merge branch 'master' into Mario/survival
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / gamemodes / gamemode / survival / cl_survival.qc
index 1fede80db7fd4f321502aa1bbe0f09b7b414e804..83893e69d3e55109e6d3d3610d93c7db3a204a07 100644 (file)
@@ -1,5 +1,6 @@
 #include "cl_survival.qh"
 
+#include <client/draw.qh>
 #include <client/hud/panel/modicons.qh>
 
 void HUD_Mod_Survival(vector pos, vector mySize)
@@ -28,8 +29,30 @@ void HUD_Mod_Survival(vector pos, vector mySize)
                return;
        }
 
+       string time_text = string_null;
+       vector timer_color = '1 1 1';
+       if(!STAT(GAME_STOPPED) && !warmup_stage && STAT(SURVIVAL_ROUNDTIMER) > 0)
+       {
+               float timeleft = max(0, STAT(SURVIVAL_ROUNDTIMER) - time);
+               timeleft = ceil(timeleft);
+               float minutesLeft = floor(timeleft / 60);
+               time_text = seconds_tostring(timeleft);
+               if(intermission_time || minutesLeft >= 5 || warmup_stage || STAT(SURVIVAL_ROUNDTIMER) == 0)
+                       timer_color = '1 1 1'; //white
+               else if(minutesLeft >= 1)
+                       timer_color = '1 1 0'; //yellow
+               else
+                       timer_color = '1 0 0'; //red
+       }
+
        //drawpic_aspect_skin(pos, player_icon, vec2(0.5 * mySize.x, mySize.y), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
-       drawstring_aspect(pos, player_text, vec2(mySize.x, mySize.y), player_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+       if(!time_text)
+               drawstring_aspect(pos, player_text, vec2(mySize.x, mySize.y), player_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+       else
+       {
+               drawstring_aspect(pos, player_text, vec2(0.5 * mySize.x, mySize.y), player_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+               drawstring_aspect(pos + eX * (0.5 * mySize.x), time_text, vec2(0.5 * mySize.x, mySize.y), timer_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+       }
 }
 
 REGISTER_MUTATOR(cl_sv, true);
@@ -51,3 +74,9 @@ MUTATOR_HOOKFUNCTION(cl_sv, ForcePlayercolors_Skip, CBC_ORDER_LAST)
        player.colormap = 1024 + plcolor;
        return true;
 }
+
+MUTATOR_HOOKFUNCTION(cl_sv, DrawScoreboard_Force)
+{
+       // show the scoreboard when the round ends, so players can see who the hunter was
+       return STAT(GAME_STOPPED);
+}