diff --git a/Subsurface/Source/GUI/GUIListBox.cs b/Subsurface/Source/GUI/GUIListBox.cs index a30f03c8d..b44195a25 100644 --- a/Subsurface/Source/GUI/GUIListBox.cs +++ b/Subsurface/Source/GUI/GUIListBox.cs @@ -389,7 +389,7 @@ namespace Barotrauma for (int i = 0; i < children.Count; i++) { GUIComponent child = children[i]; - if (child == frame) continue; + if (child == frame || !child.Visible) continue; if (!IsChildVisible(child)) { diff --git a/Subsurface/Source/Items/Components/DockingPort.cs b/Subsurface/Source/Items/Components/DockingPort.cs index 57b2519d5..d728398b1 100644 --- a/Subsurface/Source/Items/Components/DockingPort.cs +++ b/Subsurface/Source/Items/Components/DockingPort.cs @@ -752,17 +752,17 @@ namespace Barotrauma.Items.Components if (docked) { if (item.Submarine != null && dockingTarget?.item?.Submarine != null) - GameServer.Log(sender.Name + " docked " + item.Submarine.Name + " to " + dockingTarget.item.Submarine, ServerLog.MessageType.ItemInteraction); + GameServer.Log(sender.Name + " docked " + item.Submarine.Name + " to " + dockingTarget.item.Submarine.Name, ServerLog.MessageType.ItemInteraction); } else { if (item.Submarine != null && prevDockingTarget?.item?.Submarine != null) - GameServer.Log(sender.Name + " undocked " + item.Submarine.Name + " from " + prevDockingTarget.item.Submarine, ServerLog.MessageType.ItemInteraction); + GameServer.Log(sender.Name + " undocked " + item.Submarine.Name + " from " + prevDockingTarget.item.Submarine.Name, ServerLog.MessageType.ItemInteraction); } } } - public void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c, object[] extraData = null) + public void ServerWrite(Lidgren.Network.NetBuffer msg, Client c, object[] extraData = null) { msg.Write(docked); diff --git a/Subsurface/Source/Items/Components/Machines/Deconstructor.cs b/Subsurface/Source/Items/Components/Machines/Deconstructor.cs index ec2e3773b..dee384eec 100644 --- a/Subsurface/Source/Items/Components/Machines/Deconstructor.cs +++ b/Subsurface/Source/Items/Components/Machines/Deconstructor.cs @@ -105,23 +105,23 @@ namespace Barotrauma.Items.Components private bool ToggleActive(GUIButton button, object obj) { - SetActive(!IsActive); + SetActive(!IsActive, Character.Controlled); currPowerConsumption = IsActive ? powerConsumption : 0.0f; if (GameMain.Server != null) { - item.CreateServerEvent(this); + item.CreateServerEvent(this); } else if (GameMain.Client != null) { - item.CreateClientEvent(this); + item.CreateClientEvent(this); } return true; } - private void SetActive(bool active) + private void SetActive(bool active, Character user = null) { container = item.GetComponent(); if (container == null) @@ -134,6 +134,11 @@ namespace Barotrauma.Items.Components IsActive = active; + if (user != null) + { + GameServer.Log(user.Name + (IsActive ? " activated " : " deactivated ") + item.Name, ServerLog.MessageType.ItemInteraction); + } + if (!IsActive) { progressBar.BarSize = 0.0f; @@ -160,11 +165,11 @@ namespace Barotrauma.Items.Components { bool active = msg.ReadBoolean(); - item.CreateServerEvent(this); + item.CreateServerEvent(this); if (item.CanClientAccess(c)) { - SetActive(active); + SetActive(active, c.Character); } } diff --git a/Subsurface/Source/Items/Components/Machines/Fabricator.cs b/Subsurface/Source/Items/Components/Machines/Fabricator.cs index 0184b2a44..649edcc45 100644 --- a/Subsurface/Source/Items/Components/Machines/Fabricator.cs +++ b/Subsurface/Source/Items/Components/Machines/Fabricator.cs @@ -282,29 +282,34 @@ namespace Barotrauma.Items.Components { if (fabricatedItem == null) { - StartFabricating(obj as FabricableItem); + StartFabricating(obj as FabricableItem, Character.Controlled); } else { - CancelFabricating(); + CancelFabricating(Character.Controlled); } if (GameMain.Server != null) { - item.CreateServerEvent(this); + item.CreateServerEvent(this); } else if (GameMain.Client != null) { - item.CreateClientEvent(this); + item.CreateClientEvent(this); } return true; } - private void StartFabricating(FabricableItem selectedItem) + private void StartFabricating(FabricableItem selectedItem, Character user = null) { if (selectedItem == null) return; + if (user != null) + { + GameServer.Log(user.Name + " started fabricating " + selectedItem.TargetItem.Name + " in " + item.Name, ServerLog.MessageType.ItemInteraction); + } + itemList.Enabled = false; activateButton.Text = "Cancel"; @@ -321,8 +326,13 @@ namespace Barotrauma.Items.Components currPowerConsumption = powerConsumption; } - private void CancelFabricating() + private void CancelFabricating(Character user = null) { + if (fabricatedItem != null && user != null) + { + GameServer.Log(user.Name + " cancelled the fabrication of " + fabricatedItem.TargetItem.Name + " in " + item.Name, ServerLog.MessageType.ItemInteraction); + } + itemList.Enabled = true; IsActive = false; fabricatedItem = null; @@ -387,7 +397,7 @@ namespace Barotrauma.Items.Components Entity.Spawner.AddToSpawnQueue(fabricatedItem.TargetItem, containers[1].Inventory); } - CancelFabricating(); + CancelFabricating(null); } public override void DrawHUD(SpriteBatch spriteBatch, Character character) @@ -464,13 +474,13 @@ namespace Barotrauma.Items.Components { int itemIndex = msg.ReadRangedInteger(-1, fabricableItems.Count - 1); - item.CreateServerEvent(this); + item.CreateServerEvent(this); if (!item.CanClientAccess(c)) return; if (itemIndex == -1) { - CancelFabricating(); + CancelFabricating(c.Character); } else { @@ -479,7 +489,7 @@ namespace Barotrauma.Items.Components if (itemIndex < 0 || itemIndex >= fabricableItems.Count) return; SelectItem(null, fabricableItems[itemIndex]); - StartFabricating(fabricableItems[itemIndex]); + StartFabricating(fabricableItems[itemIndex], c.Character); } } diff --git a/Subsurface/Source/Networking/RespawnManager.cs b/Subsurface/Source/Networking/RespawnManager.cs index 06d1c10b5..c5220b685 100644 --- a/Subsurface/Source/Networking/RespawnManager.cs +++ b/Subsurface/Source/Networking/RespawnManager.cs @@ -5,8 +5,6 @@ using Microsoft.Xna.Framework; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Barotrauma.Networking { @@ -202,6 +200,7 @@ namespace Barotrauma.Networking if (shuttleTransportTimer <= 0.0f) { + GameServer.Log("The respawn shuttle is leaving.", ServerLog.MessageType.ServerMessage); state = State.Returning; server.CreateEntityEvent(this); @@ -269,6 +268,7 @@ namespace Barotrauma.Networking ResetShuttle(); state = State.Waiting; + GameServer.Log("The respawn shuttle has left.", ServerLog.MessageType.ServerMessage); server.CreateEntityEvent(this); respawnTimer = respawnInterval; @@ -289,6 +289,8 @@ namespace Barotrauma.Networking shuttleSteering.TargetVelocity = Vector2.Zero; + GameServer.Log("Dispatching the respawn shuttle.", ServerLog.MessageType.ServerMessage); + RespawnCharacters(); CoroutineManager.StopCoroutines("forcepos"); @@ -404,6 +406,8 @@ namespace Barotrauma.Networking List characterInfos = clients.Select(c => c.characterInfo).ToList(); if (server.Character != null && server.Character.IsDead) characterInfos.Add(server.CharacterInfo); + GameServer.Log("Respawning characters: "+string.Join(", ", characterInfos.Select(ci => ci.Name)), ServerLog.MessageType.ServerMessage); + server.AssignJobs(clients, server.Character != null && server.Character.IsDead); foreach (Client c in clients) {