diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 5893ecbdb..d47be2aab 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -2444,6 +2444,9 @@ namespace Barotrauma { GameMain.Client.Character = character; Controlled = character; + + GameMain.LightManager.LosEnabled = true; + character.memInput.Clear(); character.memPos.Clear(); character.memLocalPos.Clear(); diff --git a/Subsurface/Source/GUI/GUIListBox.cs b/Subsurface/Source/GUI/GUIListBox.cs index 44f0fd17a..6c6cb3ee2 100644 --- a/Subsurface/Source/GUI/GUIListBox.cs +++ b/Subsurface/Source/GUI/GUIListBox.cs @@ -293,36 +293,6 @@ namespace Barotrauma { scrollBar.BarScroll -= (PlayerInput.ScrollWheelSpeed / 500.0f) * BarSize; } - - for (int i = 0; i < children.Count; i++) - { - GUIComponent child = children[i]; - if (child == frame || !child.Visible) continue; - - if (enabled && child.CanBeFocused && - (MouseOn == this || (MouseOn != null && this.IsParentOf(MouseOn))) && child.Rect.Contains(PlayerInput.MousePosition)) - { - child.State = ComponentState.Hover; - if (PlayerInput.LeftButtonClicked()) - { - Debug.WriteLine("clicked"); - Select(i); - } - } - else if (selected.Contains(child)) - { - child.State = ComponentState.Selected; - - if (CheckSelected != null) - { - if (CheckSelected() != child.UserData) selected.Remove(child); - } - } - else - { - child.State = ComponentState.None; - } - } } public void Select(int childIndex, bool force = false) diff --git a/Subsurface/Source/GameSession/GameSession.cs b/Subsurface/Source/GameSession/GameSession.cs index a78996803..acfcc27a8 100644 --- a/Subsurface/Source/GameSession/GameSession.cs +++ b/Subsurface/Source/GameSession/GameSession.cs @@ -170,7 +170,7 @@ namespace Barotrauma public void StartShift(Level level, bool reloadSub = true, bool loadSecondSub = false) { - GameMain.LightManager.LosEnabled = (GameMain.Server==null || GameMain.Server.CharacterInfo!=null); + GameMain.LightManager.LosEnabled = GameMain.NetworkMember == null || GameMain.NetworkMember.CharacterInfo != null; this.level = level; diff --git a/Subsurface/Source/Networking/GameClient.cs b/Subsurface/Source/Networking/GameClient.cs index d786d62ac..66ed3eb0f 100644 --- a/Subsurface/Source/Networking/GameClient.cs +++ b/Subsurface/Source/Networking/GameClient.cs @@ -577,6 +577,8 @@ namespace Barotrauma.Networking if (Character != null) Character.Remove(); Entity.Spawner.Clear(); + entityEventManager.Clear(); + LastSentEntityEventID = 0; endVoteTickBox.Selected = false; diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index fb919d7c9..13668474b 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -906,6 +906,12 @@ namespace Barotrauma.Networking List characterInfos = new List(); foreach (Client client in connectedClients) { + client.lastRecvEntitySpawnID = 0; + + client.entityEventLastSent.Clear(); + client.lastSentEntityEventID = 0; + client.lastRecvEntityEventID = 0; + if (client.characterInfo == null) { client.characterInfo = new CharacterInfo(Character.HumanConfigFile, client.name); diff --git a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs index 7f0838d03..e82ece6ff 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs @@ -120,6 +120,8 @@ namespace Barotrauma.Networking { ID = 0; + lastReceivedID = 0; + events.Clear(); eventLastSent.Clear(); } diff --git a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs index d3ec8f004..2a76f05f6 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs @@ -31,7 +31,6 @@ namespace Barotrauma.Networking //write into a temporary buffer so we can write the length before the actual data NetBuffer tempBuffer = new NetBuffer(); WriteEvent(tempBuffer, e, recipient); - tempBuffer.WritePadBits(); Debug.Assert( tempBuffer.LengthBytes < 256, @@ -40,6 +39,7 @@ namespace Barotrauma.Networking msg.Write((UInt16)e.Entity.ID); msg.Write((byte)tempBuffer.LengthBytes); msg.Write(tempBuffer); + msg.WritePadBits(); } }