From: terencehill Date: Mon, 28 May 2012 20:29:01 +0000 (+0200) Subject: ItemsTime now works even playing in warmup stage, good for people willing to improve... X-Git-Tag: xonotic-v0.8.1~12^2~43 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=77d0bcc171007756919223b2bee77cabb97ed7dc;p=xonotic%2Fxonotic-data.pk3dir.git ItemsTime now works even playing in warmup stage, good for people willing to improve their timing skills --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index bda516cfc..9870758c7 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -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" diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 2c0580e7b..2be805307 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -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); diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 0215bf2bc..d225adaff 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -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: diff --git a/qcsrc/server/arena.qc b/qcsrc/server/arena.qc index ef81fd92b..70a89eed8 100644 --- a/qcsrc/server/arena.qc +++ b/qcsrc/server/arena.qc @@ -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) { diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 6d31120f6..bd83cc9ea 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -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) diff --git a/qcsrc/server/command/vote.qc b/qcsrc/server/command/vote.qc index c55eee9ac..5441f058e 100644 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@ -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; diff --git a/qcsrc/server/t_items.qc b/qcsrc/server/t_items.qc index 5762c1774..2f578c50c 100644 --- a/qcsrc/server/t_items.qc +++ b/qcsrc/server/t_items.qc @@ -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) diff --git a/qcsrc/server/waypointsprites.qc b/qcsrc/server/waypointsprites.qc index 5f9108f76..840858d80 100644 --- a/qcsrc/server/waypointsprites.qc +++ b/qcsrc/server/waypointsprites.qc @@ -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)