From d0e014330807ea0f9891463b479a6dd59c45a9e9 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 15 Aug 2018 13:39:01 +0300 Subject: [PATCH] Respawn durations can be changed mid-round. --- .../Source/Networking/RespawnManager.cs | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs b/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs index 227e86c83..516a42aef 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs @@ -9,10 +9,7 @@ using System.Linq; namespace Barotrauma.Networking { class RespawnManager : Entity, IServerSerializable - { - private readonly float respawnInterval; - private float maxTransportTime; - + { public enum State { Waiting, @@ -66,6 +63,8 @@ namespace Barotrauma.Networking private float respawnTimer, shuttleReturnTimer, shuttleTransportTimer; + private float maxTransportTime; + private float updateReturnTimer; public Submarine RespawnShuttle @@ -113,15 +112,12 @@ namespace Barotrauma.Networking { respawnShuttle = null; } - - var server = networkMember as GameServer; - if (server != null) - { - respawnInterval = server.RespawnInterval; - maxTransportTime = server.MaxTransportTime; - } - respawnTimer = respawnInterval; + if (networkMember is GameServer server) + { + respawnTimer = server.RespawnInterval; + maxTransportTime = server.MaxTransportTime; + } } private List GetClientsToRespawn() @@ -195,7 +191,7 @@ namespace Barotrauma.Networking respawnTimer -= deltaTime; if (respawnTimer <= 0.0f) { - respawnTimer = respawnInterval; + respawnTimer = server.RespawnInterval; DispatchShuttle(); } @@ -243,6 +239,7 @@ namespace Barotrauma.Networking server.CreateEntityEvent(this); CountdownStarted = false; + maxTransportTime = server.MaxTransportTime; shuttleReturnTimer = maxTransportTime; shuttleTransportTimer = maxTransportTime; } @@ -311,7 +308,7 @@ namespace Barotrauma.Networking GameServer.Log("The respawn shuttle has left.", ServerLog.MessageType.Spawning); server.CreateEntityEvent(this); - respawnTimer = respawnInterval; + respawnTimer = server.RespawnInterval; CountdownStarted = false; } }