LADXHD/InGame/GameObjects/Bosses/BossFinalBossFinalTail.cs

57 lines
1.9 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.GameObjects.Base;
using ProjectZ.InGame.GameObjects.Base.CObjects;
using ProjectZ.InGame.GameObjects.Base.Components;
using ProjectZ.InGame.Things;
namespace ProjectZ.InGame.GameObjects.Bosses
{
class BossFinalBossFinalTail : GameObject
{
private readonly BossFinalBoss _owner;
private readonly DrawComponent _drawComponent;
private readonly DamageFieldComponent _damageFieldComponent;
public readonly CSprite Sprite;
public BossFinalBossFinalTail(Map.Map map, BossFinalBoss owner, string spriteId, Vector2 position) : base(map)
{
Tags = Values.GameObjectTag.Enemy;
EntityPosition = new CPosition(position.X, position.Y, 0);
EntitySize = new Rectangle(-8, -8, 16, 16);
_owner = owner;
Sprite = new CSprite(spriteId, EntityPosition);
var damageCollider = new CBox(EntityPosition, -3, -3, 6, 6, 3);
AddComponent(DamageFieldComponent.Index, _damageFieldComponent = new DamageFieldComponent(damageCollider, HitType.Enemy, 2));
AddComponent(DrawComponent.Index, _drawComponent = new DrawComponent(Draw, Values.LayerBottom, EntityPosition));
SetActive(false);
}
public void DeactivateDamageField()
{
_damageFieldComponent.IsActive = false;
}
public void SetActive(bool state)
{
_damageFieldComponent.IsActive = state;
_drawComponent.IsActive = state;
}
private void Draw(SpriteBatch spriteBatch)
{
if (!_drawComponent.IsActive)
return;
Sprite.SpriteShader = _owner.Sprite.SpriteShader;
Sprite.Draw(spriteBatch);
}
}
}