]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
ItemsTime now works even playing in warmup stage, good for people willing to improve...
authorterencehill <piuntn@gmail.com>
Mon, 28 May 2012 20:29:01 +0000 (22:29 +0200)
committerterencehill <piuntn@gmail.com>
Mon, 28 May 2012 20:29:01 +0000 (22:29 +0200)
defaultXonotic.cfg
qcsrc/client/hud.qc
qcsrc/client/waypointsprites.qc
qcsrc/server/arena.qc
qcsrc/server/cl_client.qc
qcsrc/server/command/vote.qc
qcsrc/server/t_items.qc
qcsrc/server/waypointsprites.qc

index bda516cfcf1c06647a7bfb257ad3a8dafa03e8ce..9870758c76f53a88b7aff9d6188378a73b26db23 100644 (file)
@@ -1140,7 +1140,7 @@ seta g_waypointsprite_crosshairfadedistance 150 "distance in virtual pixels from
 seta g_waypointsprite_distancefadealpha 1 "alpha multiplier near distance"
 seta g_waypointsprite_distancefadescale 0.7 "scale multiplier near the distance"
 seta g_waypointsprite_distancefadedistancemultiplier 0.5 "distance in map sizes from distance where to stop fading"
-seta g_waypointsprite_itemstime 1 "show waypoints when spectating to indicate that some important items (mega health, large armor) are about to respawn"
+seta g_waypointsprite_itemstime 1 "show waypoints to indicate that some important items (mega health, large armor) are about to respawn when spectating or playing/spectating in warmup stage"
 set g_waypointsprite_spam 0 "Debugging feature. Set to 10 and load courtfun in race mode to test."
 alias "g_waypointsprite_personal"      "impulse 30"
 alias "g_waypointsprite_personal_p"    "impulse 31"
index 2c0580e7bfa176975bf810f85afcec193ba907d3..2be8053077312b3384c4deef39fdffcd702b334e 100644 (file)
@@ -5004,7 +5004,7 @@ void HUD_ItemsTime(void)
        if(!autocvar__hud_configure)
        {
                if(!autocvar_hud_panel_itemstime) return;
-               if(spectatee_status == 0) return;
+               if(!warmup_stage && !spectatee_status) return;
 
                ItemsTime_time[0] = getstatf(STAT_ARMOR_LARGE_TIME);
                ItemsTime_time[1] = getstatf(STAT_HEALTH_MEGA_TIME);
index 0215bf2bc9ea9f096dda66457772cc8d92a534e5..d225adaff7d968838002688868364d89281ff1f6 100644 (file)
@@ -420,6 +420,8 @@ void Draw_WaypointSprite()
                case SPRITERULE_SPECTATOR:
                        if(!autocvar_g_waypointsprite_itemstime)
                                return;
+                       if(!warmup_stage && t != COLOR_SPECTATOR + 1)
+                               return;
                        spriteimage = self.netname;
                        break;
                case SPRITERULE_DEFAULT:
index ef81fd92bad7db138edb2fa1e1067d252bae875b..70a89eed8d0adb636c2a8492c270f9ad23456cba 100644 (file)
@@ -13,6 +13,7 @@ float warmup;
 
 void PutObserverInServer();
 void PutClientInServer();
+void Item_ItemsTime_Reset();
 
 float next_round;
 float redalive, bluealive, yellowalive, pinkalive;
@@ -46,6 +47,8 @@ void reset_map(float dorespawn)
 
        race_ReadyRestart();
 
+       Item_ItemsTime_Reset();
+
        for(self = world; (self = nextent(self)); )
        if(clienttype(self) == CLIENTTYPE_NOTACLIENT)
        {
index 6d31120f66ffd1fddb915aab3f90f9543d742673..bd83cc9eac2c8ea789d067874ac93b16b371312e 100644 (file)
@@ -693,8 +693,6 @@ void PutClientInServer (void)
                        return; // spawn failed
                }
 
-               Item_ItemsTime_Clear();
-
                RemoveGrapplingHook(self); // Wazat's Grappling Hook
 
                self.classname = "player";
@@ -757,6 +755,9 @@ void PutClientInServer (void)
                else
                        self.superweapons_finished = 0;
 
+               if(!inWarmupStage)
+                       Item_ItemsTime_ResetForPlayer(self);
+
                if(g_weaponarena_random)
                {
                        if(g_weaponarena_random_with_laser)
index c55eee9acc9187327f1b921c6fece0dfa3b5113a..5441f058e1ea7e89ed53d149fcbe2f4ff399da2a 100644 (file)
@@ -353,6 +353,8 @@ void ReadyRestart_force()
        // disable the warmup global for the server
        inWarmupStage = 0; // once the game is restarted the game is in match stage
 
+       Item_ItemsTime_Reset();
+
        // reset the .ready status of all players (also spectators)
        FOR_EACH_CLIENTSLOT(tmp_player) { tmp_player.ready = 0; }
        readycount = 0;
index 5762c1774be8cc99e1f435a264738d49344191d5..2f578c50c135a60f7d5f071d5f2ff1f08f228a96 100644 (file)
@@ -203,18 +203,31 @@ void Item_ItemsTime_Init()
        it_jetpack_time = -1;
        it_superweapons_time = -1;
 }
-void Item_ItemsTime_Clear()
+void Item_ItemsTime_Reset()
 {
-       self.item_armor_large_time = (it_armor_large_time == -1) ? -1 : 0;
-       self.item_health_mega_time = (it_health_mega_time == -1) ? -1 : 0;
-       self.item_invisible_time   = (it_invisible_time   == -1) ? -1 : 0;
-       self.item_speed_time       = (it_speed_time       == -1) ? -1 : 0;
-       self.item_extralife_time   = (it_extralife_time   == -1) ? -1 : 0;
-       self.item_strength_time    = (it_strength_time    == -1) ? -1 : 0;
-       self.item_shield_time      = (it_shield_time      == -1) ? -1 : 0;
-       self.item_fuelregen_time   = (it_fuelregen_time   == -1) ? -1 : 0;
-       self.item_jetpack_time     = (it_jetpack_time     == -1) ? -1 : 0;
-       self.item_superweapons_time= (it_superweapons_time== -1) ? -1 : 0;
+       it_armor_large_time = (it_armor_large_time == -1) ? -1 : 0;
+       it_health_mega_time = (it_health_mega_time == -1) ? -1 : 0;
+       it_invisible_time   = (it_invisible_time   == -1) ? -1 : 0;
+       it_speed_time       = (it_speed_time       == -1) ? -1 : 0;
+       it_extralife_time   = (it_extralife_time   == -1) ? -1 : 0;
+       it_strength_time    = (it_strength_time    == -1) ? -1 : 0;
+       it_shield_time      = (it_shield_time      == -1) ? -1 : 0;
+       it_fuelregen_time   = (it_fuelregen_time   == -1) ? -1 : 0;
+       it_jetpack_time     = (it_jetpack_time     == -1) ? -1 : 0;
+       it_superweapons_time= (it_superweapons_time== -1) ? -1 : 0;
+}
+void Item_ItemsTime_ResetForPlayer(entity e)
+{
+       e.item_armor_large_time = (it_armor_large_time == -1) ? -1 : 0;
+       e.item_health_mega_time = (it_health_mega_time == -1) ? -1 : 0;
+       e.item_invisible_time   = (it_invisible_time   == -1) ? -1 : 0;
+       e.item_speed_time       = (it_speed_time       == -1) ? -1 : 0;
+       e.item_extralife_time   = (it_extralife_time   == -1) ? -1 : 0;
+       e.item_strength_time    = (it_strength_time    == -1) ? -1 : 0;
+       e.item_shield_time      = (it_shield_time      == -1) ? -1 : 0;
+       e.item_fuelregen_time   = (it_fuelregen_time   == -1) ? -1 : 0;
+       e.item_jetpack_time     = (it_jetpack_time     == -1) ? -1 : 0;
+       e.item_superweapons_time= (it_superweapons_time== -1) ? -1 : 0;
 }
 void Item_ItemsTime_Get(entity e)
 {
@@ -297,6 +310,23 @@ void Item_ItemsTime_UpdateTime(entity e, float t)
                        break;
        }
 }
