Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIMessage.cs
2021-02-25 13:44:23 +02:00

114 lines
2.6 KiB
C#

using Microsoft.Xna.Framework;
namespace Barotrauma
{
class GUIMessage
{
private ColoredText coloredText;
private Vector2 pos;
private float lifeTime;
private Vector2 size;
public readonly bool WorldSpace;
public string Text
{
get { return coloredText.Text; }
}
public Color Color
{
get { return coloredText.Color; }
}
public Vector2 Pos
{
get { return pos; }
set { pos = value; }
}
public Vector2 Velocity
{
get;
private set;
}
public Vector2 Size
{
get { return size; }
}
public Vector2 Origin;
public float Timer;
public float LifeTime
{
get { return lifeTime; }
}
public ScalableFont Font
{
get;
private set;
}
public Submarine Submarine
{
get;
private set;
}
public Vector2 DrawPos
{
get
{
return Submarine == null ? Pos : Pos + Submarine.DrawPosition;
}
}
public GUIMessage(string text, Color color, float lifeTime, ScalableFont font = null)
{
coloredText = new ColoredText(text, color, false, false);
this.lifeTime = lifeTime;
Timer = lifeTime;
size = font.MeasureString(text);
Origin = new Vector2(0, size.Y * 0.5f);
Font = font;
}
public GUIMessage(string text, Color color, Vector2 position, Vector2 velocity, float lifeTime, Alignment textAlignment = Alignment.Center, ScalableFont font = null, Submarine sub = null)
{
coloredText = new ColoredText(text, color, false, false);
WorldSpace = true;
pos = position;
Timer = lifeTime;
Velocity = velocity;
this.lifeTime = lifeTime;
Font = font;
size = font.MeasureString(text);
Origin = new Vector2((int)(0.5f * size.X), (int)(0.5f * size.Y));
if (textAlignment.HasFlag(Alignment.Left))
Origin.X -= size.X * 0.5f;
if (textAlignment.HasFlag(Alignment.Right))
Origin.X += size.X * 0.5f;
if (textAlignment.HasFlag(Alignment.Top))
Origin.Y -= size.Y * 0.5f;
if (textAlignment.HasFlag(Alignment.Bottom))
Origin.Y += size.Y * 0.5f;
Submarine = sub;
}
}
}