(76e16f98e) Use outdoorsteering when far enough from the sub. Increase the wait until reachable time a bit.
This commit is contained in:
@@ -273,7 +273,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
IsHorizontal = false
|
IsHorizontal = false
|
||||||
};
|
};
|
||||||
cprButton = new GUIButton(new RectTransform(new Point((int)(80 * GUI.Scale)), GUI.Canvas), text: "", style: "CPRButton")
|
cprButton = new GUIButton(new RectTransform(new Point(80, 80), GUI.Canvas), text: "", style: "CPRButton")
|
||||||
{
|
{
|
||||||
OnClicked = (button, userData) =>
|
OnClicked = (button, userData) =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -396,11 +396,8 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
MouseOn.DrawToolTip(spriteBatch);
|
MouseOn.DrawToolTip(spriteBatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GameMain.WindowActive)
|
Cursor.Draw(spriteBatch, PlayerInput.LatestMousePosition);
|
||||||
{
|
|
||||||
Cursor.Draw(spriteBatch, PlayerInput.LatestMousePosition, 0, Scale / 2f);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawBackgroundSprite(SpriteBatch spriteBatch, Sprite backgroundSprite, float blurAmount = 1.0f, float aberrationStrength = 1.0f)
|
public static void DrawBackgroundSprite(SpriteBatch spriteBatch, Sprite backgroundSprite, float blurAmount = 1.0f, float aberrationStrength = 1.0f)
|
||||||
@@ -570,7 +567,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
private static void HandlePersistingElements(float deltaTime)
|
private static void HandlePersistingElements(float deltaTime)
|
||||||
{
|
{
|
||||||
if (GUIMessageBox.VisibleBox != null && GUIMessageBox.VisibleBox.UserData as string != "verificationprompt" && GUIMessageBox.VisibleBox.UserData as string != "bugreporter")
|
if (GUIMessageBox.VisibleBox != null && GUIMessageBox.VisibleBox.UserData as string != "verificationprompt")
|
||||||
{
|
{
|
||||||
GUIMessageBox.VisibleBox.AddToGUIUpdateList();
|
GUIMessageBox.VisibleBox.AddToGUIUpdateList();
|
||||||
}
|
}
|
||||||
@@ -585,7 +582,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
//the "are you sure you want to quit" prompts are drawn on top of everything else
|
//the "are you sure you want to quit" prompts are drawn on top of everything else
|
||||||
if (GUIMessageBox.VisibleBox?.UserData as string == "verificationprompt" || GUIMessageBox.VisibleBox?.UserData as string == "bugreporter")
|
if (GUIMessageBox.VisibleBox?.UserData as string == "verificationprompt")
|
||||||
{
|
{
|
||||||
GUIMessageBox.VisibleBox.AddToGUIUpdateList();
|
GUIMessageBox.VisibleBox.AddToGUIUpdateList();
|
||||||
}
|
}
|
||||||
@@ -1447,16 +1444,7 @@ namespace Barotrauma
|
|||||||
RelativeSpacing = 0.05f
|
RelativeSpacing = 0.05f
|
||||||
};
|
};
|
||||||
|
|
||||||
var button = new GUIButton(new RectTransform(new Vector2(1.0f, 0.1f), buttonContainer.RectTransform), TextManager.Get("bugreportbutton"), style: "GUIButtonLarge")
|
var button = new GUIButton(new RectTransform(new Vector2(1.0f, 0.1f), buttonContainer.RectTransform), TextManager.Get("PauseMenuResume"), style: "GUIButtonLarge")
|
||||||
{
|
|
||||||
Color = Color.Red,
|
|
||||||
HoverColor = Color.DarkRed,
|
|
||||||
PressedColor = Color.White,
|
|
||||||
OnClicked = (btn, userdata) => { GameMain.Instance.ShowBugReporter(); return true; }
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
button = new GUIButton(new RectTransform(new Vector2(1.0f, 0.1f), buttonContainer.RectTransform), TextManager.Get("PauseMenuResume"), style: "GUIButtonLarge")
|
|
||||||
{
|
{
|
||||||
OnClicked = TogglePauseMenu
|
OnClicked = TogglePauseMenu
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
InnerFrame.RectTransform.NonScaledSize =
|
InnerFrame.RectTransform.NonScaledSize =
|
||||||
new Point(InnerFrame.Rect.Width, (int)Math.Max(height / Content.RectTransform.RelativeSize.Y, height + (int)(50 * GUI.yScale)));
|
new Point(InnerFrame.Rect.Width, (int)Math.Max(height / Content.RectTransform.RelativeSize.Y, height + 50));
|
||||||
Content.RectTransform.NonScaledSize =
|
Content.RectTransform.NonScaledSize =
|
||||||
new Point(Content.Rect.Width, height);
|
new Point(Content.Rect.Width, height);
|
||||||
}
|
}
|
||||||
@@ -99,7 +99,7 @@ namespace Barotrauma
|
|||||||
Buttons = new List<GUIButton>(buttons.Length);
|
Buttons = new List<GUIButton>(buttons.Length);
|
||||||
for (int i = 0; i < buttons.Length; i++)
|
for (int i = 0; i < buttons.Length; i++)
|
||||||
{
|
{
|
||||||
var button = new GUIButton(new RectTransform(new Vector2(Math.Min(0.9f / buttons.Length, 0.5f), 1.0f), buttonContainer.RectTransform), buttons[i], style: "GUIButtonLarge");
|
var button = new GUIButton(new RectTransform(new Vector2(Math.Min(0.9f / buttons.Length, 0.5f), 1.0f), buttonContainer.RectTransform, maxSize: new Point(300, 35)), buttons[i], style: "GUIButtonLarge");
|
||||||
Buttons.Add(button);
|
Buttons.Add(button);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ namespace Barotrauma
|
|||||||
SoundManager.SetCategoryGainMultiplier("ui", Config.SoundVolume);
|
SoundManager.SetCategoryGainMultiplier("ui", Config.SoundVolume);
|
||||||
SoundManager.SetCategoryGainMultiplier("waterambience", Config.SoundVolume);
|
SoundManager.SetCategoryGainMultiplier("waterambience", Config.SoundVolume);
|
||||||
SoundManager.SetCategoryGainMultiplier("music", Config.MusicVolume);
|
SoundManager.SetCategoryGainMultiplier("music", Config.MusicVolume);
|
||||||
SoundManager.SetCategoryGainMultiplier("voip", Config.VoiceChatVolume * 5.0f);
|
SoundManager.SetCategoryGainMultiplier("voip", Config.VoiceChatVolume);
|
||||||
if (Config.EnableSplashScreen)
|
if (Config.EnableSplashScreen)
|
||||||
{
|
{
|
||||||
var pendingSplashScreens = TitleScreen.PendingSplashScreens;
|
var pendingSplashScreens = TitleScreen.PendingSplashScreens;
|
||||||
@@ -666,7 +666,7 @@ namespace Barotrauma
|
|||||||
(NetworkMember == null || !NetworkMember.GameStarted);
|
(NetworkMember == null || !NetworkMember.GameStarted);
|
||||||
|
|
||||||
#if !DEBUG
|
#if !DEBUG
|
||||||
if (NetworkMember == null && !WindowActive && !paused && true && Screen.Selected != MainMenuScreen && Config.PauseOnFocusLost)
|
if (NetworkMember == null && !WindowActive && !paused && true && Screen.Selected != MainMenuScreen)
|
||||||
{
|
{
|
||||||
GUI.TogglePauseMenu();
|
GUI.TogglePauseMenu();
|
||||||
paused = true;
|
paused = true;
|
||||||
@@ -812,19 +812,17 @@ namespace Barotrauma
|
|||||||
// ToDo: Move texts/links to localization, when possible.
|
// ToDo: Move texts/links to localization, when possible.
|
||||||
public void ShowBugReporter()
|
public void ShowBugReporter()
|
||||||
{
|
{
|
||||||
var msgBox = new GUIMessageBox(TextManager.Get("bugreportbutton"), "");
|
var msgBox = new GUIMessageBox("", "");
|
||||||
msgBox.UserData = "bugreporter";
|
var linkHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), msgBox.Content.RectTransform)) { Stretch = true, RelativeSpacing = 0.05f };
|
||||||
var linkHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), msgBox.Content.RectTransform)) { Stretch = true, RelativeSpacing = 0.025f };
|
|
||||||
linkHolder.RectTransform.MaxSize = new Point(int.MaxValue, linkHolder.Rect.Height);
|
|
||||||
|
|
||||||
List<Pair<string, string>> links = new List<Pair<string, string>>()
|
List<Pair<string, string>> links = new List<Pair<string, string>>()
|
||||||
{
|
{
|
||||||
new Pair<string, string>(TextManager.Get("bugreportfeedbackform"),"https://barotraumagame.com/feedback"),
|
new Pair<string, string>("Barotrauma Feedback Form","https://barotraumagame.com/feedback"),
|
||||||
new Pair<string, string>(TextManager.Get("bugreportgithubform"),"https://github.com/Regalis11/Barotrauma/issues/new?template=bug_report.md")
|
new Pair<string, string>("Github Issue Form (Needs account)","https://github.com/Regalis11/Barotrauma/issues/new?template=bug_report.md")
|
||||||
};
|
};
|
||||||
foreach (var link in links)
|
foreach (var link in links)
|
||||||
{
|
{
|
||||||
new GUIButton(new RectTransform(new Vector2(1.0f, 1.0f), linkHolder.RectTransform), link.First, style: "MainMenuGUIButton", textAlignment: Alignment.Left)
|
new GUIButton(new RectTransform(new Vector2(1.0f, 0.2f), linkHolder.RectTransform), link.First, style: "MainMenuGUIButton", textAlignment: Alignment.Left)
|
||||||
{
|
{
|
||||||
UserData = link.Second,
|
UserData = link.Second,
|
||||||
OnClicked = (btn, userdata) =>
|
OnClicked = (btn, userdata) =>
|
||||||
@@ -835,9 +833,6 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
msgBox.InnerFrame.RectTransform.MinSize = new Point(0,
|
|
||||||
msgBox.InnerFrame.Rect.Height + linkHolder.Rect.Height + msgBox.Content.AbsoluteSpacing * 2 + (int)(50 * GUI.Scale));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool waitForKeyHit = true;
|
static bool waitForKeyHit = true;
|
||||||
|
|||||||
@@ -85,6 +85,13 @@ namespace Barotrauma
|
|||||||
TextManager.Get("Settings"), textAlignment: Alignment.TopLeft, font: GUI.LargeFont)
|
TextManager.Get("Settings"), textAlignment: Alignment.TopLeft, font: GUI.LargeFont)
|
||||||
{ ForceUpperCase = true };
|
{ ForceUpperCase = true };
|
||||||
|
|
||||||
|
//TODO: enable when new texts can be added
|
||||||
|
/*new GUIButton(new RectTransform(new Vector2(1.0f, 0.75f), settingsTitle.RectTransform, Anchor.CenterRight), style: "GUIBugButton")
|
||||||
|
{
|
||||||
|
ToolTip = "Bug Reporter",
|
||||||
|
OnClicked = (btn, userdata) => { GameMain.Instance.ShowBugReporter(); return true; }
|
||||||
|
};*/
|
||||||
|
|
||||||
var generalLayoutGroup = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), leftPanel.RectTransform, Anchor.TopLeft));
|
var generalLayoutGroup = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), leftPanel.RectTransform, Anchor.TopLeft));
|
||||||
|
|
||||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), generalLayoutGroup.RectTransform), TextManager.Get("ContentPackages"));
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), generalLayoutGroup.RectTransform), TextManager.Get("ContentPackages"));
|
||||||
@@ -171,12 +178,6 @@ namespace Barotrauma
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
new GUIButton(new RectTransform(new Vector2(0.05f, 0.75f), tabButtonHolder.RectTransform, Anchor.BottomRight) { RelativeOffset = new Vector2(0.0f, 0.2f) }, style: "GUIBugButton")
|
|
||||||
{
|
|
||||||
ToolTip = TextManager.Get("bugreportbutton"),
|
|
||||||
OnClicked = (btn, userdata) => { GameMain.Instance.ShowBugReporter(); return true; }
|
|
||||||
};
|
|
||||||
|
|
||||||
var buttonArea = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.08f), paddedFrame.RectTransform, Anchor.BottomCenter), style: null);
|
var buttonArea = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.08f), paddedFrame.RectTransform, Anchor.BottomCenter), style: null);
|
||||||
|
|
||||||
/// Graphics tab --------------------------------------------------------------
|
/// Graphics tab --------------------------------------------------------------
|
||||||
@@ -463,6 +464,10 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
DebugConsole.NewMessage(name + " " + name.Length.ToString(), Color.Lime);
|
DebugConsole.NewMessage(name + " " + name.Length.ToString(), Color.Lime);
|
||||||
}
|
}
|
||||||
|
deviceList.OnSelected = (GUIComponent selected, object obj) =>
|
||||||
|
{
|
||||||
|
string name = obj as string;
|
||||||
|
if (VoiceCaptureDevice == name) { return true; }
|
||||||
|
|
||||||
GUITickBox directionalVoiceChat = new GUITickBox(new RectTransform(new Point(32, 32), audioSliders.RectTransform), TextManager.Get("DirectionalVoiceChat"));
|
GUITickBox directionalVoiceChat = new GUITickBox(new RectTransform(new Point(32, 32), audioSliders.RectTransform), TextManager.Get("DirectionalVoiceChat"));
|
||||||
directionalVoiceChat.Selected = UseDirectionalVoiceChat;
|
directionalVoiceChat.Selected = UseDirectionalVoiceChat;
|
||||||
|
|||||||
@@ -543,10 +543,7 @@ namespace Barotrauma
|
|||||||
//equipped item that can't be put in the inventory, use delayed dropping
|
//equipped item that can't be put in the inventory, use delayed dropping
|
||||||
if (quickUseAction == QuickUseAction.Drop)
|
if (quickUseAction == QuickUseAction.Drop)
|
||||||
{
|
{
|
||||||
slots[i].QuickUseButtonToolTip =
|
slots[i].QuickUseButtonToolTip = "Hold to unequip";
|
||||||
TextManager.Get("QuickUseAction.HoldToUnequip", returnNull: true) ??
|
|
||||||
(GameMain.Config.Language == "English" ? "Hold to unequip" : TextManager.Get("QuickUseAction.Unequip"));
|
|
||||||
|
|
||||||
if (PlayerInput.LeftButtonHeld())
|
if (PlayerInput.LeftButtonHeld())
|
||||||
{
|
{
|
||||||
slots[i].QuickUseTimer = Math.Max(0.1f, slots[i].QuickUseTimer + deltaTime);
|
slots[i].QuickUseTimer = Math.Max(0.1f, slots[i].QuickUseTimer + deltaTime);
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ namespace Barotrauma.Items.Components
|
|||||||
RelativeSpacing = 0.05f
|
RelativeSpacing = 0.05f
|
||||||
};
|
};
|
||||||
|
|
||||||
var outLabel = new GUITextBlock(new RectTransform(new Vector2(0.3f, 1.0f), sliderArea.RectTransform),
|
new GUITextBlock(new RectTransform(new Vector2(0.15f, 1.0f), sliderArea.RectTransform),
|
||||||
TextManager.Get("PumpOut"), textAlignment: Alignment.Center, wrap: true, font: GUI.SmallFont);
|
TextManager.Get("PumpOut"), textAlignment: Alignment.Center, wrap: true, font: GUI.SmallFont);
|
||||||
pumpSpeedSlider = new GUIScrollBar(new RectTransform(new Vector2(0.8f, 1.0f), sliderArea.RectTransform), barSize: 0.25f, style: "GUISlider")
|
pumpSpeedSlider = new GUIScrollBar(new RectTransform(new Vector2(0.8f, 1.0f), sliderArea.RectTransform), barSize: 0.25f, style: "GUISlider")
|
||||||
{
|
{
|
||||||
@@ -109,10 +109,9 @@ namespace Barotrauma.Items.Components
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var inLabel = new GUITextBlock(new RectTransform(new Vector2(0.3f, 1.0f), sliderArea.RectTransform),
|
|
||||||
TextManager.Get("PumpIn"), textAlignment: Alignment.Center, wrap: true, font: GUI.SmallFont);
|
|
||||||
|
|
||||||
GUITextBlock.AutoScaleAndNormalize(outLabel, inLabel);
|
new GUITextBlock(new RectTransform(new Vector2(0.15f, 1.0f), sliderArea.RectTransform),
|
||||||
|
TextManager.Get("PumpIn"), textAlignment: Alignment.Center, wrap: true, font: GUI.SmallFont);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnItemLoaded()
|
public override void OnItemLoaded()
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ namespace Barotrauma.Items.Components
|
|||||||
private void Draw(SpriteBatch spriteBatch, ConnectionPanel panel, Vector2 position, Vector2 labelPos, Vector2 wirePosition, bool mouseIn, Wire equippedWire, float wireInterval)
|
private void Draw(SpriteBatch spriteBatch, ConnectionPanel panel, Vector2 position, Vector2 labelPos, Vector2 wirePosition, bool mouseIn, Wire equippedWire, float wireInterval)
|
||||||
{
|
{
|
||||||
//spriteBatch.DrawString(GUI.SmallFont, Name, new Vector2(labelPos.X, labelPos.Y-10), Color.White);
|
//spriteBatch.DrawString(GUI.SmallFont, Name, new Vector2(labelPos.X, labelPos.Y-10), Color.White);
|
||||||
GUI.DrawString(spriteBatch, labelPos, DisplayName, IsPower ? Color.Red : Color.White, Color.Black, 0, GUI.SmallFont);
|
GUI.DrawString(spriteBatch, labelPos, Name, IsPower ? Color.Red : Color.White, Color.Black, 0, GUI.SmallFont);
|
||||||
|
|
||||||
connectionSprite.Draw(spriteBatch, position);
|
connectionSprite.Draw(spriteBatch, position);
|
||||||
|
|
||||||
|
|||||||
@@ -281,8 +281,7 @@ namespace Barotrauma
|
|||||||
new Vector2(rect.Width, rect.Height),
|
new Vector2(rect.Width, rect.Height),
|
||||||
color: color,
|
color: color,
|
||||||
textureScale: TextureScale * Scale,
|
textureScale: TextureScale * Scale,
|
||||||
startOffset: backGroundOffset,
|
startOffset: backGroundOffset);
|
||||||
depth: Math.Max(Prefab.BackgroundSprite.Depth, depth + 0.000001f));
|
|
||||||
|
|
||||||
if (UseDropShadow)
|
if (UseDropShadow)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -903,7 +903,7 @@ namespace Barotrauma.Networking
|
|||||||
connected = false;
|
connected = false;
|
||||||
ConnectToServer(serverIP);
|
ConnectToServer(serverIP);
|
||||||
}
|
}
|
||||||
if (clientID == myID)
|
else
|
||||||
{
|
{
|
||||||
string msg = "";
|
string msg = "";
|
||||||
if (disconnectReason == DisconnectReason.Unknown)
|
if (disconnectReason == DisconnectReason.Unknown)
|
||||||
@@ -921,18 +921,8 @@ namespace Barotrauma.Networking
|
|||||||
msg += TextManager.GetServerMessage(splitMsg[i]);
|
msg += TextManager.GetServerMessage(splitMsg[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var msgBox = new GUIMessageBox(TextManager.Get(allowReconnect ? "ConnectionLost" : "CouldNotConnectToServer"), msg);
|
||||||
if (msg == NetConnection.NoResponseMessage)
|
msgBox.Buttons[0].OnClicked += ReturnToServerList;
|
||||||
{
|
|
||||||
//display a generic "could not connect" popup if the message is Lidgren's "failed to establish connection"
|
|
||||||
var msgBox = new GUIMessageBox(TextManager.Get("ConnectionFailed"), TextManager.Get(allowReconnect ? "ConnectionLost" : "CouldNotConnectToServer"));
|
|
||||||
msgBox.Buttons[0].OnClicked += ReturnToServerList;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var msgBox = new GUIMessageBox(TextManager.Get(allowReconnect ? "ConnectionLost" : "CouldNotConnectToServer"), msg);
|
|
||||||
msgBox.Buttons[0].OnClicked += ReturnToServerList;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,6 @@ namespace Barotrauma
|
|||||||
private bool masterServerResponded;
|
private bool masterServerResponded;
|
||||||
private IRestResponse masterServerResponse;
|
private IRestResponse masterServerResponse;
|
||||||
|
|
||||||
private GUIButton refreshButton;
|
|
||||||
|
|
||||||
private float[] columnRelativeWidth;
|
private float[] columnRelativeWidth;
|
||||||
|
|
||||||
//filters
|
//filters
|
||||||
@@ -142,7 +140,7 @@ namespace Barotrauma
|
|||||||
OnClicked = GameMain.MainMenuScreen.ReturnToMainMenu
|
OnClicked = GameMain.MainMenuScreen.ReturnToMainMenu
|
||||||
};
|
};
|
||||||
|
|
||||||
refreshButton = new GUIButton(new RectTransform(new Vector2(buttonContainer.Rect.Height / (float)buttonContainer.Rect.Width, 0.9f), buttonContainer.RectTransform, Anchor.Center),
|
var refreshButton = new GUIButton(new RectTransform(new Vector2(buttonContainer.Rect.Height / (float)buttonContainer.Rect.Width, 0.9f), buttonContainer.RectTransform, Anchor.Center),
|
||||||
"", style: "GUIButtonRefresh") {
|
"", style: "GUIButtonRefresh") {
|
||||||
|
|
||||||
ToolTip = TextManager.Get("ServerListRefresh"),
|
ToolTip = TextManager.Get("ServerListRefresh"),
|
||||||
@@ -222,6 +220,22 @@ namespace Barotrauma
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool RefreshJoinButtonState(GUIComponent component, object obj)
|
||||||
|
{
|
||||||
|
if (obj == null || waitingForRefresh) return false;
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(clientNameBox.Text) && !string.IsNullOrWhiteSpace(ipBox.Text))
|
||||||
|
{
|
||||||
|
joinButton.Enabled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
joinButton.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private bool SelectServer(GUIComponent component, object obj)
|
private bool SelectServer(GUIComponent component, object obj)
|
||||||
{
|
{
|
||||||
if (obj == null || waitingForRefresh) { return false; }
|
if (obj == null || waitingForRefresh) { return false; }
|
||||||
@@ -236,6 +250,16 @@ namespace Barotrauma
|
|||||||
joinButton.Enabled = false;
|
joinButton.Enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(clientNameBox.Text))
|
||||||
|
{
|
||||||
|
joinButton.Enabled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clientNameBox.Flash();
|
||||||
|
joinButton.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
ServerInfo serverInfo;
|
ServerInfo serverInfo;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -260,11 +284,8 @@ namespace Barotrauma
|
|||||||
ipBox.Text = null;
|
ipBox.Text = null;
|
||||||
joinButton.Enabled = false;
|
joinButton.Enabled = false;
|
||||||
|
|
||||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), serverList.Content.RectTransform),
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), serverList.Content.RectTransform),
|
||||||
TextManager.Get("RefreshingServerList"), textAlignment: Alignment.Center)
|
TextManager.Get("RefreshingServerList"));
|
||||||
{
|
|
||||||
CanBeFocused = false
|
|
||||||
};
|
|
||||||
|
|
||||||
CoroutineManager.StartCoroutine(WaitForRefresh());
|
CoroutineManager.StartCoroutine(WaitForRefresh());
|
||||||
|
|
||||||
@@ -285,19 +306,17 @@ namespace Barotrauma
|
|||||||
if (!SteamManager.GetServers(AddToServerList, UpdateServerInfo, ServerQueryFinished))
|
if (!SteamManager.GetServers(AddToServerList, UpdateServerInfo, ServerQueryFinished))
|
||||||
{
|
{
|
||||||
serverList.ClearChildren();
|
serverList.ClearChildren();
|
||||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), serverList.Content.RectTransform),
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), serverList.Content.RectTransform),
|
||||||
TextManager.Get("ServerListNoSteamConnection"), textAlignment: Alignment.Center)
|
TextManager.Get("ServerListNoSteamConnection"));
|
||||||
{
|
|
||||||
CanBeFocused = false
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CoroutineManager.StartCoroutine(SendMasterServerRequest());
|
CoroutineManager.StartCoroutine(SendMasterServerRequest());
|
||||||
waitingForRefresh = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
waitingForRefresh = false;
|
||||||
|
|
||||||
refreshDisableTimer = DateTime.Now + AllowedRefreshInterval;
|
refreshDisableTimer = DateTime.Now + AllowedRefreshInterval;
|
||||||
|
|
||||||
yield return CoroutineStatus.Success;
|
yield return CoroutineStatus.Success;
|
||||||
@@ -362,11 +381,8 @@ namespace Barotrauma
|
|||||||
serverList.Content.ClearChildren();
|
serverList.Content.ClearChildren();
|
||||||
if (serverInfos.Count() == 0)
|
if (serverInfos.Count() == 0)
|
||||||
{
|
{
|
||||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), serverList.Content.RectTransform),
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), serverList.Content.RectTransform),
|
||||||
TextManager.Get("NoServers"), textAlignment: Alignment.Center)
|
TextManager.Get("NoServers"));
|
||||||
{
|
|
||||||
CanBeFocused = false
|
|
||||||
};
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
foreach (ServerInfo serverInfo in serverInfos)
|
foreach (ServerInfo serverInfo in serverInfos)
|
||||||
@@ -506,7 +522,6 @@ namespace Barotrauma
|
|||||||
UserData = "noresults"
|
UserData = "noresults"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
waitingForRefresh = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<object> SendMasterServerRequest()
|
private IEnumerable<object> SendMasterServerRequest()
|
||||||
|
|||||||
@@ -478,7 +478,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var downloadBtn = new GUIButton(new RectTransform(new Point((int)(32 * GUI.Scale)), rightColumn.RectTransform), "+", style: null)
|
var downloadBtn = new GUIButton(new RectTransform(new Point(32, 32), rightColumn.RectTransform), "+", style: null)
|
||||||
{
|
{
|
||||||
Font = GUI.LargeFont,
|
Font = GUI.LargeFont,
|
||||||
Color = new Color(38, 65, 86, 255),
|
Color = new Color(38, 65, 86, 255),
|
||||||
|
|||||||
@@ -100,6 +100,25 @@ namespace Barotrauma
|
|||||||
steeringManager = outsideSteering;
|
steeringManager = outsideSteering;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float maxDistanceToSub = 3000;
|
||||||
|
if (Character.Submarine != null || SelectedAiTarget?.Entity?.Submarine != null &&
|
||||||
|
Vector2.DistanceSquared(Character.WorldPosition, SelectedAiTarget.Entity.Submarine.WorldPosition) < maxDistanceToSub * maxDistanceToSub)
|
||||||
|
{
|
||||||
|
if (steeringManager != insideSteering)
|
||||||
|
{
|
||||||
|
insideSteering.Reset();
|
||||||
|
}
|
||||||
|
steeringManager = insideSteering;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (steeringManager != outsideSteering)
|
||||||
|
{
|
||||||
|
outsideSteering.Reset();
|
||||||
|
}
|
||||||
|
steeringManager = outsideSteering;
|
||||||
|
}
|
||||||
|
|
||||||
AnimController.Crouching = shouldCrouch;
|
AnimController.Crouching = shouldCrouch;
|
||||||
CheckCrouching(deltaTime);
|
CheckCrouching(deltaTime);
|
||||||
Character.ClearInputs();
|
Character.ClearInputs();
|
||||||
@@ -360,9 +379,6 @@ namespace Barotrauma
|
|||||||
if (GameMain.GameSession?.CrewManager != null && GameMain.GameSession.CrewManager.AddOrder(newOrder, newOrder.FadeOutTime))
|
if (GameMain.GameSession?.CrewManager != null && GameMain.GameSession.CrewManager.AddOrder(newOrder, newOrder.FadeOutTime))
|
||||||
{
|
{
|
||||||
Character.Speak(newOrder.GetChatMessage("", Character.CurrentHull?.DisplayName, givingOrderToSelf: false), ChatMessageType.Order);
|
Character.Speak(newOrder.GetChatMessage("", Character.CurrentHull?.DisplayName, givingOrderToSelf: false), ChatMessageType.Order);
|
||||||
#if SERVER
|
|
||||||
GameMain.Server.SendOrderChatMessage(new OrderChatMessage(newOrder, "", Character.CurrentHull, null, Character));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
using FarseerPhysics;
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using Barotrauma.Extensions;
|
||||||
|
|
||||||
namespace Barotrauma
|
namespace Barotrauma
|
||||||
{
|
{
|
||||||
@@ -46,7 +45,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
this.Target = target;
|
this.Target = target;
|
||||||
this.repeat = repeat;
|
this.repeat = repeat;
|
||||||
waitUntilPathUnreachable = 2.0f;
|
waitUntilPathUnreachable = 3.0f;
|
||||||
this.getDivingGearIfNeeded = getDivingGearIfNeeded;
|
this.getDivingGearIfNeeded = getDivingGearIfNeeded;
|
||||||
CalculateCloseEnough();
|
CalculateCloseEnough();
|
||||||
}
|
}
|
||||||
@@ -115,9 +114,9 @@ namespace Barotrauma
|
|||||||
Vector2 currTargetSimPos = Vector2.Zero;
|
Vector2 currTargetSimPos = Vector2.Zero;
|
||||||
currTargetSimPos = Target.SimPosition;
|
currTargetSimPos = Target.SimPosition;
|
||||||
// Take the sub position into account in the sim pos
|
// Take the sub position into account in the sim pos
|
||||||
if (character.Submarine == null && Target.Submarine != null)
|
if (SteeringManager != PathSteering && character.Submarine == null && Target.Submarine != null)
|
||||||
{
|
{
|
||||||
//currTargetSimPos += Target.Submarine.SimPosition;
|
currTargetSimPos += Target.Submarine.SimPosition;
|
||||||
}
|
}
|
||||||
else if (character.Submarine != null && Target.Submarine == null)
|
else if (character.Submarine != null && Target.Submarine == null)
|
||||||
{
|
{
|
||||||
@@ -132,6 +131,10 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
character.AIController.SteeringManager.SteeringSeek(currTargetSimPos);
|
character.AIController.SteeringManager.SteeringSeek(currTargetSimPos);
|
||||||
|
if (SteeringManager != PathSteering)
|
||||||
|
{
|
||||||
|
SteeringManager.SteeringAvoid(deltaTime, lookAheadDistance: 5, weight: 1, heading: VectorExtensions.Forward(character.AnimController.Collider.Rotation));
|
||||||
|
}
|
||||||
if (getDivingGearIfNeeded)
|
if (getDivingGearIfNeeded)
|
||||||
{
|
{
|
||||||
bool needsDivingGear = HumanAIController.NeedsDivingGear(targetHull);
|
bool needsDivingGear = HumanAIController.NeedsDivingGear(targetHull);
|
||||||
|
|||||||
@@ -45,9 +45,9 @@ namespace Barotrauma
|
|||||||
steering += DoSteeringWander(weight);
|
steering += DoSteeringWander(weight);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SteeringAvoid(float deltaTime, float lookAheadDistance, float weight = 1)
|
public void SteeringAvoid(float deltaTime, float lookAheadDistance, float weight = 1, Vector2? heading = null)
|
||||||
{
|
{
|
||||||
steering += DoSteeringAvoid(deltaTime, lookAheadDistance, weight);
|
steering += DoSteeringAvoid(deltaTime, lookAheadDistance, weight, heading);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SteeringManual(float deltaTime, Vector2 velocity)
|
public void SteeringManual(float deltaTime, Vector2 velocity)
|
||||||
@@ -129,10 +129,12 @@ namespace Barotrauma
|
|||||||
return newSteering;
|
return newSteering;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual Vector2 DoSteeringAvoid(float deltaTime, float lookAheadDistance, float weight)
|
protected virtual Vector2 DoSteeringAvoid(float deltaTime, float lookAheadDistance, float weight, Vector2? heading = null)
|
||||||
{
|
{
|
||||||
if (steering == Vector2.Zero || host.Steering == Vector2.Zero) return Vector2.Zero;
|
if (steering == Vector2.Zero || host.Steering == Vector2.Zero)
|
||||||
|
{
|
||||||
|
return Vector2.Zero;
|
||||||
|
}
|
||||||
float maxDistance = lookAheadDistance;
|
float maxDistance = lookAheadDistance;
|
||||||
if (rayCastTimer <= 0.0f)
|
if (rayCastTimer <= 0.0f)
|
||||||
{
|
{
|
||||||
@@ -158,19 +160,11 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
obstaclePosition.X = closestStructure.SimPosition.X;
|
obstaclePosition.X = closestStructure.SimPosition.X;
|
||||||
}
|
}
|
||||||
|
|
||||||
avoidObstaclePos = obstaclePosition;
|
avoidObstaclePos = obstaclePosition;
|
||||||
//avoidSteering = Vector2.Normalize(Submarine.LastPickedPosition - obstaclePosition);
|
|
||||||
}
|
}
|
||||||
/*else if (closestBody.UserData is Item)
|
|
||||||
{
|
|
||||||
avoidSteering = Vector2.Normalize(Submarine.LastPickedPosition - item.SimPosition);
|
|
||||||
}*/
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
avoidObstaclePos = Submarine.LastPickedPosition;
|
avoidObstaclePos = Submarine.LastPickedPosition;
|
||||||
//avoidSteering = Vector2.Normalize(host.SimPosition - Submarine.LastPickedPosition);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -185,22 +179,26 @@ namespace Barotrauma
|
|||||||
Vector2 diff = avoidObstaclePos.Value - host.SimPosition;
|
Vector2 diff = avoidObstaclePos.Value - host.SimPosition;
|
||||||
float dist = diff.Length();
|
float dist = diff.Length();
|
||||||
|
|
||||||
if (!avoidObstaclePos.HasValue) return Vector2.Zero;
|
if (dist > maxDistance)
|
||||||
|
{
|
||||||
Vector2 diff = avoidObstaclePos.Value - host.SimPosition;
|
return Vector2.Zero;
|
||||||
float dist = diff.Length();
|
}
|
||||||
|
if (heading.HasValue)
|
||||||
if (dist > maxDistance) return Vector2.Zero;
|
{
|
||||||
|
var f = heading ?? host.Steering;
|
||||||
return -diff * (1.0f - dist / maxDistance) * weight;
|
// Avoid to left or right depending on the current heading
|
||||||
}
|
Vector2 relativeVector = Vector2.Normalize(diff) - Vector2.Normalize(f);
|
||||||
|
var dir = relativeVector.X > 0 ? diff.Right() : diff.Left();
|
||||||
Vector2 diff = avoidObstaclePos.Value - host.SimPosition;
|
float factor = 1.0f - Math.Min(dist / maxDistance, 1);
|
||||||
float dist = diff.Length();
|
return dir * factor * weight;
|
||||||
|
}
|
||||||
if (dist > maxDistance) return Vector2.Zero;
|
else
|
||||||
|
{
|
||||||
return -diff * (1.0f - dist / maxDistance) * weight;
|
// Doesn't work right because it effectively just slows down or reverses the movement, where as we'd like to go right or left to avoid the target.
|
||||||
|
// There's also another issue, which also affects going right or left: the raycast doesn't hit anything if we turn too much -> avoiding doesn't work well.
|
||||||
|
// Could probably "remember" the avoidance a bit longer so that the avoid steering is not immedieately disgarded, but kept for a while and reduced gradually?
|
||||||
|
return -diff * (1.0f - dist / maxDistance) * weight;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public bool PauseOnFocusLost { get; set; } = true;
|
public bool PauseOnFocusLost { get; set; } = true;
|
||||||
public bool MuteOnFocusLost { get; set; }
|
public bool MuteOnFocusLost { get; set; }
|
||||||
public bool UseDirectionalVoiceChat { get; set; } = true;
|
public bool UseDirectionalVoiceChat { get; set; }
|
||||||
|
|
||||||
public enum VoiceMode
|
public enum VoiceMode
|
||||||
{
|
{
|
||||||
@@ -206,7 +206,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
voiceChatVolume = MathHelper.Clamp(value, 0.0f, 1.0f);
|
voiceChatVolume = MathHelper.Clamp(value, 0.0f, 1.0f);
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
GameMain.SoundManager?.SetCategoryGainMultiplier("voip", voiceChatVolume * 5.0f);
|
GameMain.SoundManager?.SetCategoryGainMultiplier("voip", voiceChatVolume);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -415,6 +415,79 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Load DefaultConfig
|
||||||
|
private void LoadDefaultConfig(bool setLanguage = true)
|
||||||
|
{
|
||||||
|
XDocument doc = XMLExtensions.TryLoadXml(savePath);
|
||||||
|
|
||||||
|
if (setLanguage || string.IsNullOrEmpty(Language))
|
||||||
|
{
|
||||||
|
Language = doc.Root.GetAttributeString("language", "English");
|
||||||
|
}
|
||||||
|
if (doc != null)
|
||||||
|
{
|
||||||
|
foreach (XElement subElement in doc.Root.Elements())
|
||||||
|
{
|
||||||
|
if (subElement.Name.ToString().ToLowerInvariant() == "keymapping")
|
||||||
|
{
|
||||||
|
LoadKeyBinds(subElement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CheckBindings(bool useDefaults)
|
||||||
|
{
|
||||||
|
foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
|
||||||
|
{
|
||||||
|
var binding = keyMapping[(int)inputType];
|
||||||
|
if (binding == null)
|
||||||
|
{
|
||||||
|
switch (inputType)
|
||||||
|
{
|
||||||
|
case InputType.Deselect:
|
||||||
|
if (useDefaults)
|
||||||
|
{
|
||||||
|
binding = new KeyOrMouse(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Legacy support
|
||||||
|
var selectKey = keyMapping[(int)InputType.Select];
|
||||||
|
if (selectKey != null && selectKey.Key != Keys.None)
|
||||||
|
{
|
||||||
|
binding = new KeyOrMouse(selectKey.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case InputType.Shoot:
|
||||||
|
if (useDefaults)
|
||||||
|
{
|
||||||
|
binding = new KeyOrMouse(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Legacy support
|
||||||
|
var useKey = keyMapping[(int)InputType.Use];
|
||||||
|
if (useKey != null && useKey.MouseButton.HasValue)
|
||||||
|
{
|
||||||
|
binding = new KeyOrMouse(useKey.MouseButton.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (binding == null)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError("Key binding for the input type \"" + inputType + " not set!");
|
||||||
|
binding = new KeyOrMouse(Keys.D1);
|
||||||
|
}
|
||||||
|
keyMapping[(int)inputType] = binding;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region Load DefaultConfig
|
#region Load DefaultConfig
|
||||||
private void LoadDefaultConfig(bool setLanguage = true)
|
private void LoadDefaultConfig(bool setLanguage = true)
|
||||||
{
|
{
|
||||||
@@ -483,6 +556,16 @@ namespace Barotrauma
|
|||||||
|
|
||||||
QuickStartSubmarineName = doc.Root.GetAttributeString("quickstartsub", "");
|
QuickStartSubmarineName = doc.Root.GetAttributeString("quickstartsub", "");
|
||||||
|
|
||||||
|
MasterServerUrl = doc.Root.GetAttributeString("masterserverurl", "");
|
||||||
|
|
||||||
|
AutoCheckUpdates = doc.Root.GetAttributeBool("autocheckupdates", true);
|
||||||
|
WasGameUpdated = doc.Root.GetAttributeBool("wasgameupdated", false);
|
||||||
|
|
||||||
|
VerboseLogging = doc.Root.GetAttributeBool("verboselogging", false);
|
||||||
|
SaveDebugConsoleLogs = doc.Root.GetAttributeBool("savedebugconsolelogs", false);
|
||||||
|
|
||||||
|
QuickStartSubmarineName = doc.Root.GetAttributeString("quickstartsub", "");
|
||||||
|
|
||||||
if (doc == null)
|
if (doc == null)
|
||||||
{
|
{
|
||||||
GraphicsWidth = 1024;
|
GraphicsWidth = 1024;
|
||||||
|
|||||||
@@ -609,7 +609,8 @@ namespace Barotrauma
|
|||||||
foreach (InterestingPosition pos in positionsOfInterest)
|
foreach (InterestingPosition pos in positionsOfInterest)
|
||||||
{
|
{
|
||||||
if (pos.PositionType != PositionType.MainPath || pos.Position.X < 5000 || pos.Position.X > Size.X - 5000) continue;
|
if (pos.PositionType != PositionType.MainPath || pos.Position.X < 5000 || pos.Position.X > Size.X - 5000) continue;
|
||||||
if (Math.Abs(pos.Position.X - StartPosition.X) < minWidth * 2 || Math.Abs(pos.Position.X - EndPosition.X) < minWidth * 2) continue;
|
if (Math.Abs(pos.Position.X - StartPosition.X) < 10000) continue;
|
||||||
|
if (Math.Abs(pos.Position.Y - StartPosition.Y) < 10000) continue;
|
||||||
if (GetTooCloseCells(pos.Position.ToVector2(), minWidth * 0.7f).Count > 0) continue;
|
if (GetTooCloseCells(pos.Position.ToVector2(), minWidth * 0.7f).Count > 0) continue;
|
||||||
iceChunkPositions.Add(pos.Position);
|
iceChunkPositions.Add(pos.Position);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -301,10 +301,6 @@ namespace Barotrauma
|
|||||||
#endif
|
#endif
|
||||||
spriteColor = prefab.SpriteColor;
|
spriteColor = prefab.SpriteColor;
|
||||||
if (sp.IsHorizontal.HasValue)
|
if (sp.IsHorizontal.HasValue)
|
||||||
{
|
|
||||||
IsHorizontal = sp.IsHorizontal.Value;
|
|
||||||
}
|
|
||||||
else if (ResizeHorizontal && !ResizeVertical)
|
|
||||||
{
|
{
|
||||||
IsHorizontal = true;
|
IsHorizontal = true;
|
||||||
}
|
}
|
||||||
@@ -349,7 +345,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Only add ai targets automatically to submarine/outpost walls
|
// Only add ai targets automatically to submarine/outpost walls
|
||||||
if (aiTarget == null && HasBody && Tags.Contains("wall") && submarine != null && !Prefab.NoAITarget)
|
if (aiTarget == null && HasBody && Tags.Contains("wall") && submarine != null)
|
||||||
{
|
{
|
||||||
aiTarget = new AITarget(this);
|
aiTarget = new AITarget(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,11 +184,6 @@ namespace Barotrauma
|
|||||||
sp.Tags.Add(tag.Trim().ToLowerInvariant());
|
sp.Tags.Add(tag.Trim().ToLowerInvariant());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (element.Attribute("ishorizontal") != null)
|
|
||||||
{
|
|
||||||
sp.IsHorizontal = element.GetAttributeBool("ishorizontal", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (XElement subElement in element.Elements())
|
foreach (XElement subElement in element.Elements())
|
||||||
{
|
{
|
||||||
switch (subElement.Name.ToString())
|
switch (subElement.Name.ToString())
|
||||||
|
|||||||
Reference in New Issue
Block a user