Client LuaCsForBarotrauma
BarotraumaClient/ClientSource/Networking/RespawnManager.cs
1 using System;
2 
3 namespace Barotrauma.Networking
4 {
5  partial class RespawnManager
6  {
7  private DateTime lastShuttleLeavingWarningTime;
8 
9  public int PendingRespawnCount
10 
11  {
12  get; private set;
13  }
14 
16  {
17  get; private set;
18  }
19 
20  public bool ForceSpawnInMainSub
21  {
22  get; private set;
23  }
24 
25  public static void ShowDeathPromptIfNeeded(float delay = 1.0f)
26  {
27  if (UseDeathPrompt)
28  {
29  DeathPrompt.Create(delay);
30  }
31  }
32 
33  partial void UpdateTransportingProjSpecific(float deltaTime)
34  {
36  if (!ReturnCountdownStarted) { return; }
37 
38  //show a warning when there's 20 seconds until the shuttle leaves
39  if ((ReturnTime - DateTime.Now).TotalSeconds < 20.0f &&
40  (DateTime.Now - lastShuttleLeavingWarningTime).TotalSeconds > 30.0f)
41  {
42  lastShuttleLeavingWarningTime = DateTime.Now;
43  GameMain.Client.AddChatMessage("ServerMessage.ShuttleLeaving", ChatMessageType.Server);
44  }
45  }
46 
47  public void ClientEventRead(IReadMessage msg, float sendingTime)
48  {
49  bool respawnPromptPending = false;
50  var newState = (State)msg.ReadRangedInteger(0, Enum.GetNames(typeof(State)).Length);
51  switch (newState)
52  {
53  case State.Transporting:
55  maxTransportTime = msg.ReadSingle();
56  float transportTimeLeft = msg.ReadSingle();
57 
58  ReturnTime = DateTime.Now + new TimeSpan(0, 0, 0, 0, milliseconds: (int)(transportTimeLeft * 1000.0f));
60  if (CurrentState != newState)
61  {
62  CoroutineManager.StopCoroutines("forcepos");
63  }
64  break;
65  case State.Waiting:
68  respawnPromptPending = msg.ReadBoolean();
70  ResetShuttle();
71  float newRespawnTime = msg.ReadSingle();
72  RespawnTime = DateTime.Now + new TimeSpan(0, 0, 0, 0, milliseconds: (int)(newRespawnTime * 1000.0f));
73  break;
74  case State.Returning:
76  break;
77  }
78  CurrentState = newState;
79 
80  if (respawnPromptPending)
81  {
82  GameMain.Client.HasSpawned = true;
83  DeathPrompt.Create(delay: 1.0f);
84  }
85 
86  msg.ReadPadBits();
87  }
88  }
89 }
Submarine Submarine
Definition: Entity.cs:53
static GameClient Client
Definition: GameMain.cs:188
DateTime RespawnTime
When will the shuttle be dispatched with respawned characters
DateTime ReturnTime
When will the sub start heading back out of the level
int ReadRangedInteger(int min, int max)