Files

58 lines
1.6 KiB
C#

using AlienAttack.MonoGame.Things.Items;
using AlienAttack.MonoGame.Things.Muzzles;
using Microsoft.Xna.Framework;
using System;
namespace AlienAttack.MonoGame.Things.Bullets;
public class Bullet(float x, float y, float xVel, float yVel, Sprite owner) : Sprite(x, y)
{
protected float XVelocity = xVel;
protected float YVelocity = yVel;
public Sprite Owner { get; protected set; } = owner;
public int Damage { get; protected set; } = 0;
public override void Draw(SpriteDrawArgs args)
{
base.Draw(args);
}
public override void Update(SpriteUpdateContext context)
{
XPosition += XVelocity;
YPosition += YVelocity;
if (XPosition + BoundBox.Width < 0
|| XPosition > context.ViewTransform.ScreenWidth
|| YPosition + BoundBox.Height < 0
|| YPosition > context.ViewTransform.ScreenHeight)
{
IsDead = true;
}
base.Update(context);
}
public override void OnCollision(SpriteCollisionContext context)
{
Sprite sprite = context.Sprite;
if (sprite is Bullet || sprite == Owner || sprite is Item || sprite is Explosion)
return;
IsDead = true;
float xVel = 0;
float yVel = 0;
if (context.Sprite is MoveableSprite moveableSprite)
{
xVel = moveableSprite.XVelocity;
yVel = moveableSprite.YVelocity;
}
context.SpawnSprite(new MiniExplosion((int)XPosition, (int)YPosition, xVel, yVel));
context.AudioManager.PlayImpact();
}
}