diff --git a/Subsurface/Source/Items/Components/Machines/Controller.cs b/Subsurface/Source/Items/Components/Machines/Controller.cs index c067320c9..1aa1313b4 100644 --- a/Subsurface/Source/Items/Components/Machines/Controller.cs +++ b/Subsurface/Source/Items/Components/Machines/Controller.cs @@ -11,6 +11,12 @@ namespace Barotrauma.Items.Components { public LimbType limbType; public Vector2 position; + + public LimbPos(LimbType limbType, Vector2 position) + { + this.limbType = limbType; + this.position = position; + } } class Controller : ItemComponent @@ -243,5 +249,31 @@ namespace Barotrauma.Items.Components return true; } + public override void FlipX() + { + if (dir != Direction.None) + { + dir = dir == Direction.Left ? Direction.Right : Direction.Left; + } + + if (userPos != 0.0f) + { + float diff = (item.Rect.X + UserPos) - item.Rect.Center.X; + userPos = item.Rect.Center.X - diff - item.Rect.X; + } + + for (int i = 0; i < limbPositions.Count; i++) + { + float diff = (item.Rect.X + limbPositions[i].position.X) - item.Rect.Center.X; + + Vector2 flippedPos = + new Vector2( + item.Rect.Center.X - diff - item.Rect.X, + limbPositions[i].position.Y); + + limbPositions[i] = new LimbPos(limbPositions[i].limbType, flippedPos); + } + } + } } diff --git a/Subsurface/Source/Items/Components/Machines/Radar.cs b/Subsurface/Source/Items/Components/Machines/Radar.cs index 6fadb4584..3c535d34d 100644 --- a/Subsurface/Source/Items/Components/Machines/Radar.cs +++ b/Subsurface/Source/Items/Components/Machines/Radar.cs @@ -103,10 +103,13 @@ namespace Barotrauma.Items.Components return pingState > 1.0f; } + public override void UpdateHUD(Character character) + { + GuiFrame.Update((float)Timing.Step); + } + public override void DrawHUD(SpriteBatch spriteBatch, Character character) { - - GuiFrame.Update(1.0f / 60.0f); GuiFrame.Draw(spriteBatch); if (voltage < minVoltage && powerConsumption > 0.0f) return; diff --git a/Subsurface/Source/Items/Components/Turret.cs b/Subsurface/Source/Items/Components/Turret.cs index d0c77b0cf..035e42d03 100644 --- a/Subsurface/Source/Items/Components/Turret.cs +++ b/Subsurface/Source/Items/Components/Turret.cs @@ -347,6 +347,22 @@ namespace Barotrauma.Items.Components return projectiles; } + + public override void FlipX() + { + minRotation = (float)Math.PI - minRotation; + maxRotation = (float)Math.PI - maxRotation; + + var temp = minRotation; + minRotation = maxRotation; + maxRotation = temp; + + while (minRotation < 0) + { + minRotation += MathHelper.TwoPi; + maxRotation += MathHelper.TwoPi; + } + } public override void ReceiveSignal(int stepsTaken, string signal, Connection connection, Item sender, float power) {