+void Item_ItemsTime_GetForAll()
+{
+       entity e;
+       if(inWarmupStage)
+       {
+               FOR_EACH_REALCLIENT(e)
+                       Item_ItemsTime_Get(e);
+       }
+       else
+       {
+               FOR_EACH_REALCLIENT(e)
+               {
+                       if (e.classname != "player")
+                               Item_ItemsTime_Get(e);
+               }
+       }
+}
 
 void Item_Respawn (void)
 {
@@ -335,11 +365,7 @@ void Item_Respawn (void)
                                        t = head.scheduledrespawntime;
                        }
                Item_ItemsTime_UpdateTime(self, t);
-               FOR_EACH_REALCLIENT(head)
-               {
-                       if (head.classname != "player")
-                               Item_ItemsTime_Get(head);
-               }
+               Item_ItemsTime_GetForAll();
        }
 
        //pointparticles(particleeffectnum("item_respawn"), self.origin + self.mins_z * '0 0 1' + '0 0 48', '0 0 0', 1);
@@ -443,11 +469,7 @@ void Item_ScheduleRespawnIn(entity e, float t)
                e.scheduledrespawntime = e.nextthink;
        }
        Item_ItemsTime_UpdateTime(e, e.scheduledrespawntime);
-       FOR_EACH_REALCLIENT(e)
-       {
-               if (e.classname != "player")
-                       Item_ItemsTime_Get(e);
-       }
+       Item_ItemsTime_GetForAll();
 }
 
 void Item_ScheduleRespawn(entity e)
index 5f9108f76fa32c52be77271324faf0c52f1d939c..840858d805dfa4ad5754270fa5c062281765ce87 100644 (file)
@@ -195,7 +195,7 @@ float WaypointSprite_visible_for_player(entity e)
        // team waypoints
        if(self.rule == SPRITERULE_SPECTATOR)
        {
-               if(e.classname == "player")
+               if(!inWarmupStage && e.classname == "player")
                        return FALSE;
        }
        else if(self.team && self.rule == SPRITERULE_DEFAULT)