diff --git a/Barotrauma/BarotraumaClient/Source/GUI/GUIComponent.cs b/Barotrauma/BarotraumaClient/Source/GUI/GUIComponent.cs
index 18a473973..65a9f1070 100644
--- a/Barotrauma/BarotraumaClient/Source/GUI/GUIComponent.cs
+++ b/Barotrauma/BarotraumaClient/Source/GUI/GUIComponent.cs
@@ -156,6 +156,8 @@ namespace Barotrauma
public bool IgnoreLayoutGroups;
+ public bool IgnoreLayoutGroups;
+
public virtual ScalableFont Font
{
get;
diff --git a/Barotrauma/BarotraumaClient/Source/GUI/GUIMessageBox.cs b/Barotrauma/BarotraumaClient/Source/GUI/GUIMessageBox.cs
index 86e835550..4436c0ad2 100644
--- a/Barotrauma/BarotraumaClient/Source/GUI/GUIMessageBox.cs
+++ b/Barotrauma/BarotraumaClient/Source/GUI/GUIMessageBox.cs
@@ -119,6 +119,12 @@ namespace Barotrauma
Content = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.85f), InnerFrame.RectTransform, Anchor.Center)) { AbsoluteSpacing = 5 };
Tag = tag;
+ InnerFrame = new GUIFrame(new RectTransform(new Point(width, height), RectTransform, Anchor.Center) { IsFixedSize = false }, style: null);
+ GUI.Style.Apply(InnerFrame, "", this);
+
+ Content = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.85f), InnerFrame.RectTransform, Anchor.Center)) { AbsoluteSpacing = 5 };
+ Tag = tag;
+
if (height == 0)
{
string wrappedText = ToolBox.WrapText(text, Content.Rect.Width, GUI.Font);
diff --git a/Barotrauma/BarotraumaClient/Source/GUI/GUIStyle.cs b/Barotrauma/BarotraumaClient/Source/GUI/GUIStyle.cs
index 1e588a5ec..7e79f942f 100644
--- a/Barotrauma/BarotraumaClient/Source/GUI/GUIStyle.cs
+++ b/Barotrauma/BarotraumaClient/Source/GUI/GUIStyle.cs
@@ -109,79 +109,7 @@ namespace Barotrauma
break;
}
}
- return element.GetAttributeBool("dynamicloading", false);
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
- }
-
- public GUIComponentStyle GetComponentStyle(string name)
- {
- componentStyles.TryGetValue(name.ToLowerInvariant(), out GUIComponentStyle style);
- return style;
+ return 14;
}
public GUIComponentStyle GetComponentStyle(string name)
diff --git a/Barotrauma/BarotraumaClient/Source/GameMain.cs b/Barotrauma/BarotraumaClient/Source/GameMain.cs
index a3335c213..115d83176 100644
--- a/Barotrauma/BarotraumaClient/Source/GameMain.cs
+++ b/Barotrauma/BarotraumaClient/Source/GameMain.cs
@@ -180,6 +180,10 @@ namespace Barotrauma
GUI.KeyboardDispatcher = new EventInput.KeyboardDispatcher(Window);
+ GUI.KeyboardDispatcher = new EventInput.KeyboardDispatcher(Window);
+
+
+ PerformanceCounter = new PerformanceCounter();
PerformanceCounter = new PerformanceCounter();
diff --git a/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs b/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs
index f97bd8812..ff992b7b2 100644
--- a/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs
+++ b/Barotrauma/BarotraumaClient/Source/GameSession/CrewManager.cs
@@ -69,11 +69,6 @@ namespace Barotrauma
public CrewManager(XElement element, bool isSinglePlayer)
: this(isSinglePlayer)
- {
- return characterListBox.Rect;
- }
-
- partial void InitProjectSpecific()
{
guiFrame = new GUIFrame(new RectTransform(Vector2.One, GUICanvas.Instance), null, Color.Transparent)
{
@@ -95,14 +90,64 @@ namespace Barotrauma
return true;
};
- var characterInfo = new CharacterInfo(subElement);
- characterInfos.Add(characterInfo);
- foreach (XElement invElement in subElement.Elements())
+ characterListBox = new GUIListBox(new RectTransform(new Point(100, (int)(crewArea.Rect.Height - scrollButtonSize.Y * 1.6f)), crewArea.RectTransform, Anchor.CenterLeft), false, Color.Transparent, null)
+ {
+ //Spacing = (int)(3 * GUI.Scale),
+ ScrollBarEnabled = false,
+ ScrollBarVisible = false,
+ CanBeFocused = false
+ };
+
+ scrollButtonUp = new GUIButton(new RectTransform(scrollButtonSize, crewArea.RectTransform, Anchor.TopLeft, Pivot.TopLeft), "", Alignment.Center, "GUIButtonVerticalArrow")
+ {
+ Visible = false,
+ UserData = -1,
+ OnClicked = ScrollCharacterList
+ };
+ scrollButtonDown = new GUIButton(new RectTransform(scrollButtonSize, crewArea.RectTransform, Anchor.BottomLeft, Pivot.BottomLeft), "", Alignment.Center, "GUIButtonVerticalArrow")
+ {
+ Visible = false,
+ UserData = 1,
+ OnClicked = ScrollCharacterList
+ };
+ scrollButtonDown.Children.ForEach(c => c.SpriteEffects = SpriteEffects.FlipVertically);
+
+ if (isSinglePlayer)
+ {
+ ChatBox = new ChatBox(guiFrame, isSinglePlayer: true)
{
- if (invElement.Name.ToString().ToLowerInvariant() != "inventory") continue;
- characterInfo.InventoryData = invElement;
- break;
- }
+ OnEnterMessage = (textbox, text) =>
+ {
+ if (Character.Controlled?.Info == null)
+ {
+ textbox.Deselect();
+ textbox.Text = "";
+ return true;
+ }
+
+ textbox.TextColor = ChatMessage.MessageColor[(int)ChatMessageType.Default];
+
+ if (!string.IsNullOrWhiteSpace(text))
+ {
+ string msgCommand = ChatMessage.GetChatMessageCommand(text, out string msg);
+ AddSinglePlayerChatMessage(
+ Character.Controlled.Info.Name,
+ msg,
+ ((msgCommand == "r" || msgCommand == "radio") && ChatMessage.CanUseRadio(Character.Controlled)) ? ChatMessageType.Radio : ChatMessageType.Default,
+ Character.Controlled);
+ var headset = GetHeadset(Character.Controlled, true);
+ if (headset != null && headset.CanTransmit())
+ {
+ headset.TransmitSignal(stepsTaken: 0, signal: msg, source: headset.Item, sender: Character.Controlled, sendToChat: false);
+ }
+ }
+ textbox.Deselect();
+ textbox.Text = "";
+ return true;
+ }
+ };
+
+ ChatBox.InputBox.OnTextChanged += ChatBox.TypingChatMessage;
}
var reports = Order.PrefabList.FindAll(o => o.TargetAllCharacters && o.SymbolSprite != null);
@@ -114,39 +159,14 @@ namespace Barotrauma
CanBeFocused = false
};
- //report buttons
- foreach (Order order in reports)
- {
- if (!order.TargetAllCharacters || order.SymbolSprite == null) continue;
- var btn = new GUIButton(new RectTransform(new Point(reportButtonFrame.Rect.Width), reportButtonFrame.RectTransform), style: null)
+ var characterInfo = new CharacterInfo(subElement);
+ characterInfos.Add(characterInfo);
+ foreach (XElement invElement in subElement.Elements())
{
- OnClicked = (GUIButton button, object userData) =>
- {
- if (Character.Controlled == null || Character.Controlled.SpeechImpediment >= 100.0f) return false;
- SetCharacterOrder(null, order, null, Character.Controlled);
- HumanAIController.PropagateHullSafety(Character.Controlled, Character.Controlled.CurrentHull);
- return true;
- },
- UserData = order,
- ToolTip = order.Name
- };
-
- new GUIFrame(new RectTransform(new Vector2(1.5f), btn.RectTransform, Anchor.Center), "OuterGlow")
- {
- Color = Color.Red * 0.8f,
- HoverColor = Color.Red * 1.0f,
- PressedColor = Color.Red * 0.6f,
- UserData = "highlighted",
- CanBeFocused = false,
- Visible = false
- };
-
- var img = new GUIImage(new RectTransform(Vector2.One, btn.RectTransform), order.Prefab.SymbolSprite, scaleToFit: true)
- {
- Color = order.Color,
- HoverColor = Color.Lerp(order.Color, Color.White, 0.5f),
- ToolTip = order.Name
- };
+ if (invElement.Name.ToString().ToLowerInvariant() != "inventory") continue;
+ characterInfo.InventoryData = invElement;
+ break;
+ }
}
screenResolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight);
diff --git a/Barotrauma/BarotraumaClient/Source/Map/Hull.cs b/Barotrauma/BarotraumaClient/Source/Map/Hull.cs
index 1d5025f22..8fb53aae8 100644
--- a/Barotrauma/BarotraumaClient/Source/Map/Hull.cs
+++ b/Barotrauma/BarotraumaClient/Source/Map/Hull.cs
@@ -677,6 +677,33 @@ namespace Barotrauma
Color.Green, width: 2);
}
}
+
+ foreach (MapEntity e in linkedTo)
+ {
+ if (e is Hull)
+ {
+ Hull linkedHull = (Hull)e;
+ Rectangle connectedHullRect = e.Submarine == null ?
+ linkedHull.rect :
+ new Rectangle(
+ (int)(Submarine.DrawPosition.X + linkedHull.WorldPosition.X),
+ (int)(Submarine.DrawPosition.Y + linkedHull.WorldPosition.Y),
+ linkedHull.WorldRect.Width, linkedHull.WorldRect.Height);
+
+ //center of the hull
+ Rectangle currentHullRect = Submarine == null ?
+ WorldRect :
+ new Rectangle(
+ (int)(Submarine.DrawPosition.X + WorldPosition.X),
+ (int)(Submarine.DrawPosition.Y + WorldPosition.Y),
+ WorldRect.Width, WorldRect.Height);
+
+ GUI.DrawLine(spriteBatch,
+ new Vector2(currentHullRect.X, -currentHullRect.Y),
+ new Vector2(connectedHullRect.X, -connectedHullRect.Y),
+ Color.Green, width: 2);
+ }
+ }
}
public static void UpdateVertices(GraphicsDevice graphicsDevice, Camera cam, WaterRenderer renderer)
diff --git a/Barotrauma/BarotraumaShared/SharedContent.projitems b/Barotrauma/BarotraumaShared/SharedContent.projitems
index 36cf4eb81..dfe87235b 100644
--- a/Barotrauma/BarotraumaShared/SharedContent.projitems
+++ b/Barotrauma/BarotraumaShared/SharedContent.projitems
@@ -1971,7 +1971,7 @@
PreserveNewest
-
+
PreserveNewest
@@ -1980,7 +1980,7 @@
PreserveNewest
-
+
PreserveNewest
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
index 876971cab..148b9168d 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/AI/EnemyAIController.cs
@@ -1074,6 +1074,8 @@ namespace Barotrauma
private bool IsProperlyLatchedOnSub => LatchOntoAI != null && LatchOntoAI.IsAttachedToSub && SelectedAiTarget?.Entity == wallTarget?.Structure;
+ private bool IsProperlyLatchedOnSub => LatchOntoAI != null && LatchOntoAI.IsAttachedToSub && SelectedAiTarget?.Entity == wallTarget?.Structure;
+
//goes through all the AItargets, evaluates how preferable it is to attack the target,
//whether the Character can see/hear the target and chooses the most preferable target within
//sight/hearing range
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
index 41e76e756..b803d6e93 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
@@ -2646,6 +2646,10 @@ namespace Barotrauma
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
#endif
+#if CLIENT
+ GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
+#endif
+
#if CLIENT
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
#endif
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Steering.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Steering.cs
index 8d160a611..e2f421209 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Steering.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Components/Machines/Steering.cs
@@ -341,6 +341,19 @@ namespace Barotrauma.Items.Components
return true;
}
+ public override void OnItemLoaded()
+ {
+ sonar = item.GetComponent();
+ }
+
+ public override bool Select(Character character)
+ {
+ if (!CanBeSelected) return false;
+
+ user = character;
+ return true;
+ }
+
public override void Update(float deltaTime, Camera cam)
{
networkUpdateTimer -= deltaTime;
diff --git a/Barotrauma/BarotraumaShared/Source/Items/Item.cs b/Barotrauma/BarotraumaShared/Source/Items/Item.cs
index e0cb0818a..6d60a62ed 100644
--- a/Barotrauma/BarotraumaShared/Source/Items/Item.cs
+++ b/Barotrauma/BarotraumaShared/Source/Items/Item.cs
@@ -1128,6 +1128,10 @@ namespace Barotrauma
{
ApplyStatusEffects(!waterProof && inWater ? ActionType.InWater : ActionType.NotInWater, deltaTime);
}
+ if (!broken)
+ {
+ ApplyStatusEffects(!waterProof && inWater ? ActionType.InWater : ActionType.NotInWater, deltaTime);
+ }
ApplyStatusEffects(!waterProof && inWater ? ActionType.InWater : ActionType.NotInWater, deltaTime);
if (body == null || !body.Enabled || !inWater || ParentInventory != null || Removed) { return; }
diff --git a/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs b/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs
index 11bf41f6c..686cd222f 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/FireSource.cs
@@ -24,6 +24,8 @@ namespace Barotrauma
private bool removed;
+ private bool removed;
+
#if CLIENT
private List burnDecals = new List();
#endif
diff --git a/Barotrauma/BarotraumaShared/Source/Map/Hull.cs b/Barotrauma/BarotraumaShared/Source/Map/Hull.cs
index 604b6395c..6bdb60acf 100644
--- a/Barotrauma/BarotraumaShared/Source/Map/Hull.cs
+++ b/Barotrauma/BarotraumaShared/Source/Map/Hull.cs
@@ -318,6 +318,25 @@ namespace Barotrauma
}
}
+ public string DisplayName
+ {
+ get;
+ private set;
+ }
+
+ private string roomName;
+ [Editable, Serialize("", true, translationTextTag: "RoomName.")]
+ public string RoomName
+ {
+ get { return roomName; }
+ set
+ {
+ if (roomName == value) { return; }
+ roomName = value;
+ DisplayName = TextManager.Get(roomName, returnNull: true) ?? roomName;
+ }
+ }
+
public override Rectangle Rect
{
get
diff --git a/Barotrauma/BarotraumaShared/Source/PlayerInput.cs b/Barotrauma/BarotraumaShared/Source/PlayerInput.cs
index 8ad826eea..e13028523 100644
--- a/Barotrauma/BarotraumaShared/Source/PlayerInput.cs
+++ b/Barotrauma/BarotraumaShared/Source/PlayerInput.cs
@@ -162,21 +162,6 @@ namespace Barotrauma
get { return binding; }
}
- public void SetState()
- {
- hit = binding.IsHit();
- if (hit) hitQueue = true;
-
- held = binding.IsDown();
- if (held) heldQueue = true;
- }
-#endif
-
- public KeyOrMouse State
- {
- get { return binding; }
- }
-
public void SetState()
{
hit = binding.IsHit();