diff --git a/Subsurface/Content/Map/StructurePrefabs.xml b/Subsurface/Content/Map/StructurePrefabs.xml index 711353e8f..7fc9df42a 100644 --- a/Subsurface/Content/Map/StructurePrefabs.xml +++ b/Subsurface/Content/Map/StructurePrefabs.xml @@ -78,7 +78,7 @@ width="24" height="32" resizevertical="true"/> + width = "128" height ="49" body="true" health="100"/> diff --git a/Subsurface/Content/Map/testroom.png b/Subsurface/Content/Map/testroom.png index 00f2787d5..3672e0776 100644 Binary files a/Subsurface/Content/Map/testroom.png and b/Subsurface/Content/Map/testroom.png differ diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs index 308dbada2..1135aa8ca 100644 --- a/Subsurface/Source/DebugConsole.cs +++ b/Subsurface/Source/DebugConsole.cs @@ -363,8 +363,47 @@ namespace Barotrauma case "controlcharacter": case "control": if (commands.Length < 2) break; - string name = string.Join(" ", commands.Skip(1)).ToLowerInvariant(); - Character.Controlled = Character.CharacterList.Find(c => !c.IsNetworkPlayer && c.Name.ToLowerInvariant() == name); + + int characterIndex; + string characterName; + if (int.TryParse(commands.Last(), out characterIndex)) + { + characterName = string.Join(" ", commands.Skip(1).Take(commands.Length-2)).ToLowerInvariant(); + } + else + { + characterName = string.Join(" ", commands.Skip(1)).ToLowerInvariant(); + characterIndex = -1; + } + + var matchingCharacters = Character.CharacterList.FindAll(c => !c.IsNetworkPlayer && c.Name.ToLowerInvariant() == characterName); + + if (!matchingCharacters.Any()) + { + ThrowError("Matching characters not found"); + return; + } + + if (characterIndex==-1) + { + Character.Controlled = matchingCharacters.First(); + if (matchingCharacters.Count > 1) + { + NewMessage( + "Found multiple matching characters. "+ + "Use \"control [charactername] [0-"+(matchingCharacters.Count-1)+"]\" to choose which character to control.", + Color.LightGray); + } + } + else if (characterIndex<0 || characterIndex>= matchingCharacters.Count) + { + ThrowError("Character index out of range. Select an index between 0 and " + (matchingCharacters.Count - 1)); + } + else + { + Character.Controlled = matchingCharacters[characterIndex]; + } + break; case "godmode": if (Submarine.MainSub == null) return; diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 368a0f90c..8e4898810 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -1522,7 +1522,7 @@ namespace Barotrauma.Networking } else { - GameServer.Log(message.Text, message.Color); + GameServer.Log(message.TextWithSender, message.Color); } sender.ChatSpamSpeed += 5.0f; diff --git a/Subsurface/Source/Networking/NetworkMember.cs b/Subsurface/Source/Networking/NetworkMember.cs index 027b1afb2..d18587249 100644 --- a/Subsurface/Source/Networking/NetworkMember.cs +++ b/Subsurface/Source/Networking/NetworkMember.cs @@ -264,6 +264,7 @@ namespace Barotrauma.Networking public void AddChatMessage(ChatMessage message) { + if (message.Type == ChatMessageType.Radio && Character.Controlled != null && message.Sender != null && message.Sender != myCharacter) @@ -278,6 +279,8 @@ namespace Barotrauma.Networking return; } + GameServer.Log(message.TextWithSender, message.Color); + string displayedText = message.Text; if (message.Sender != null) @@ -293,8 +296,6 @@ namespace Barotrauma.Networking GameMain.NetLobbyScreen.NewChatMessage(message); - GameServer.Log(message.Text, message.Color); - while (chatBox.CountChildren > 20) { chatBox.RemoveChild(chatBox.children[1]); @@ -304,7 +305,7 @@ namespace Barotrauma.Networking { displayedText = message.SenderName + ": " + displayedText; } - + GUITextBlock msg = new GUITextBlock(new Rectangle(0, 0, 0, 20), displayedText, ((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black * 0.1f, message.Color, Alignment.Left, null, null, true); diff --git a/Subsurface/Source/Networking/ServerLog.cs b/Subsurface/Source/Networking/ServerLog.cs index a4b3858a8..ecdc5b2d4 100644 --- a/Subsurface/Source/Networking/ServerLog.cs +++ b/Subsurface/Source/Networking/ServerLog.cs @@ -98,10 +98,10 @@ namespace Barotrauma.Networking { float prevSize = listBox.BarSize; - var textBlock = new GUITextBlock(new Rectangle(0, 0, 0, 0), line.Text, GUI.Style, Alignment.TopLeft, Alignment.TopLeft, null, true, GUI.SmallFont); + var textBlock = new GUITextBlock(new Rectangle(0, 0, 0, 0), line.Text, GUI.Style, Alignment.TopLeft, Alignment.TopLeft, listBox, true, GUI.SmallFont); textBlock.Rect = new Rectangle(textBlock.Rect.X, textBlock.Rect.Y, textBlock.Rect.Width, Math.Max(13, textBlock.Rect.Height)); - listBox.AddChild(textBlock); + //listBox.AddChild(textBlock); textBlock.TextColor = line.Color; textBlock.CanBeFocused = false;