Respawn durations can be changed mid-round.

This commit is contained in:
Joonas Rikkonen
2018-08-15 13:39:01 +03:00
parent 0dca8bc940
commit d0e0143308
@@ -9,10 +9,7 @@ using System.Linq;
namespace Barotrauma.Networking namespace Barotrauma.Networking
{ {
class RespawnManager : Entity, IServerSerializable class RespawnManager : Entity, IServerSerializable
{ {
private readonly float respawnInterval;
private float maxTransportTime;
public enum State public enum State
{ {
Waiting, Waiting,
@@ -66,6 +63,8 @@ namespace Barotrauma.Networking
private float respawnTimer, shuttleReturnTimer, shuttleTransportTimer; private float respawnTimer, shuttleReturnTimer, shuttleTransportTimer;
private float maxTransportTime;
private float updateReturnTimer; private float updateReturnTimer;
public Submarine RespawnShuttle public Submarine RespawnShuttle
@@ -113,15 +112,12 @@ namespace Barotrauma.Networking
{ {
respawnShuttle = null; 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<Client> GetClientsToRespawn() private List<Client> GetClientsToRespawn()
@@ -195,7 +191,7 @@ namespace Barotrauma.Networking
respawnTimer -= deltaTime; respawnTimer -= deltaTime;
if (respawnTimer <= 0.0f) if (respawnTimer <= 0.0f)
{ {
respawnTimer = respawnInterval; respawnTimer = server.RespawnInterval;
DispatchShuttle(); DispatchShuttle();
} }
@@ -243,6 +239,7 @@ namespace Barotrauma.Networking
server.CreateEntityEvent(this); server.CreateEntityEvent(this);
CountdownStarted = false; CountdownStarted = false;
maxTransportTime = server.MaxTransportTime;
shuttleReturnTimer = maxTransportTime; shuttleReturnTimer = maxTransportTime;
shuttleTransportTimer = maxTransportTime; shuttleTransportTimer = maxTransportTime;
} }
@@ -311,7 +308,7 @@ namespace Barotrauma.Networking
GameServer.Log("The respawn shuttle has left.", ServerLog.MessageType.Spawning); GameServer.Log("The respawn shuttle has left.", ServerLog.MessageType.Spawning);
server.CreateEntityEvent(this); server.CreateEntityEvent(this);
respawnTimer = respawnInterval; respawnTimer = server.RespawnInterval;
CountdownStarted = false; CountdownStarted = false;
} }
} }