64 lines
1.5 KiB
C#
64 lines
1.5 KiB
C#
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using System;
|
|
|
|
namespace Barotrauma
|
|
{
|
|
class HUDProgressBar
|
|
{
|
|
private float progress;
|
|
|
|
public float Progress
|
|
{
|
|
get { return progress; }
|
|
set { progress = MathHelper.Clamp(value, 0.0f, 1.0f); }
|
|
}
|
|
|
|
public float FadeTimer;
|
|
|
|
private Color fullColor, emptyColor;
|
|
|
|
public Vector2 WorldPosition;
|
|
|
|
public Vector2 Size;
|
|
|
|
public HUDProgressBar(Vector2 worldPosition)
|
|
: this(worldPosition, Color.Red, Color.Green)
|
|
{
|
|
}
|
|
|
|
public HUDProgressBar(Vector2 worldPosition, Color emptyColor, Color fullColor)
|
|
{
|
|
this.emptyColor = emptyColor;
|
|
this.fullColor = fullColor;
|
|
|
|
WorldPosition = worldPosition;
|
|
|
|
Size = new Vector2(100.0f, 20.0f);
|
|
|
|
FadeTimer = 1.0f;
|
|
}
|
|
|
|
public void Update(float deltatime)
|
|
{
|
|
FadeTimer -= deltatime;
|
|
}
|
|
|
|
public void Draw(SpriteBatch spriteBatch, Camera cam)
|
|
{
|
|
float a = Math.Min(FadeTimer, 1.0f);
|
|
|
|
Vector2 pos = cam.WorldToScreen(
|
|
new Vector2(WorldPosition.X - Size.X / 2, WorldPosition.Y + Size.Y / 2));
|
|
|
|
pos.Y = -pos.Y;
|
|
|
|
GUI.DrawProgressBar(spriteBatch,
|
|
pos,
|
|
Size, progress,
|
|
Color.Lerp(emptyColor, fullColor, progress) * a,
|
|
Color.White * a * 0.8f);
|
|
}
|
|
}
|
|
}
|