Flipping turrets & controllers, moved radar UI update to UpdateHUD

This commit is contained in:
Regalis
2016-10-05 16:52:40 +03:00
parent 9511baeeb8
commit 9154be4792
3 changed files with 53 additions and 2 deletions
@@ -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);
}
}
}
}
@@ -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;
@@ -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)
{