LADXHD/InGame/GameObjects/Things/ObjLightSprite.cs

53 lines
1.9 KiB
C#
Raw Normal View History

2023-12-14 22:21:22 +00:00
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using ProjectZ.InGame.GameObjects.Base;
using ProjectZ.InGame.GameObjects.Base.CObjects;
using ProjectZ.InGame.GameObjects.Base.Components;
using ProjectZ.InGame.SaveLoad;
using ProjectZ.InGame.Things;
namespace ProjectZ.InGame.GameObjects.Things
{
internal class ObjLightSprite : GameObject
{
private readonly DictAtlasEntry _sprite;
private readonly Color _lightColor;
private readonly Vector2 _position;
private readonly float _rotation;
public ObjLightSprite() : base("editor light") { }
public ObjLightSprite(Map.Map map, int posX, int posY, string spriteId, int colorR, int colorG, int colorB, int colorA, int layer, int rotation) : base(map)
{
EntityPosition = new CPosition(posX, posY, 0);
if (!string.IsNullOrEmpty(spriteId))
_sprite = Resources.GetSprite(spriteId);
if (_sprite == null)
{
Console.WriteLine("Could not find spriteId: " + spriteId);
IsDead = true;
return;
}
EntitySize = new Rectangle(0, 0, _sprite.SourceRectangle.Width, _sprite.SourceRectangle.Height);
_position = new Vector2(EntityPosition.X + _sprite.Origin.X, EntityPosition.Y + _sprite.Origin.Y);
_lightColor = new Color(colorR, colorG, colorB) * (colorA / 255f);
_rotation = rotation * MathF.PI / 2;
AddComponent(LightDrawComponent.Index, new LightDrawComponent(DrawLight) { Layer = layer });
}
public void DrawLight(SpriteBatch spriteBatch)
{
spriteBatch.Draw(_sprite.Texture, _position, _sprite.ScaledRectangle,
_lightColor, _rotation, _sprite.ScaledOrigin, _sprite.Scale, SpriteEffects.None, 0);
}
}
}