LADXHD/InGame/Interface/InterfaceImage.cs

57 lines
2 KiB
C#
Raw Normal View History

2023-12-14 22:21:22 +00:00
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using ProjectZ.InGame.SaveLoad;
namespace ProjectZ.InGame.Interface
{
public class InterfaceImage : InterfaceElement
{
public Rectangle SourceRectangle;
public Vector2 Offset;
public Color ImageColor = Color.White;
public Vector2 Origin;
public SpriteEffects Effects;
private readonly Texture2D _sprImage;
private readonly Vector2 _drawOffset;
public InterfaceImage(DictAtlasEntry sprite, Point margin)
{
_sprImage = sprite.Texture;
SourceRectangle = sprite.ScaledRectangle;
Size = new Point(sprite.SourceRectangle.Width, sprite.SourceRectangle.Height);
Margin = margin;
}
public InterfaceImage(Texture2D sprImage, Rectangle rectangle, Point size, Point margin)
{
_sprImage = sprImage;
SourceRectangle = rectangle;
if (size == Point.Zero)
Size = new Point(SourceRectangle.Width, SourceRectangle.Height);
else
Size = size;
Margin = margin;
if (size != Point.Zero)
_drawOffset = new Vector2(Size.X / 2 - SourceRectangle.Width / 2, Size.Y / 2 - SourceRectangle.Height / 2);
}
public override void Draw(SpriteBatch spriteBatch, Vector2 drawPosition, float scale, float transparency)
{
base.Draw(spriteBatch, drawPosition, scale, transparency);
if (!Visible || Hidden)
return;
spriteBatch.Draw(_sprImage, new Rectangle(
(int)(drawPosition.X + _drawOffset.X * scale + Offset.X * scale),
(int)(drawPosition.Y + _drawOffset.Y * scale + Offset.Y * scale),
(int)(SourceRectangle.Width * scale),
(int)(SourceRectangle.Height * scale)), SourceRectangle, ImageColor * transparency, 0, Origin, Effects, 0);
}
}
}