diff --git a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs index 9ba45a475..aafe2d4ac 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/GameClient.cs @@ -91,6 +91,7 @@ namespace Barotrauma.Networking fileReceiver = new FileReceiver(); fileReceiver.OnFinished += OnFileReceived; + fileReceiver.OnTransferFailed += OnTransferFailed; characterInfo = new CharacterInfo(Character.HumanConfigFile, name,Gender.None,null); characterInfo.Job = null; @@ -765,7 +766,7 @@ namespace Barotrauma.Networking myCharacter = null; foreach (Client c in otherClients) { - c.inGame = false; + c.InGame = false; c.Character = null; } yield return CoroutineStatus.Success; @@ -908,7 +909,7 @@ namespace Barotrauma.Networking } ConnectedClients.Add(newClient); - GameMain.NetLobbyScreen.AddPlayer(newClient.name); + GameMain.NetLobbyScreen.AddPlayer(newClient.Name); } Voting.AllowSubVoting = allowSubVoting; @@ -1142,6 +1143,14 @@ namespace Barotrauma.Networking } } + private void OnTransferFailed(FileReceiver.FileTransferIn transfer) + { + if (transfer.FileType == FileTransferType.CampaignSave) + { + GameMain.Client.RequestFile(FileTransferType.CampaignSave, null, null); + } + } + public void CreateEntityEvent(IClientSerializable entity, object[] extraData) { entityEventManager.CreateEvent(entity, extraData); diff --git a/Barotrauma/BarotraumaClient/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaClient/Source/Networking/GameServer.cs index 6179ce559..f146214e8 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/GameServer.cs @@ -105,7 +105,7 @@ namespace Barotrauma.Networking if (y >= startY && y < startY + height - 120) { - GUI.SmallFont.DrawString(spriteBatch, c.name + " (" + c.Connection.RemoteEndPoint.Address.ToString() + ")", new Vector2(x + 10, y), clientColor); + GUI.SmallFont.DrawString(spriteBatch, c.Name + " (" + c.Connection.RemoteEndPoint.Address.ToString() + ")", new Vector2(x + 10, y), clientColor); GUI.SmallFont.DrawString(spriteBatch, "Ping: " + (int)(c.Connection.AverageRoundtripTime * 1000.0f) + " ms", new Vector2(x + 20, y + 10), clientColor); } if (y + 25 >= startY && y < startY + height - 130) GUI.SmallFont.DrawString(spriteBatch, "Resent messages: " + c.Connection.Statistics.ResentMessages, new Vector2(x + 20, y + 20), clientColor); @@ -130,7 +130,7 @@ namespace Barotrauma.Networking { var transfers = fileSender.ActiveTransfers.FindAll(t => t.Connection == client.Connection); - var clientNameBox = GameMain.NetLobbyScreen.PlayerList.FindChild(client.name); + var clientNameBox = GameMain.NetLobbyScreen.PlayerList.FindChild(client.Name); var clientInfo = clientNameBox.FindChild("filetransfer"); if (clientInfo == null) diff --git a/Barotrauma/BarotraumaClient/Source/Networking/GameServerSettings.cs b/Barotrauma/BarotraumaClient/Source/Networking/GameServerSettings.cs index c3b2afca4..7c694d39a 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/GameServerSettings.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/GameServerSettings.cs @@ -473,27 +473,27 @@ namespace Barotrauma.Networking { GUIFrame frame = new GUIFrame(new Rectangle(0, 0, 0, 40), Color.Transparent, null, cList); frame.Padding = new Vector4(5.0f, 5.0f, 5.0f, 5.0f); - frame.Color = (c.inGame && c.Character != null && !c.Character.IsDead) ? Color.Gold * 0.2f : Color.Transparent; + frame.Color = (c.InGame && c.Character != null && !c.Character.IsDead) ? Color.Gold * 0.2f : Color.Transparent; frame.HoverColor = Color.LightGray * 0.5f; frame.SelectedColor = Color.Gold * 0.5f; GUITextBlock textBlock = new GUITextBlock( new Rectangle(40, 0, 0, 25), - c.name + " (" + c.Connection.RemoteEndPoint.Address.ToString() + ")", + c.Name + " (" + c.Connection.RemoteEndPoint.Address.ToString() + ")", Color.Transparent, Color.White, Alignment.Left, Alignment.Left, null, frame); var banButton = new GUIButton(new Rectangle(-110, 0, 100, 20), "Ban", Alignment.Right | Alignment.CenterY, "", frame); - banButton.UserData = c.name; + banButton.UserData = c.Name; banButton.OnClicked = GameMain.NetLobbyScreen.BanPlayer; var rangebanButton = new GUIButton(new Rectangle(-220, 0, 100, 20), "Ban range", Alignment.Right | Alignment.CenterY, "", frame); - rangebanButton.UserData = c.name; + rangebanButton.UserData = c.Name; rangebanButton.OnClicked = GameMain.NetLobbyScreen.BanPlayerRange; var kickButton = new GUIButton(new Rectangle(0, 0, 100, 20), "Kick", Alignment.Right | Alignment.CenterY, "", frame); - kickButton.UserData = c.name; + kickButton.UserData = c.Name; kickButton.OnClicked = GameMain.NetLobbyScreen.KickPlayer; textBlock.Padding = new Vector4(5.0f, 0.0f, 5.0f, 0.0f); diff --git a/Barotrauma/BarotraumaClient/Source/Networking/WhiteList.cs b/Barotrauma/BarotraumaClient/Source/Networking/WhiteList.cs index a60f7ed6f..47850ed38 100644 --- a/Barotrauma/BarotraumaClient/Source/Networking/WhiteList.cs +++ b/Barotrauma/BarotraumaClient/Source/Networking/WhiteList.cs @@ -30,9 +30,9 @@ namespace Barotrauma.Networking { foreach (Client c in GameMain.Server.ConnectedClients) { - if (!IsWhiteListed(c.name, c.Connection.RemoteEndPoint.Address.ToString())) + if (!IsWhiteListed(c.Name, c.Connection.RemoteEndPoint.Address.ToString())) { - whitelistedPlayers.Add(new WhiteListedPlayer(c.name, c.Connection.RemoteEndPoint.Address.ToString())); + whitelistedPlayers.Add(new WhiteListedPlayer(c.Name, c.Connection.RemoteEndPoint.Address.ToString())); if (whitelistFrame != null) CreateWhiteListFrame(whitelistFrame.Parent); } } diff --git a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs index e8af9e986..4cc72362a 100644 --- a/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs +++ b/Barotrauma/BarotraumaClient/Source/Screens/NetLobbyScreen.cs @@ -866,7 +866,7 @@ namespace Barotrauma if (GameMain.Server != null) { - var selectedClient = GameMain.Server.ConnectedClients.Find(c => c.name == component.UserData.ToString()); + var selectedClient = GameMain.Server.ConnectedClients.Find(c => c.Name == component.UserData.ToString()); new GUITextBlock(new Rectangle(0, 25, 150, 15), selectedClient.Connection.RemoteEndPoint.Address.ToString(), "", playerFrameInner); diff --git a/Barotrauma/BarotraumaShared/Source/DebugConsole.cs b/Barotrauma/BarotraumaShared/Source/DebugConsole.cs index 39c546de3..922a61d13 100644 --- a/Barotrauma/BarotraumaShared/Source/DebugConsole.cs +++ b/Barotrauma/BarotraumaShared/Source/DebugConsole.cs @@ -96,7 +96,7 @@ namespace Barotrauma NewMessage("***************", Color.Cyan); foreach (Client c in GameMain.Server.ConnectedClients) { - NewMessage("- " + c.ID.ToString() + ": " + c.name + ", " + c.Connection.RemoteEndPoint.Address.ToString(), Color.Cyan); + NewMessage("- " + c.ID.ToString() + ": " + c.Name + ", " + c.Connection.RemoteEndPoint.Address.ToString(), Color.Cyan); } NewMessage("***************", Color.Cyan); })); @@ -304,9 +304,9 @@ namespace Barotrauma return; } - ShowQuestionPrompt("Reason for kicking \"" + client.name + "\"?", (reason) => + ShowQuestionPrompt("Reason for kicking \"" + client.Name + "\"?", (reason) => { - GameMain.Server.KickPlayer(client.name, reason); + GameMain.Server.KickPlayer(client.Name, reason); }); })); @@ -349,7 +349,7 @@ namespace Barotrauma return; } - ShowQuestionPrompt("Reason for banning \"" + client.name + "\"?", (reason) => + ShowQuestionPrompt("Reason for banning \"" + client.Name + "\"?", (reason) => { ShowQuestionPrompt("Enter the duration of the ban (leave empty to ban permanently, or use the format \"[days] d [hours] h\")", (duration) => { @@ -365,7 +365,7 @@ namespace Barotrauma banDuration = parsedBanDuration; } - GameMain.Server.BanPlayer(client.name, reason, false, banDuration); + GameMain.Server.BanPlayer(client.Name, reason, false, banDuration); }); }); })); @@ -625,7 +625,7 @@ namespace Barotrauma string clientName = String.Join(" ", argsLeft); - var client = GameMain.Server.ConnectedClients.Find(c => c.name == clientName); + var client = GameMain.Server.ConnectedClients.Find(c => c.Name == clientName); if (client == null) { ThrowError("Client \"" + clientName + "\" not found."); diff --git a/Barotrauma/BarotraumaShared/Source/GameSession/GameModes/MultiplayerCampaign.cs b/Barotrauma/BarotraumaShared/Source/GameSession/GameModes/MultiplayerCampaign.cs index 3375aac52..fb3d8d751 100644 --- a/Barotrauma/BarotraumaShared/Source/GameSession/GameModes/MultiplayerCampaign.cs +++ b/Barotrauma/BarotraumaShared/Source/GameSession/GameModes/MultiplayerCampaign.cs @@ -195,7 +195,7 @@ namespace Barotrauma lastUpdateID++; bool success = - GameMain.Server.ConnectedClients.Any(c => c.inGame && c.Character != null && !c.Character.IsDead) || + GameMain.Server.ConnectedClients.Any(c => c.InGame && c.Character != null && !c.Character.IsDead) || (GameMain.Server.Character != null && !GameMain.Server.Character.IsDead); /*if (success) @@ -409,7 +409,7 @@ namespace Barotrauma if (!sender.HasPermission(ClientPermissions.ManageCampaign)) { - DebugConsole.ThrowError("Client \""+sender.name+"\" does not have a permission to manage the campaign"); + DebugConsole.ThrowError("Client \""+sender.Name+"\" does not have a permission to manage the campaign"); return; } diff --git a/Barotrauma/BarotraumaShared/Source/Networking/ChatMessage.cs b/Barotrauma/BarotraumaShared/Source/Networking/ChatMessage.cs index 910d7ca20..aea118e94 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/ChatMessage.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/ChatMessage.cs @@ -135,26 +135,26 @@ namespace Barotrauma.Networking string txt = msg.ReadString(); if (txt == null) txt = ""; - if (!NetIdUtils.IdMoreRecent(ID, c.lastSentChatMsgID)) return; + if (!NetIdUtils.IdMoreRecent(ID, c.LastSentChatMsgID)) return; - c.lastSentChatMsgID = ID; + c.LastSentChatMsgID = ID; if (txt.Length > MaxLength) { txt = txt.Substring(0, MaxLength); } - c.lastSentChatMessages.Add(txt); - if (c.lastSentChatMessages.Count > 10) + c.LastSentChatMessages.Add(txt); + if (c.LastSentChatMessages.Count > 10) { - c.lastSentChatMessages.RemoveRange(0, c.lastSentChatMessages.Count-10); + c.LastSentChatMessages.RemoveRange(0, c.LastSentChatMessages.Count-10); } float similarity = 0.0f; - for (int i = 0; i < c.lastSentChatMessages.Count; i++) + for (int i = 0; i < c.LastSentChatMessages.Count; i++) { - float closeFactor = 1.0f / (c.lastSentChatMessages.Count - i); - int levenshteinDist = ToolBox.LevenshteinDistance(txt, c.lastSentChatMessages[i]); + float closeFactor = 1.0f / (c.LastSentChatMessages.Count - i); + int levenshteinDist = ToolBox.LevenshteinDistance(txt, c.LastSentChatMessages[i]); similarity += Math.Max((txt.Length - levenshteinDist) / (float)txt.Length * closeFactor, 0.0f); } @@ -205,7 +205,7 @@ namespace Barotrauma.Networking 1 + //(byte)Type Encoding.UTF8.GetBytes(Text).Length + 2; - if (Sender != null && c.inGame) + if (Sender != null && c.InGame) { length += 2; //sender ID (UInt16) } @@ -224,8 +224,8 @@ namespace Barotrauma.Networking msg.Write((byte)Type); msg.Write(Text); - msg.Write(Sender != null && c.inGame); - if (Sender != null && c.inGame) + msg.Write(Sender != null && c.InGame); + if (Sender != null && c.InGame) { msg.Write(Sender.ID); } diff --git a/Barotrauma/BarotraumaShared/Source/Networking/Client.cs b/Barotrauma/BarotraumaShared/Source/Networking/Client.cs index 293b340fd..5a0caf60e 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/Client.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/Client.cs @@ -26,35 +26,36 @@ namespace Barotrauma.Networking class Client { - public string name; + public string Name; public byte ID; public byte TeamID = 0; public Character Character; - public CharacterInfo characterInfo; + public CharacterInfo CharacterInfo; public NetConnection Connection { get; set; } - public bool inGame; - public UInt16 lastRecvGeneralUpdate = 0; + public bool InGame; - public UInt16 lastSentChatMsgID = 0; //last msg this client said - public UInt16 lastRecvChatMsgID = 0; //last msg this client knows about + public UInt16 LastRecvGeneralUpdate = 0; + + public UInt16 LastSentChatMsgID = 0; //last msg this client said + public UInt16 LastRecvChatMsgID = 0; //last msg this client knows about - public UInt16 lastSentEntityEventID = 0; - public UInt16 lastRecvEntityEventID = 0; + public UInt16 LastSentEntityEventID = 0; + public UInt16 LastRecvEntityEventID = 0; - public UInt16 lastRecvCampaignUpdate = 0; - public UInt16 lastRecvCampaignSave = 0; - - public List chatMsgQueue = new List(); - public UInt16 lastChatMsgQueueID; + public UInt16 LastRecvCampaignUpdate = 0; + public UInt16 LastRecvCampaignSave = 0; + + public readonly List ChatMsgQueue = new List(); + public UInt16 LastChatMsgQueueID; //latest chat messages sent by this client - public List lastSentChatMessages = new List(); + public readonly List LastSentChatMessages = new List(); public float ChatSpamSpeed; public float ChatSpamTimer; public int ChatSpamCount; - + public double MidRoundSyncTimeOut; public bool NeedsMidRoundSync; @@ -66,36 +67,31 @@ namespace Barotrauma.Networking //when was a specific entity event last sent to the client // key = event id, value = NetTime.Now when sending - public Dictionary entityEventLastSent; - - private Queue pendingPositionUpdates = new Queue(); + public readonly Dictionary EntityEventLastSent = new Dictionary(); + public readonly Queue PendingPositionUpdates = new Queue(); + public bool ReadyToStart; - private object[] votes; - - public List jobPreferences; - public JobPrefab assignedJob; + public List JobPreferences; + public JobPrefab AssignedJob; - public float deleteDisconnectedTimer; + public float DeleteDisconnectedTimer; public ClientPermissions Permissions = ClientPermissions.None; public bool SpectateOnly; + + private object[] votes; - public Queue PendingPositionUpdates - { - get { return pendingPositionUpdates; } - } - public void InitClientSync() { - lastSentChatMsgID = 0; - lastRecvChatMsgID = ChatMessage.LastID; + LastSentChatMsgID = 0; + LastRecvChatMsgID = ChatMessage.LastID; - lastRecvGeneralUpdate = 0; + LastRecvGeneralUpdate = 0; - lastRecvEntityEventID = 0; + LastRecvEntityEventID = 0; UnreceivedEntityEventCount = 0; NeedsMidRoundSync = false; @@ -114,16 +110,14 @@ namespace Barotrauma.Networking public Client(string name, byte ID) { - this.name = name; + this.Name = name; this.ID = ID; kickVoters = new List(); votes = new object[Enum.GetNames(typeof(VoteType)).Length]; - jobPreferences = new List(JobPrefab.List.GetRange(0, Math.Min(JobPrefab.List.Count, 3))); - - entityEventLastSent = new Dictionary(); + JobPreferences = new List(JobPrefab.List.GetRange(0, Math.Min(JobPrefab.List.Count, 3))); } public static bool IsValidName(string name) diff --git a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs index 20e159d9f..c16022f96 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs @@ -408,8 +408,8 @@ namespace Barotrauma.Networking for (int i = disconnectedClients.Count - 1; i >= 0; i-- ) { - disconnectedClients[i].deleteDisconnectedTimer -= deltaTime; - if (disconnectedClients[i].deleteDisconnectedTimer > 0.0f) continue; + disconnectedClients[i].DeleteDisconnectedTimer -= deltaTime; + if (disconnectedClients[i].DeleteDisconnectedTimer > 0.0f) continue; if (gameStarted && disconnectedClients[i].Character!=null) { @@ -449,7 +449,7 @@ namespace Barotrauma.Networking } */ DisconnectClient(inc.SenderConnection, - connectedClient != null ? connectedClient.name + " has disconnected" : ""); + connectedClient != null ? connectedClient.Name + " has disconnected" : ""); break; } break; @@ -496,7 +496,7 @@ namespace Barotrauma.Networking } catch (Exception e) { - DebugConsole.ThrowError("Failed to write a network message for the client \""+c.name+"\"!", e); + DebugConsole.ThrowError("Failed to write a network message for the client \""+c.Name+"\"!", e); } } @@ -598,13 +598,13 @@ namespace Barotrauma.Networking { case ClientNetObject.SYNC_IDS: //TODO: might want to use a clever class for this - c.lastRecvGeneralUpdate = NetIdUtils.Clamp(inc.ReadUInt16(), c.lastRecvGeneralUpdate, GameMain.NetLobbyScreen.LastUpdateID); - c.lastRecvChatMsgID = NetIdUtils.Clamp(inc.ReadUInt16(), c.lastRecvChatMsgID, c.lastChatMsgQueueID); + c.LastRecvGeneralUpdate = NetIdUtils.Clamp(inc.ReadUInt16(), c.LastRecvGeneralUpdate, GameMain.NetLobbyScreen.LastUpdateID); + c.LastRecvChatMsgID = NetIdUtils.Clamp(inc.ReadUInt16(), c.LastRecvChatMsgID, c.LastChatMsgQueueID); - c.lastRecvCampaignSave = inc.ReadUInt16(); - if (c.lastRecvCampaignSave > 0) + c.LastRecvCampaignSave = inc.ReadUInt16(); + if (c.LastRecvCampaignSave > 0) { - c.lastRecvCampaignUpdate = inc.ReadUInt16(); + c.LastRecvCampaignUpdate = inc.ReadUInt16(); } break; case ClientNetObject.CHAT_MESSAGE: @@ -633,11 +633,11 @@ namespace Barotrauma.Networking if (gameStarted) { - if (!c.inGame) + if (!c.InGame) { //check if midround syncing is needed due to missed unique events entityEventManager.InitClientMidRoundSync(c); - c.inGame = true; + c.InGame = true; } } @@ -663,7 +663,7 @@ namespace Barotrauma.Networking { c.NeedsMidRoundSync = false; lastRecvEntityEventID = (UInt16)(c.FirstNewEventID - 1); - c.lastRecvEntityEventID = lastRecvEntityEventID; + c.LastRecvEntityEventID = lastRecvEntityEventID; } else { @@ -671,28 +671,28 @@ namespace Barotrauma.Networking } } - if (NetIdUtils.IdMoreRecent(lastRecvChatMsgID, c.lastRecvChatMsgID) && //more recent than the last ID received by the client - !NetIdUtils.IdMoreRecent(lastRecvChatMsgID, c.lastChatMsgQueueID)) //NOT more recent than the latest existing ID + if (NetIdUtils.IdMoreRecent(lastRecvChatMsgID, c.LastRecvChatMsgID) && //more recent than the last ID received by the client + !NetIdUtils.IdMoreRecent(lastRecvChatMsgID, c.LastChatMsgQueueID)) //NOT more recent than the latest existing ID { - c.lastRecvChatMsgID = lastRecvChatMsgID; + c.LastRecvChatMsgID = lastRecvChatMsgID; } - else if (lastRecvChatMsgID != c.lastRecvChatMsgID && GameSettings.VerboseLogging) + else if (lastRecvChatMsgID != c.LastRecvChatMsgID && GameSettings.VerboseLogging) { DebugConsole.ThrowError( "Invalid lastRecvChatMsgID " + lastRecvChatMsgID + - " (previous: " + c.lastChatMsgQueueID + ", latest: "+c.lastChatMsgQueueID+")"); + " (previous: " + c.LastChatMsgQueueID + ", latest: "+c.LastChatMsgQueueID+")"); } - if (NetIdUtils.IdMoreRecent(lastRecvEntityEventID, c.lastRecvEntityEventID) && + if (NetIdUtils.IdMoreRecent(lastRecvEntityEventID, c.LastRecvEntityEventID) && !NetIdUtils.IdMoreRecent(lastRecvEntityEventID, lastEntityEventID)) { - c.lastRecvEntityEventID = lastRecvEntityEventID; + c.LastRecvEntityEventID = lastRecvEntityEventID; } - else if (lastRecvEntityEventID != c.lastRecvEntityEventID && GameSettings.VerboseLogging) + else if (lastRecvEntityEventID != c.LastRecvEntityEventID && GameSettings.VerboseLogging) { DebugConsole.ThrowError( "Invalid lastRecvEntityEventID " + lastRecvEntityEventID + - " (previous: " + c.lastRecvEntityEventID + ", latest: " + lastEntityEventID + ")"); + " (previous: " + c.LastRecvEntityEventID + ", latest: " + lastEntityEventID + ")"); } break; case ClientNetObject.CHAT_MESSAGE: @@ -741,7 +741,7 @@ namespace Barotrauma.Networking if (!sender.HasPermission(command)) { - Log("Client \"" + sender.name + "\" sent a server command \"" + command + "\". Permission denied.", ServerLog.MessageType.ServerMessage); + Log("Client \"" + sender.Name + "\" sent a server command \"" + command + "\". Permission denied.", ServerLog.MessageType.ServerMessage); return; } @@ -750,27 +750,27 @@ namespace Barotrauma.Networking case ClientPermissions.Kick: string kickedName = inc.ReadString().ToLowerInvariant(); string kickReason = inc.ReadString(); - var kickedClient = connectedClients.Find(cl => cl != sender && cl.name.ToLowerInvariant() == kickedName); + var kickedClient = connectedClients.Find(cl => cl != sender && cl.Name.ToLowerInvariant() == kickedName); if (kickedClient != null) { - Log("Client \"" + sender.name + "\" kicked \"" + kickedClient.name + "\".", ServerLog.MessageType.ServerMessage); - KickClient(kickedClient, string.IsNullOrEmpty(kickReason) ? "Kicked by " + sender.name : kickReason); + Log("Client \"" + sender.Name + "\" kicked \"" + kickedClient.Name + "\".", ServerLog.MessageType.ServerMessage); + KickClient(kickedClient, string.IsNullOrEmpty(kickReason) ? "Kicked by " + sender.Name : kickReason); } break; case ClientPermissions.Ban: string bannedName = inc.ReadString().ToLowerInvariant(); string banReason = inc.ReadString(); - var bannedClient = connectedClients.Find(cl => cl != sender && cl.name.ToLowerInvariant() == bannedName); + var bannedClient = connectedClients.Find(cl => cl != sender && cl.Name.ToLowerInvariant() == bannedName); if (bannedClient != null) { - Log("Client \"" + sender.name + "\" banned \"" + bannedClient.name + "\".", ServerLog.MessageType.ServerMessage); - BanClient(bannedClient, string.IsNullOrEmpty(banReason) ? "Banned by " + sender.name : banReason, false); + Log("Client \"" + sender.Name + "\" banned \"" + bannedClient.Name + "\".", ServerLog.MessageType.ServerMessage); + BanClient(bannedClient, string.IsNullOrEmpty(banReason) ? "Banned by " + sender.Name : banReason, false); } break; case ClientPermissions.EndRound: if (gameStarted) { - Log("Client \"" + sender.name + "\" ended the round.", ServerLog.MessageType.ServerMessage); + Log("Client \"" + sender.Name + "\" ended the round.", ServerLog.MessageType.ServerMessage); EndGame(); } break; @@ -779,7 +779,7 @@ namespace Barotrauma.Networking var subList = GameMain.NetLobbyScreen.GetSubList(); if (subIndex >= subList.Count) { - DebugConsole.NewMessage("Client \"" + sender.name + "\" attempted to select a sub, index out of bounds (" + subIndex + ")", Color.Red); + DebugConsole.NewMessage("Client \"" + sender.Name + "\" attempted to select a sub, index out of bounds (" + subIndex + ")", Color.Red); } else { @@ -805,7 +805,7 @@ namespace Barotrauma.Networking private void ClientWrite(Client c) { - if (gameStarted && c.inGame) + if (gameStarted && c.InGame) { ClientWriteIngame(c); } @@ -822,7 +822,7 @@ namespace Barotrauma.Networking ClientWriteLobby(c); MultiplayerCampaign campaign = GameMain.GameSession?.GameMode as MultiplayerCampaign; - if (campaign != null && NetIdUtils.IdMoreRecent(campaign.LastSaveID, c.lastRecvCampaignSave)) + if (campaign != null && NetIdUtils.IdMoreRecent(campaign.LastSaveID, c.LastRecvCampaignSave)) { if (!fileSender.ActiveTransfers.Any(t => t.Connection == c.Connection && t.FileType == FileTransferType.CampaignSave)) { @@ -897,8 +897,8 @@ namespace Barotrauma.Networking outmsg.Write((float)NetTime.Now); outmsg.Write((byte)ServerNetObject.SYNC_IDS); - outmsg.Write(c.lastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server - outmsg.Write(c.lastSentEntityEventID); + outmsg.Write(c.LastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server + outmsg.Write(c.LastSentEntityEventID); entityEventManager.Write(c, outmsg); @@ -942,7 +942,7 @@ namespace Barotrauma.Networking outmsg.Write((byte)ServerNetObject.SYNC_IDS); - if (NetIdUtils.IdMoreRecent(GameMain.NetLobbyScreen.LastUpdateID, c.lastRecvGeneralUpdate)) + if (NetIdUtils.IdMoreRecent(GameMain.NetLobbyScreen.LastUpdateID, c.LastRecvGeneralUpdate)) { outmsg.Write(true); outmsg.WritePadBits(); @@ -951,8 +951,8 @@ namespace Barotrauma.Networking outmsg.Write(GameMain.NetLobbyScreen.GetServerName()); outmsg.Write(GameMain.NetLobbyScreen.ServerMessageText); - outmsg.Write(c.lastRecvGeneralUpdate < 1); - if (c.lastRecvGeneralUpdate < 1) + outmsg.Write(c.LastRecvGeneralUpdate < 1); + if (c.LastRecvGeneralUpdate < 1) { isInitialUpdate = true; ClientWriteInitial(c, outmsg); @@ -984,7 +984,7 @@ namespace Barotrauma.Networking foreach (Client client in connectedClients) { outmsg.Write(client.ID); - outmsg.Write(client.name); + outmsg.Write(client.Name); outmsg.Write(client.Character == null || !gameStarted ? (ushort)0 : client.Character.ID); } } @@ -997,7 +997,7 @@ namespace Barotrauma.Networking var campaign = GameMain.GameSession?.GameMode as MultiplayerCampaign; if (campaign != null) { - if (NetIdUtils.IdMoreRecent(campaign.LastUpdateID, c.lastRecvCampaignUpdate)) + if (NetIdUtils.IdMoreRecent(campaign.LastUpdateID, c.LastRecvCampaignUpdate)) { outmsg.Write(true); outmsg.WritePadBits(); @@ -1015,7 +1015,7 @@ namespace Barotrauma.Networking outmsg.WritePadBits(); } - outmsg.Write(c.lastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server + outmsg.Write(c.LastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server WriteChatMessages(outmsg, c); @@ -1031,7 +1031,7 @@ namespace Barotrauma.Networking //and assume the message was received, so we don't have to keep resending //these large initial messages until the client acknowledges receiving them - c.lastRecvGeneralUpdate++; + c.LastRecvGeneralUpdate++; SendVoteStatus(new List() { c }); } @@ -1048,15 +1048,15 @@ namespace Barotrauma.Networking private void WriteChatMessages(NetOutgoingMessage outmsg, Client c) { - c.chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, c.lastRecvChatMsgID)); - for (int i = 0; i < c.chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) + c.ChatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, c.LastRecvChatMsgID)); + for (int i = 0; i < c.ChatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) { - if (outmsg.LengthBytes + c.chatMsgQueue[i].EstimateLengthBytesServer(c) > config.MaximumTransmissionUnit - 5) + if (outmsg.LengthBytes + c.ChatMsgQueue[i].EstimateLengthBytesServer(c) > config.MaximumTransmissionUnit - 5) { //not enough room in this packet return; } - c.chatMsgQueue[i].ServerWrite(outmsg, c); + c.ChatMsgQueue[i].ServerWrite(outmsg, c); } } @@ -1243,17 +1243,17 @@ namespace Barotrauma.Networking client.NeedsMidRoundSync = false; client.PendingPositionUpdates.Clear(); - client.entityEventLastSent.Clear(); - client.lastSentEntityEventID = 0; - client.lastRecvEntityEventID = 0; + client.EntityEventLastSent.Clear(); + client.LastSentEntityEventID = 0; + client.LastRecvEntityEventID = 0; client.UnreceivedEntityEventCount = 0; - if (client.characterInfo == null) + if (client.CharacterInfo == null) { - client.characterInfo = new CharacterInfo(Character.HumanConfigFile, client.name); + client.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, client.Name); } - characterInfos.Add(client.characterInfo); - client.characterInfo.Job = new Job(client.assignedJob); + characterInfos.Add(client.CharacterInfo); + client.CharacterInfo.Job = new Job(client.AssignedJob); } //host's character @@ -1266,7 +1266,7 @@ namespace Barotrauma.Networking WayPoint[] assignedWayPoints = WayPoint.SelectCrewSpawnPoints(characterInfos, Submarine.MainSubs[teamID - 1]); for (int i = 0; i < teamClients.Count; i++) { - Character spawnedCharacter = Character.Create(teamClients[i].characterInfo, assignedWayPoints[i].WorldPosition, true, false); + Character spawnedCharacter = Character.Create(teamClients[i].CharacterInfo, assignedWayPoints[i].WorldPosition, true, false); spawnedCharacter.AnimController.Frozen = true; spawnedCharacter.GiveJobItems(assignedWayPoints[i]); spawnedCharacter.TeamID = (byte)teamID; @@ -1446,7 +1446,7 @@ namespace Barotrauma.Networking entityEventManager.Clear(); foreach (Client c in connectedClients) { - c.entityEventLastSent.Clear(); + c.EntityEventLastSent.Clear(); c.PendingPositionUpdates.Clear(); } @@ -1471,7 +1471,7 @@ namespace Barotrauma.Networking foreach (Client client in connectedClients) { client.Character = null; - client.inGame = false; + client.InGame = false; } } @@ -1505,7 +1505,7 @@ namespace Barotrauma.Networking playerName = playerName.ToLowerInvariant(); Client client = connectedClients.Find(c => - c.name.ToLowerInvariant() == playerName || + c.Name.ToLowerInvariant() == playerName || (c.Character != null && c.Character.Name.ToLowerInvariant() == playerName)); KickClient(client, reason); @@ -1523,7 +1523,7 @@ namespace Barotrauma.Networking string msg = "You have been kicked from the server."; if (!string.IsNullOrWhiteSpace(reason)) msg += "\nReason: " + reason; - DisconnectClient(client, client.name + " has been kicked from the server.", msg); + DisconnectClient(client, client.Name + " has been kicked from the server.", msg); } public override void BanPlayer(string playerName, string reason, bool range = false, TimeSpan? duration = null) @@ -1531,7 +1531,7 @@ namespace Barotrauma.Networking playerName = playerName.ToLowerInvariant(); Client client = connectedClients.Find(c => - c.name.ToLowerInvariant() == playerName || + c.Name.ToLowerInvariant() == playerName || (c.Character != null && c.Character.Name.ToLowerInvariant() == playerName)); if (client == null) @@ -1566,10 +1566,10 @@ namespace Barotrauma.Networking string msg = "You have been banned from the server."; if (!string.IsNullOrWhiteSpace(reason)) msg += "\nReason: " + reason; - DisconnectClient(client, client.name + " has been banned from the server.", msg); + DisconnectClient(client, client.Name + " has been banned from the server.", msg); string ip = client.Connection.RemoteEndPoint.Address.ToString(); if (range) { ip = banList.ToRange(ip); } - banList.BanPlayer(client.name, ip, reason, duration); + banList.BanPlayer(client.Name, ip, reason, duration); } public void DisconnectClient(NetConnection senderConnection, string msg = "", string targetmsg = "") @@ -1591,9 +1591,9 @@ namespace Barotrauma.Networking } client.Character = null; - client.inGame = false; + client.InGame = false; - if (string.IsNullOrWhiteSpace(msg)) msg = client.name + " has left the server"; + if (string.IsNullOrWhiteSpace(msg)) msg = client.Name + " has left the server"; if (string.IsNullOrWhiteSpace(targetmsg)) targetmsg = "You have left the server"; Log(msg, ServerLog.MessageType.ServerMessage); @@ -1602,7 +1602,7 @@ namespace Barotrauma.Networking connectedClients.Remove(client); #if CLIENT - GameMain.NetLobbyScreen.RemovePlayer(client.name); + GameMain.NetLobbyScreen.RemovePlayer(client.Name); Voting.UpdateVoteTexts(connectedClients, VoteType.Sub); Voting.UpdateVoteTexts(connectedClients, VoteType.Mode); #endif @@ -1620,18 +1620,18 @@ namespace Barotrauma.Networking { foreach (Client c in connectedClients) { - if (c.Character == null || !c.inGame) continue; + if (c.Character == null || !c.InGame) continue; } } public void SendChatMessage(ChatMessage msg, Client recipient) { - msg.NetStateID = recipient.chatMsgQueue.Count > 0 ? - (ushort)(recipient.chatMsgQueue.Last().NetStateID + 1) : - (ushort)(recipient.lastRecvChatMsgID + 1); + msg.NetStateID = recipient.ChatMsgQueue.Count > 0 ? + (ushort)(recipient.ChatMsgQueue.Last().NetStateID + 1) : + (ushort)(recipient.LastRecvChatMsgID + 1); - recipient.chatMsgQueue.Add(msg); - recipient.lastChatMsgQueueID = msg.NetStateID; + recipient.ChatMsgQueue.Add(msg); + recipient.LastChatMsgQueueID = msg.NetStateID; } /// @@ -1668,7 +1668,7 @@ namespace Barotrauma.Networking else { targetClient = connectedClients.Find(c => - command == c.name.ToLowerInvariant() || + command == c.Name.ToLowerInvariant() || (c.Character != null && command == c.Character.Name.ToLowerInvariant())); if (targetClient == null) @@ -1679,12 +1679,12 @@ namespace Barotrauma.Networking "", "Player \"" + command + "\" not found!", ChatMessageType.Error, null); - chatMsg.NetStateID = senderClient.chatMsgQueue.Count > 0 ? - (ushort)(senderClient.chatMsgQueue.Last().NetStateID + 1) : - (ushort)(senderClient.lastRecvChatMsgID + 1); + chatMsg.NetStateID = senderClient.ChatMsgQueue.Count > 0 ? + (ushort)(senderClient.ChatMsgQueue.Last().NetStateID + 1) : + (ushort)(senderClient.LastRecvChatMsgID + 1); - senderClient.chatMsgQueue.Add(chatMsg); - senderClient.lastChatMsgQueueID = chatMsg.NetStateID; + senderClient.ChatMsgQueue.Add(chatMsg); + senderClient.LastChatMsgQueueID = chatMsg.NetStateID; } else { @@ -1718,7 +1718,7 @@ namespace Barotrauma.Networking else //msg sent by a client { senderCharacter = senderClient.Character; - senderName = senderCharacter == null ? senderClient.name : senderCharacter.Name; + senderName = senderCharacter == null ? senderClient.Name : senderCharacter.Name; //sender doesn't have an alive character -> only ChatMessageType.Dead allowed if (senderCharacter == null || senderCharacter.IsDead) @@ -1744,7 +1744,7 @@ namespace Barotrauma.Networking { //game not started -> clients can only send normal and private chatmessages if (type != ChatMessageType.Private) type = ChatMessageType.Default; - senderName = senderClient.name; + senderName = senderClient.Name; } } @@ -1864,6 +1864,11 @@ namespace Barotrauma.Networking private void FileTransferChanged(FileSender.FileTransferOut transfer) { + if (connectedClients.Any(c=> c.Connection == null)) + { + int sdfgsdfg = 1; + } + Client recipient = connectedClients.Find(c => c.Connection == transfer.Connection); #if CLIENT UpdateFileTransferIndicator(recipient); @@ -1888,7 +1893,7 @@ namespace Barotrauma.Networking var clientsToKick = connectedClients.FindAll(c => c.KickVoteCount >= connectedClients.Count * KickVoteRequiredRatio); foreach (Client c in clientsToKick) { - SendChatMessage(c.name + " has been kicked from the server.", ChatMessageType.Server, null); + SendChatMessage(c.Name + " has been kicked from the server.", ChatMessageType.Server, null); KickClient(c, "Kicked by vote"); } @@ -1922,7 +1927,7 @@ namespace Barotrauma.Networking if (client.Permissions != ClientPermissions.None) { clientPermissions.Add(new SavedClientPermission( - client.name, + client.Name, client.Connection.RemoteEndPoint.Address.ToString(), client.Permissions)); } @@ -1989,7 +1994,7 @@ namespace Barotrauma.Networking gender = Gender.Male; headSpriteId = 0; - DebugConsole.Log("Received invalid characterinfo from \"" + sender.name + "\"! { " + e.Message + " }"); + DebugConsole.Log("Received invalid characterinfo from \"" + sender.Name + "\"! { " + e.Message + " }"); } List jobPreferences = new List(); @@ -2002,9 +2007,9 @@ namespace Barotrauma.Networking if (jobPrefab != null) jobPreferences.Add(jobPrefab); } - sender.characterInfo = new CharacterInfo(Character.HumanConfigFile, sender.name, gender); - sender.characterInfo.HeadSpriteId = headSpriteId; - sender.jobPreferences = jobPreferences; + sender.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, sender.Name, gender); + sender.CharacterInfo.HeadSpriteId = headSpriteId; + sender.JobPreferences = jobPreferences; } public void AssignJobs(List unassigned, bool assignHost) @@ -2049,8 +2054,8 @@ namespace Barotrauma.Networking //if any of the players has chosen a job that is Always Allowed, give them that job for (int i = unassigned.Count - 1; i >= 0; i--) { - if (!unassigned[i].jobPreferences[0].AllowAlways) continue; - unassigned[i].assignedJob = unassigned[i].jobPreferences[0]; + if (!unassigned[i].JobPreferences[0].AllowAlways) continue; + unassigned[i].AssignedJob = unassigned[i].JobPreferences[0]; unassigned.RemoveAt(i); } @@ -2068,7 +2073,7 @@ namespace Barotrauma.Networking //find the client that wants the job the most, or force it to random client if none of them want it Client assignedClient = FindClientWithJobPreference(unassigned, jobPrefab, true); - assignedClient.assignedJob = jobPrefab; + assignedClient.AssignedJob = jobPrefab; assignedClientCount[jobPrefab]++; unassigned.Remove(assignedClient); @@ -2080,18 +2085,18 @@ namespace Barotrauma.Networking //find a suitable job for the rest of the players foreach (Client c in unassigned) { - foreach (JobPrefab preferredJob in c.jobPreferences) + foreach (JobPrefab preferredJob in c.JobPreferences) { //the maximum number of players that can have this job hasn't been reached yet // -> assign it to the client if (assignedClientCount[preferredJob] < preferredJob.MaxNumber) { - c.assignedJob = preferredJob; + c.AssignedJob = preferredJob; assignedClientCount[preferredJob]++; break; } //none of the jobs the client prefers are available anymore - else if (preferredJob == c.jobPreferences.Last()) + else if (preferredJob == c.JobPreferences.Last()) { //find all jobs that are still available var remainingJobs = JobPrefab.List.FindAll(jp => assignedClientCount[preferredJob] < jp.MaxNumber); @@ -2099,14 +2104,14 @@ namespace Barotrauma.Networking //all jobs taken, give a random job if (remainingJobs.Count == 0) { - DebugConsole.ThrowError("Failed to assign a suitable job for \"" + c.name + "\" (all jobs already have the maximum numbers of players). Assigning a random job..."); - c.assignedJob = JobPrefab.List[Rand.Range(0, JobPrefab.List.Count)]; - assignedClientCount[c.assignedJob]++; + DebugConsole.ThrowError("Failed to assign a suitable job for \"" + c.Name + "\" (all jobs already have the maximum numbers of players). Assigning a random job..."); + c.AssignedJob = JobPrefab.List[Rand.Range(0, JobPrefab.List.Count)]; + assignedClientCount[c.AssignedJob]++; } else //some jobs still left, choose one of them by random { - c.assignedJob = remainingJobs[Rand.Range(0, remainingJobs.Count)]; - assignedClientCount[c.assignedJob]++; + c.AssignedJob = remainingJobs[Rand.Range(0, remainingJobs.Count)]; + assignedClientCount[c.AssignedJob]++; } } } @@ -2119,7 +2124,7 @@ namespace Barotrauma.Networking Client preferredClient = null; foreach (Client c in clients) { - int index = c.jobPreferences.IndexOf(job); + int index = c.JobPreferences.IndexOf(job); if (index == -1) index = 1000; if (preferredClient == null || index < bestPreference) diff --git a/Barotrauma/BarotraumaShared/Source/Networking/GameServerLogin.cs b/Barotrauma/BarotraumaShared/Source/Networking/GameServerLogin.cs index 179a59a7f..3208348b0 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/GameServerLogin.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/GameServerLogin.cs @@ -179,7 +179,7 @@ namespace Barotrauma.Networking DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (name taken by the server)", Color.Red); return; } - Client nameTaken = ConnectedClients.Find(c => c.name.ToLower() == clName.ToLower()); + Client nameTaken = ConnectedClients.Find(c => c.Name.ToLower() == clName.ToLower()); if (nameTaken != null) { if (nameTaken.Connection.RemoteEndPoint.Address.ToString() == inc.SenderEndPoint.Address.ToString()) @@ -211,7 +211,7 @@ namespace Barotrauma.Networking ConnectedClients.Add(newClient); #if CLIENT - GameMain.NetLobbyScreen.AddPlayer(newClient.name); + GameMain.NetLobbyScreen.AddPlayer(newClient.Name); #endif GameMain.Server.SendChatMessage(clName + " has joined the server.", ChatMessageType.Server, null); diff --git a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs index 06187974f..7dad4627d 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs @@ -82,7 +82,7 @@ namespace Barotrauma.Networking //keep at least one event in the list (lastSentToAll == e.ID) so we can use it to keep track of the latest ID events.RemoveAll(e => NetIdUtils.IdMoreRecent(lastSentToAll, e.ID)); - if (server.ConnectedClients.Count(c => c.inGame) == 0 && events.Count > 1) + if (server.ConnectedClients.Count(c => c.InGame) == 0 && events.Count > 1) { events.RemoveRange(0, events.Count - 1); } @@ -144,21 +144,21 @@ namespace Barotrauma.Networking bufferedEvent.IsProcessed = true; } - var inGameClients = clients.FindAll(c => c.inGame && !c.NeedsMidRoundSync); + var inGameClients = clients.FindAll(c => c.InGame && !c.NeedsMidRoundSync); if (inGameClients.Count > 0) { - lastSentToAll = inGameClients[0].lastRecvEntityEventID; - inGameClients.ForEach(c => { if (NetIdUtils.IdMoreRecent(lastSentToAll, c.lastRecvEntityEventID)) lastSentToAll = c.lastRecvEntityEventID; }); + lastSentToAll = inGameClients[0].LastRecvEntityEventID; + inGameClients.ForEach(c => { if (NetIdUtils.IdMoreRecent(lastSentToAll, c.LastRecvEntityEventID)) lastSentToAll = c.LastRecvEntityEventID; }); ServerEntityEvent firstEventToResend = events.Find(e => e.ID == (ushort)(lastSentToAll + 1)); if (firstEventToResend != null && (Timing.TotalTime - firstEventToResend.CreateTime) > 10.0f) { //it's been 10 seconds since this event was created //kick everyone that hasn't received it yet, this is way too old - List toKick = inGameClients.FindAll(c => NetIdUtils.IdMoreRecent((UInt16)(lastSentToAll + 1), c.lastRecvEntityEventID)); + List toKick = inGameClients.FindAll(c => NetIdUtils.IdMoreRecent((UInt16)(lastSentToAll + 1), c.LastRecvEntityEventID)); toKick.ForEach(c => { - DebugConsole.NewMessage(c.name + " was kicked due to excessive desync (expected old event " + c.lastRecvEntityEventID.ToString() + ")", Microsoft.Xna.Framework.Color.Red); + DebugConsole.NewMessage(c.Name + " was kicked due to excessive desync (expected old event " + c.LastRecvEntityEventID.ToString() + ")", Microsoft.Xna.Framework.Color.Red); server.DisconnectClient(c, "", "You have been disconnected because of excessive desync"); } ); @@ -168,17 +168,17 @@ namespace Barotrauma.Networking { //the client is waiting for an event that we don't have anymore //(the ID they're expecting is smaller than the ID of the first event in our list) - List toKick = inGameClients.FindAll(c => NetIdUtils.IdMoreRecent(events[0].ID, (UInt16)(c.lastRecvEntityEventID + 1))); + List toKick = inGameClients.FindAll(c => NetIdUtils.IdMoreRecent(events[0].ID, (UInt16)(c.LastRecvEntityEventID + 1))); toKick.ForEach(c => { - DebugConsole.NewMessage(c.name + " was kicked due to excessive desync (expected " + c.lastRecvEntityEventID.ToString() + ", last available is " + events[0].ID.ToString() + ")", Microsoft.Xna.Framework.Color.Red); + DebugConsole.NewMessage(c.Name + " was kicked due to excessive desync (expected " + c.LastRecvEntityEventID.ToString() + ", last available is " + events[0].ID.ToString() + ")", Microsoft.Xna.Framework.Color.Red); server.DisconnectClient(c, "", "You have been disconnected because of excessive desync"); } ); } } - var timedOutClients = clients.FindAll(c => c.inGame && c.NeedsMidRoundSync && Timing.TotalTime > c.MidRoundSyncTimeOut); + var timedOutClients = clients.FindAll(c => c.InGame && c.NeedsMidRoundSync && Timing.TotalTime > c.MidRoundSyncTimeOut); timedOutClients.ForEach(c => GameMain.Server.DisconnectClient(c, "", "You have been disconnected because syncing your client with the server took too long.")); bufferedEvents.RemoveAll(b => b.IsProcessed); @@ -225,7 +225,7 @@ namespace Barotrauma.Networking foreach (NetEntityEvent entityEvent in eventsToSync) { (entityEvent as ServerEntityEvent).Sent = true; - client.entityEventLastSent[entityEvent.ID] = (float)NetTime.Now; + client.EntityEventLastSent[entityEvent.ID] = (float)NetTime.Now; } if (client.NeedsMidRoundSync) @@ -265,7 +265,7 @@ namespace Barotrauma.Networking //find the index of the first event the client hasn't received int startIndex = eventList.Count; while (startIndex > 0 && - NetIdUtils.IdMoreRecent(eventList[startIndex - 1].ID,client.lastRecvEntityEventID)) + NetIdUtils.IdMoreRecent(eventList[startIndex - 1].ID,client.LastRecvEntityEventID)) { startIndex--; } @@ -274,7 +274,7 @@ namespace Barotrauma.Networking { //find the first event that hasn't been sent in 1.5 * roundtriptime or at all float lastSent = 0; - client.entityEventLastSent.TryGetValue(eventList[i].ID, out lastSent); + client.EntityEventLastSent.TryGetValue(eventList[i].ID, out lastSent); if (lastSent > NetTime.Now - client.Connection.AverageRoundtripTime * 1.5f) { @@ -326,7 +326,7 @@ namespace Barotrauma.Networking if (entityID == 0) { msg.ReadPadBits(); - sender.lastSentEntityEventID++; + sender.LastSentEntityEventID++; continue; } @@ -335,11 +335,11 @@ namespace Barotrauma.Networking IClientSerializable entity = Entity.FindEntityByID(entityID) as IClientSerializable; //skip the event if we've already received it or if the entity isn't found - if (thisEventID != (UInt16)(sender.lastSentEntityEventID + 1) || entity == null) + if (thisEventID != (UInt16)(sender.LastSentEntityEventID + 1) || entity == null) { if (GameSettings.VerboseLogging) { - if (thisEventID != (UInt16) (sender.lastSentEntityEventID + 1)) + if (thisEventID != (UInt16) (sender.LastSentEntityEventID + 1)) { DebugConsole.NewMessage("received msg " + thisEventID, Microsoft.Xna.Framework.Color.Red); } @@ -365,7 +365,7 @@ namespace Barotrauma.Networking buffer.Write(msg.ReadBytes(msgLength - 2)); BufferEvent(new BufferedEvent(sender, sender.Character, characterStateID, entity, buffer)); - sender.lastSentEntityEventID++; + sender.LastSentEntityEventID++; } msg.ReadPadBits(); } @@ -400,9 +400,9 @@ namespace Barotrauma.Networking foreach (Client c in server.ConnectedClients) { - c.entityEventLastSent.Clear(); - c.lastRecvEntityEventID = 0; - c.lastSentEntityEventID = 0; + c.EntityEventLastSent.Clear(); + c.LastRecvEntityEventID = 0; + c.LastSentEntityEventID = 0; } } } diff --git a/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs b/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs index 5d2da8958..4ee7b0de3 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/RespawnManager.cs @@ -111,7 +111,7 @@ namespace Barotrauma.Networking private List GetClientsToRespawn() { return networkMember.ConnectedClients.FindAll(c => - c.inGame && + c.InGame && (!c.SpectateOnly || !((GameServer)networkMember).AllowSpectating) && (c.Character == null || c.Character.IsDead)); } @@ -408,10 +408,10 @@ namespace Barotrauma.Networking //all characters are in Team 1 in game modes/missions with only one team. //if at some point we add a game mode with multiple teams where respawning is possible, this needs to be reworked c.TeamID = 1; - if (c.characterInfo == null) c.characterInfo = new CharacterInfo(Character.HumanConfigFile, c.name); + if (c.CharacterInfo == null) c.CharacterInfo = new CharacterInfo(Character.HumanConfigFile, c.Name); } - List characterInfos = clients.Select(c => c.characterInfo).ToList(); + List characterInfos = clients.Select(c => c.CharacterInfo).ToList(); if (server.Character != null && server.Character.IsDead) { characterInfos.Add(server.CharacterInfo); @@ -420,7 +420,7 @@ namespace Barotrauma.Networking server.AssignJobs(clients, server.Character != null && server.Character.IsDead); foreach (Client c in clients) { - c.characterInfo.Job = new Job(c.assignedJob); + c.CharacterInfo.Job = new Job(c.AssignedJob); } //the spawnpoints where the characters will spawn @@ -460,7 +460,7 @@ namespace Barotrauma.Networking { #endif clients[i].Character = character; - GameServer.Log(string.Format("Respawning {0} ({1}) as {2}", clients[i].name, clients[i].Connection?.RemoteEndPoint?.Address, characterInfos[i].Job.Name), ServerLog.MessageType.Spawning); + GameServer.Log(string.Format("Respawning {0} ({1}) as {2}", clients[i].Name, clients[i].Connection?.RemoteEndPoint?.Address, characterInfos[i].Job.Name), ServerLog.MessageType.Spawning); #if CLIENT } diff --git a/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs b/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs index c96b06319..28d430888 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs @@ -127,7 +127,7 @@ namespace Barotrauma kicked.AddKickVote(sender); Client.UpdateKickVotes(GameMain.Server.ConnectedClients); - GameMain.Server.SendChatMessage(sender.name + " has voted to kick " + kicked.name, ChatMessageType.Server, null); + GameMain.Server.SendChatMessage(sender.Name + " has voted to kick " + kicked.Name, ChatMessageType.Server, null); } break;