(021a3d977) Draw the steering indicator at the center of the sub, not at the center of the display. Change the color of the docking indicators when ready to dock
This commit is contained in:
@@ -136,6 +136,8 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public bool IgnoreLayoutGroups;
|
public bool IgnoreLayoutGroups;
|
||||||
|
|
||||||
|
public bool IgnoreLayoutGroups;
|
||||||
|
|
||||||
public virtual ScalableFont Font
|
public virtual ScalableFont Font
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
|
|||||||
@@ -59,6 +59,12 @@ namespace Barotrauma
|
|||||||
Content = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.85f), InnerFrame.RectTransform, Anchor.Center)) { AbsoluteSpacing = 5 };
|
Content = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.85f), InnerFrame.RectTransform, Anchor.Center)) { AbsoluteSpacing = 5 };
|
||||||
Tag = tag;
|
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)
|
if (height == 0)
|
||||||
{
|
{
|
||||||
string wrappedText = ToolBox.WrapText(text, Content.Rect.Width, GUI.Font);
|
string wrappedText = ToolBox.WrapText(text, Content.Rect.Width, GUI.Font);
|
||||||
|
|||||||
@@ -184,6 +184,10 @@ namespace Barotrauma
|
|||||||
|
|
||||||
GUI.KeyboardDispatcher = new EventInput.KeyboardDispatcher(Window);
|
GUI.KeyboardDispatcher = new EventInput.KeyboardDispatcher(Window);
|
||||||
|
|
||||||
|
GUI.KeyboardDispatcher = new EventInput.KeyboardDispatcher(Window);
|
||||||
|
|
||||||
|
|
||||||
|
PerformanceCounter = new PerformanceCounter();
|
||||||
|
|
||||||
PerformanceCounter = new PerformanceCounter();
|
PerformanceCounter = new PerformanceCounter();
|
||||||
|
|
||||||
@@ -789,6 +793,13 @@ namespace Barotrauma
|
|||||||
Config.SaveNewPlayerConfig();
|
Config.SaveNewPlayerConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
msgBox.Text.RectTransform.MaxSize = new Point(int.MaxValue, msgBox.Text.Rect.Height);
|
||||||
|
linkHolder.RectTransform.MaxSize = new Point(int.MaxValue, linkHolder.Rect.Height);
|
||||||
|
msgBox.RectTransform.MinSize = new Point(0, msgBox.Rect.Height + linkHolder.Rect.Height + msgBox.Buttons.First().Rect.Height * 8);
|
||||||
|
Config.EditorDisclaimerShown = true;
|
||||||
|
Config.SaveNewPlayerConfig();
|
||||||
|
}
|
||||||
|
|
||||||
// ToDo: Move texts/links to localization, when possible.
|
// ToDo: Move texts/links to localization, when possible.
|
||||||
public void ShowBugReporter()
|
public void ShowBugReporter()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -69,11 +69,6 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public CrewManager(XElement element, bool isSinglePlayer)
|
public CrewManager(XElement element, bool isSinglePlayer)
|
||||||
: this(isSinglePlayer)
|
: this(isSinglePlayer)
|
||||||
{
|
|
||||||
return characterListBox.Rect;
|
|
||||||
}
|
|
||||||
|
|
||||||
partial void InitProjectSpecific()
|
|
||||||
{
|
{
|
||||||
guiFrame = new GUIFrame(new RectTransform(Vector2.One, GUICanvas.Instance), null, Color.Transparent)
|
guiFrame = new GUIFrame(new RectTransform(Vector2.One, GUICanvas.Instance), null, Color.Transparent)
|
||||||
{
|
{
|
||||||
@@ -103,56 +98,14 @@ namespace Barotrauma
|
|||||||
CanBeFocused = false
|
CanBeFocused = false
|
||||||
};
|
};
|
||||||
|
|
||||||
scrollButtonUp = new GUIButton(new RectTransform(scrollButtonSize, crewArea.RectTransform, Anchor.TopLeft, Pivot.TopLeft), "", Alignment.Center, "GUIButtonVerticalArrow")
|
var characterInfo = new CharacterInfo(subElement);
|
||||||
{
|
characterInfos.Add(characterInfo);
|
||||||
Visible = false,
|
foreach (XElement invElement in subElement.Elements())
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
OnEnterMessage = (textbox, text) =>
|
if (invElement.Name.ToString().ToLowerInvariant() != "inventory") continue;
|
||||||
{
|
characterInfo.InventoryData = invElement;
|
||||||
if (Character.Controlled?.Info == null)
|
break;
|
||||||
{
|
}
|
||||||
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);
|
var reports = Order.PrefabList.FindAll(o => o.TargetAllCharacters && o.SymbolSprite != null);
|
||||||
@@ -191,14 +144,12 @@ namespace Barotrauma
|
|||||||
Visible = false
|
Visible = false
|
||||||
};
|
};
|
||||||
|
|
||||||
var characterInfo = new CharacterInfo(subElement);
|
var img = new GUIImage(new RectTransform(Vector2.One, btn.RectTransform), order.Prefab.SymbolSprite, scaleToFit: true)
|
||||||
characterInfos.Add(characterInfo);
|
|
||||||
foreach (XElement invElement in subElement.Elements())
|
|
||||||
{
|
{
|
||||||
if (invElement.Name.ToString().ToLowerInvariant() != "inventory") continue;
|
Color = order.Color,
|
||||||
characterInfo.InventoryData = invElement;
|
HoverColor = Color.Lerp(order.Color, Color.White, 0.5f),
|
||||||
break;
|
ToolTip = order.Name
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
screenResolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
screenResolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ namespace Barotrauma.Items.Components
|
|||||||
};
|
};
|
||||||
|
|
||||||
private float prevDockingDist;
|
private float prevDockingDist;
|
||||||
|
|
||||||
public Vector2 DisplayOffset { get; private set; }
|
public Vector2 DisplayOffset { get; private set; }
|
||||||
|
|
||||||
public float DisplayRadius { get; private set; }
|
public float DisplayRadius { get; private set; }
|
||||||
@@ -578,14 +578,14 @@ namespace Barotrauma.Items.Components
|
|||||||
{
|
{
|
||||||
size.Y = 0.0f;
|
size.Y = 0.0f;
|
||||||
}
|
}
|
||||||
GUI.DrawLine(spriteBatch, center + offset - size / 2, center + offset + size / 2, Color.LightGreen, width: (int)(zoom));
|
GUI.DrawLine(spriteBatch, center + offset - size, center + offset + size, Color.LightGreen, width: (int)(zoom * 2.5f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawDockingIndicator(SpriteBatch spriteBatch, Steering steering, ref Vector2 transducerCenter)
|
private void DrawDockingIndicator(SpriteBatch spriteBatch, Steering steering, ref Vector2 transducerCenter)
|
||||||
{
|
{
|
||||||
float scale = displayScale * zoom;
|
float scale = displayScale * zoom;
|
||||||
|
|
||||||
Vector2 worldFocusPos = (steering.DockingSource.Item.WorldPosition + steering.DockingTarget.Item.WorldPosition) / 2.0f;
|
Vector2 worldFocusPos = (steering.DockingSource.Item.WorldPosition + steering.DockingTarget.Item.WorldPosition) / 2.0f;
|
||||||
worldFocusPos.X = steering.DockingTarget.Item.WorldPosition.X;
|
worldFocusPos.X = steering.DockingTarget.Item.WorldPosition.X;
|
||||||
|
|
||||||
@@ -602,6 +602,9 @@ namespace Barotrauma.Items.Components
|
|||||||
System.Diagnostics.Debug.Assert(steering.DockingSource.IsHorizontal == steering.DockingTarget.IsHorizontal);
|
System.Diagnostics.Debug.Assert(steering.DockingSource.IsHorizontal == steering.DockingTarget.IsHorizontal);
|
||||||
Vector2 diff = steering.DockingTarget.Item.WorldPosition - steering.DockingSource.Item.WorldPosition;
|
Vector2 diff = steering.DockingTarget.Item.WorldPosition - steering.DockingSource.Item.WorldPosition;
|
||||||
float dist = diff.Length();
|
float dist = diff.Length();
|
||||||
|
bool readyToDock =
|
||||||
|
Math.Abs(diff.X) < steering.DockingTarget.DistanceTolerance.X &&
|
||||||
|
Math.Abs(diff.Y) < steering.DockingTarget.DistanceTolerance.Y;
|
||||||
|
|
||||||
Vector2 dockingDir = sourcePortPos - targetPortPos;
|
Vector2 dockingDir = sourcePortPos - targetPortPos;
|
||||||
Vector2 normalizedDockingDir = Vector2.Normalize(dockingDir);
|
Vector2 normalizedDockingDir = Vector2.Normalize(dockingDir);
|
||||||
@@ -617,7 +620,7 @@ namespace Barotrauma.Items.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Color staticLineColor = Color.White * 0.8f;
|
Color staticLineColor = Color.White * 0.5f;
|
||||||
|
|
||||||
float sector = MathHelper.ToRadians(MathHelper.Lerp(10.0f, 45.0f, MathHelper.Clamp(dist / steering.DockingAssistThreshold, 0.0f, 1.0f)));
|
float sector = MathHelper.ToRadians(MathHelper.Lerp(10.0f, 45.0f, MathHelper.Clamp(dist / steering.DockingAssistThreshold, 0.0f, 1.0f)));
|
||||||
float sectorLength = DisplayRadius;
|
float sectorLength = DisplayRadius;
|
||||||
@@ -626,7 +629,7 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
Vector2 midNormal = new Vector2(-normalizedDockingDir.Y, normalizedDockingDir.X);
|
Vector2 midNormal = new Vector2(-normalizedDockingDir.Y, normalizedDockingDir.X);
|
||||||
|
|
||||||
DrawLine(spriteBatch, targetPortPos, targetPortPos + normalizedDockingDir * midLength, staticLineColor, width: 2);
|
DrawLine(spriteBatch, targetPortPos, targetPortPos + normalizedDockingDir * midLength, readyToDock ? Color.LightGreen : staticLineColor, width: 2);
|
||||||
DrawLine(spriteBatch, targetPortPos,
|
DrawLine(spriteBatch, targetPortPos,
|
||||||
targetPortPos + MathUtils.RotatePoint(normalizedDockingDir, sector) * sectorLength, staticLineColor, width: 2);
|
targetPortPos + MathUtils.RotatePoint(normalizedDockingDir, sector) * sectorLength, staticLineColor, width: 2);
|
||||||
DrawLine(spriteBatch, targetPortPos,
|
DrawLine(spriteBatch, targetPortPos,
|
||||||
@@ -646,39 +649,13 @@ namespace Barotrauma.Items.Components
|
|||||||
Vector2.Dot(normalizedDockingDir, MathUtils.RotatePoint(normalizedDockingDir, indicatorSector)) <
|
Vector2.Dot(normalizedDockingDir, MathUtils.RotatePoint(normalizedDockingDir, indicatorSector)) <
|
||||||
Vector2.Dot(normalizedDockingDir, Vector2.Normalize(dockingDir));
|
Vector2.Dot(normalizedDockingDir, Vector2.Normalize(dockingDir));
|
||||||
|
|
||||||
Color indicatorColor = withinSector ? Color.LightGreen * 0.9f : Color.Red * 0.9f;
|
Color indicatorColor = withinSector ? Color.LightGreen * 0.8f : Color.Red * 0.8f;
|
||||||
|
|
||||||
DrawLine(spriteBatch, targetPortPos,
|
DrawLine(spriteBatch, targetPortPos,
|
||||||
targetPortPos + MathUtils.RotatePoint(normalizedDockingDir,indicatorSector) * indicatorSectorLength, indicatorColor, width: 2);
|
targetPortPos + MathUtils.RotatePoint(normalizedDockingDir,indicatorSector) * indicatorSectorLength, indicatorColor, width: 2);
|
||||||
DrawLine(spriteBatch, targetPortPos,
|
DrawLine(spriteBatch, targetPortPos,
|
||||||
targetPortPos + MathUtils.RotatePoint(normalizedDockingDir, -indicatorSector) * indicatorSectorLength, indicatorColor, width: 2);
|
targetPortPos + MathUtils.RotatePoint(normalizedDockingDir, -indicatorSector) * indicatorSectorLength, indicatorColor, width: 2);
|
||||||
|
|
||||||
/*if (steering.DockingSource.IsHorizontal)
|
|
||||||
{
|
|
||||||
if (yDist < steering.DockingSource.DistanceTolerance.Y)
|
|
||||||
{
|
|
||||||
DrawLine(spriteBatch, sourcePortPos, new Vector2(targetPortPos.X, sourcePortPos.Y), xColor, width: 3);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DrawLine(spriteBatch, sourcePortPos, new Vector2(midPos.X, sourcePortPos.Y), xColor, width: 3);
|
|
||||||
DrawLine(spriteBatch, targetPortPos, new Vector2(midPos.X, targetPortPos.Y), xColor, width: 3);
|
|
||||||
DrawLine(spriteBatch, new Vector2(midPos.X, sourcePortPos.Y), new Vector2(midPos.X, targetPortPos.Y), yColor, width: 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (xDist < steering.DockingSource.DistanceTolerance.X)
|
|
||||||
{
|
|
||||||
DrawLine(spriteBatch, sourcePortPos, new Vector2(sourcePortPos.X, targetPortPos.Y), yColor, width: 3);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DrawLine(spriteBatch, sourcePortPos, new Vector2(sourcePortPos.X, midPos.Y), yColor, width: 3);
|
|
||||||
DrawLine(spriteBatch, targetPortPos, new Vector2(targetPortPos.X, midPos.Y), yColor, width: 3);
|
|
||||||
DrawLine(spriteBatch, new Vector2(sourcePortPos.X, midPos.Y), new Vector2(targetPortPos.X, midPos.Y), xColor, width: 3);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateDisruptions(Vector2 pingSource, float worldPingRadius, float worldPrevPingRadius)
|
private void UpdateDisruptions(Vector2 pingSource, float worldPingRadius, float worldPrevPingRadius)
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
private GUIComponent statusContainer, dockingContainer;
|
private GUIComponent statusContainer, dockingContainer;
|
||||||
|
|
||||||
|
private GUIButton dockingButton;
|
||||||
|
|
||||||
private GUIFrame autoPilotControlsDisabler;
|
private GUIFrame autoPilotControlsDisabler;
|
||||||
|
|
||||||
private GUIComponent steerArea;
|
private GUIComponent steerArea;
|
||||||
@@ -288,7 +290,7 @@ namespace Barotrauma.Items.Components
|
|||||||
{ MinSize = new Point(150, 0), AbsoluteOffset = new Point((int)(viewSize * 0.9f), 0) }, style: null);
|
{ MinSize = new Point(150, 0), AbsoluteOffset = new Point((int)(viewSize * 0.9f), 0) }, style: null);
|
||||||
var paddedDockingContainer = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), dockingContainer.RectTransform, Anchor.Center), style: null);
|
var paddedDockingContainer = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), dockingContainer.RectTransform, Anchor.Center), style: null);
|
||||||
|
|
||||||
var dockButton = new GUIButton(new RectTransform(new Vector2(0.3f, 0.3f), paddedDockingContainer.RectTransform, Anchor.Center), "Dock");
|
dockingButton = new GUIButton(new RectTransform(new Vector2(0.3f, 0.3f), paddedDockingContainer.RectTransform, Anchor.Center), "Dock");
|
||||||
|
|
||||||
new GUIButton(new RectTransform(new Vector2(0.3f, 0.3f), paddedDockingContainer.RectTransform, Anchor.CenterLeft), "<")
|
new GUIButton(new RectTransform(new Vector2(0.3f, 0.3f), paddedDockingContainer.RectTransform, Anchor.CenterLeft), "<")
|
||||||
{
|
{
|
||||||
@@ -383,16 +385,20 @@ namespace Barotrauma.Items.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector2 displaySubPos = ((posToMaintain.Value - sonar.DisplayOffset * sonar.Zoom - controlledSub.WorldPosition)) / sonar.Range * sonar.DisplayRadius * sonar.Zoom;
|
||||||
|
displaySubPos.Y = -displaySubPos.Y;
|
||||||
|
displaySubPos = displaySubPos.ClampLength(velRect.Width / 2);
|
||||||
|
displaySubPos = velRect.Center.ToVector2() + displaySubPos;
|
||||||
|
|
||||||
//map velocity from rectangle to circle
|
//map velocity from rectangle to circle
|
||||||
Vector2 unitTargetVel = targetVelocity / 100.0f;
|
Vector2 unitTargetVel = targetVelocity / 100.0f;
|
||||||
Vector2 steeringPos = new Vector2(
|
Vector2 steeringPos = new Vector2(
|
||||||
targetVelocity.X * 0.9f * (float)Math.Sqrt(1.0f - 0.5f * unitTargetVel.Y * unitTargetVel.Y),
|
targetVelocity.X * 0.9f * (float)Math.Sqrt(1.0f - 0.5f * unitTargetVel.Y * unitTargetVel.Y),
|
||||||
-targetVelocity.Y * 0.9f * (float)Math.Sqrt(1.0f - 0.5f * unitTargetVel.X * unitTargetVel.X));
|
-targetVelocity.Y * 0.9f * (float)Math.Sqrt(1.0f - 0.5f * unitTargetVel.X * unitTargetVel.X));
|
||||||
steeringPos.X += velRect.Center.X;
|
steeringPos += displaySubPos;
|
||||||
steeringPos.Y += velRect.Center.Y;
|
|
||||||
|
|
||||||
GUI.DrawLine(spriteBatch,
|
GUI.DrawLine(spriteBatch,
|
||||||
new Vector2(velRect.Center.X, velRect.Center.Y),
|
displaySubPos,
|
||||||
steeringPos,
|
steeringPos,
|
||||||
Color.CadetBlue, 0, 2);
|
Color.CadetBlue, 0, 2);
|
||||||
}
|
}
|
||||||
@@ -466,6 +472,15 @@ namespace Barotrauma.Items.Components
|
|||||||
dockingContainer.Visible = DockingModeEnabled;
|
dockingContainer.Visible = DockingModeEnabled;
|
||||||
statusContainer.Visible = !DockingModeEnabled;
|
statusContainer.Visible = !DockingModeEnabled;
|
||||||
|
|
||||||
|
if (DockingModeEnabled)
|
||||||
|
{
|
||||||
|
if (Math.Abs(DockingSource.Item.WorldPosition.X - DockingTarget.Item.WorldPosition.X) < DockingSource.DistanceTolerance.X &&
|
||||||
|
Math.Abs(DockingSource.Item.WorldPosition.X - DockingTarget.Item.WorldPosition.X) < DockingSource.DistanceTolerance.X)
|
||||||
|
{
|
||||||
|
//TODO: flash docking button
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
autoPilotControlsDisabler.Visible = !AutoPilot;
|
autoPilotControlsDisabler.Visible = !AutoPilot;
|
||||||
|
|
||||||
if (voltage < minVoltage && currPowerConsumption > 0.0f)
|
if (voltage < minVoltage && currPowerConsumption > 0.0f)
|
||||||
@@ -501,7 +516,19 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
if (Vector2.Distance(PlayerInput.MousePosition, steerArea.Rect.Center.ToVector2()) < steerArea.Rect.Width / 2)
|
if (Vector2.Distance(PlayerInput.MousePosition, steerArea.Rect.Center.ToVector2()) < steerArea.Rect.Width / 2)
|
||||||
{
|
{
|
||||||
if (PlayerInput.LeftButtonHeld())
|
tipContainer.Visible = true;
|
||||||
|
tipContainer.Text = noPowerTip;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tipContainer.Visible = AutoPilot;
|
||||||
|
if (AutoPilot)
|
||||||
|
{
|
||||||
|
if (maintainPos)
|
||||||
|
{
|
||||||
|
tipContainer.Text = autoPilotMaintainPosTip;
|
||||||
|
}
|
||||||
|
else if (LevelStartSelected)
|
||||||
{
|
{
|
||||||
Vector2 inputPos = PlayerInput.MousePosition - steerArea.Rect.Center.ToVector2();
|
Vector2 inputPos = PlayerInput.MousePosition - steerArea.Rect.Center.ToVector2();
|
||||||
inputPos.Y = -inputPos.Y;
|
inputPos.Y = -inputPos.Y;
|
||||||
@@ -567,8 +594,7 @@ namespace Barotrauma.Items.Components
|
|||||||
inputCumulation = 0;
|
inputCumulation = 0;
|
||||||
keyboardInput = Vector2.Zero;
|
keyboardInput = Vector2.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float closestDist = DockingAssistThreshold * DockingAssistThreshold;
|
float closestDist = DockingAssistThreshold * DockingAssistThreshold;
|
||||||
DockingModeEnabled = false;
|
DockingModeEnabled = false;
|
||||||
DockingSource = null;
|
DockingSource = null;
|
||||||
|
|||||||
@@ -407,6 +407,33 @@ namespace Barotrauma
|
|||||||
Color.Green, width: 2);
|
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)
|
public static void UpdateVertices(GraphicsDevice graphicsDevice, Camera cam, WaterRenderer renderer)
|
||||||
|
|||||||
@@ -1053,6 +1053,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;
|
||||||
|
|
||||||
|
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,
|
//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
|
//whether the Character can see/hear the target and chooses the most preferable target within
|
||||||
//sight/hearing range
|
//sight/hearing range
|
||||||
|
|||||||
@@ -2563,6 +2563,10 @@ namespace Barotrauma
|
|||||||
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
|
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CLIENT
|
||||||
|
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
|
GameMain.GameSession?.CrewManager?.RemoveCharacter(this);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user