HUDProgressBars move with the subs

This commit is contained in:
Regalis
2016-09-26 16:26:52 +03:00
parent ccb50ca28f
commit e91e0a4f9c
2 changed files with 33 additions and 9 deletions
+1 -1
View File
@@ -1355,7 +1355,7 @@ namespace Barotrauma
HUDProgressBar progressBar = null; HUDProgressBar progressBar = null;
if (!hudProgressBars.TryGetValue(linkedObject, out progressBar)) if (!hudProgressBars.TryGetValue(linkedObject, out progressBar))
{ {
progressBar = new HUDProgressBar(worldPosition, emptyColor, fullColor); progressBar = new HUDProgressBar(worldPosition, Submarine, emptyColor, fullColor);
hudProgressBars.Add(linkedObject, progressBar); hudProgressBars.Add(linkedObject, progressBar);
} }
+32 -8
View File
@@ -18,20 +18,40 @@ namespace Barotrauma
private Color fullColor, emptyColor; private Color fullColor, emptyColor;
public Vector2 WorldPosition; private Vector2 worldPosition;
public Vector2 WorldPosition
{
get
{
return worldPosition;
}
set
{
worldPosition = value;
if (parentSub != null)
{
worldPosition -= parentSub.DrawPosition;
}
}
}
public Vector2 Size; public Vector2 Size;
public HUDProgressBar(Vector2 worldPosition) private Submarine parentSub;
: this(worldPosition, Color.Red, Color.Green)
public HUDProgressBar(Vector2 worldPosition, Submarine parentSubmarine = null)
: this(worldPosition, parentSubmarine, Color.Red, Color.Green)
{ {
} }
public HUDProgressBar(Vector2 worldPosition, Color emptyColor, Color fullColor) public HUDProgressBar(Vector2 worldPosition, Submarine parentSubmarine, Color emptyColor, Color fullColor)
{ {
this.emptyColor = emptyColor; this.emptyColor = emptyColor;
this.fullColor = fullColor; this.fullColor = fullColor;
parentSub = parentSubmarine;
WorldPosition = worldPosition; WorldPosition = worldPosition;
Size = new Vector2(100.0f, 20.0f); Size = new Vector2(100.0f, 20.0f);
@@ -48,13 +68,17 @@ namespace Barotrauma
{ {
float a = Math.Min(FadeTimer, 1.0f); float a = Math.Min(FadeTimer, 1.0f);
Vector2 pos = cam.WorldToScreen( Vector2 pos = new Vector2(WorldPosition.X - Size.X / 2, WorldPosition.Y + Size.Y / 2);
new Vector2(WorldPosition.X - Size.X / 2, WorldPosition.Y + Size.Y / 2));
pos.Y = -pos.Y; if (parentSub != null)
{
pos += parentSub.DrawPosition;
}
pos = cam.WorldToScreen(pos);
GUI.DrawProgressBar(spriteBatch, GUI.DrawProgressBar(spriteBatch,
pos, new Vector2(pos.X, -pos.Y),
Size, progress, Size, progress,
Color.Lerp(emptyColor, fullColor, progress) * a, Color.Lerp(emptyColor, fullColor, progress) * a,
Color.White * a * 0.8f); Color.White * a * 0.8f);