namespace AlienAttack.MonoGame.Things.Bullets;

public static class BulletDefinitions
{
    public static readonly BulletDef LaserSmall = new()
    {
        Kind = BulletKind.LaserSmall,
        Width = LaserBulletSmall.Width,
        Height = LaserBulletSmall.Height,
        Create = (x, y, vx, vy, o) => new LaserBulletSmall(x, y, vx, vy, o),
    };

    public static readonly BulletDef LaserMedium = new()
    {
        Kind = BulletKind.LaserMedium,
        Width = LaserBulletMedium.Width,
        Height = LaserBulletMedium.Height,
        Create = (x, y, vx, vy, o) => new LaserBulletMedium(x, y, vx, vy, o),
    };

    public static readonly BulletDef LaserLarge = new()
    {
        Kind = BulletKind.LaserLarge,
        Width = LaserBulletLarge.Width,
        Height = LaserBulletLarge.Height,
        Create = (x, y, vx, vy, o) => new LaserBulletLarge(x, y, vx, vy, o),
    };

    public static readonly BulletDef MinigunSmall = new()
    {
        Kind = BulletKind.MinigunSmall,
        Width = MinigunBulletSmall.Width,
        Height = MinigunBulletSmall.Height,
        Create = (x, y, vx, vy, o) => new MinigunBulletSmall(x, y, vx, vy, o),
    };

    public static readonly BulletDef MinigunMedium = new()
    {
        Kind = BulletKind.MinigunMedium,
        Width = MinigunBulletMedium.Width,
        Height = MinigunBulletMedium.Height,
        Create = (x, y, vx, vy, o) => new MinigunBulletMedium(x, y, vx, vy, o),
    };

    public static readonly BulletDef MinigunLarge = new()
    {
        Kind = BulletKind.MinigunLarge,
        Width = MinigunBulletLarge.Width,
        Height = MinigunBulletLarge.Height,
        Create = (x, y, vx, vy, o) => new MinigunBulletLarge(x, y, vx, vy, o),
    };

    public static readonly BulletDef PlasmaSmall = new()
    {
        Kind = BulletKind.PlasmaSmall,
        Width = PlasmaBulletSmall.Width,
        Height = PlasmaBulletSmall.Height,
        Create = (x, y, vx, vy, o) => new PlasmaBulletSmall(x, y, vx, vy, o),
    };

    public static readonly BulletDef PlasmaMedium = new()
    {
        Kind = BulletKind.PlasmaMedium,
        Width = PlasmaBulletMedium.Width,
        Height = PlasmaBulletMedium.Height,
        Create = (x, y, vx, vy, o) => new PlasmaBulletMedium(x, y, vx, vy, o),
    };

    public static readonly BulletDef PlasmaLarge = new()
    {
        Kind = BulletKind.PlasmaLarge,
        Width = PlasmaBulletLarge.Width,
        Height = PlasmaBulletLarge.Height,
        Create = (x, y, vx, vy, o) => new PlasmaBulletLarge(x, y, vx, vy, o),
    };

    public static readonly BulletDef ProtonSmall = new()
    {
        Kind = BulletKind.ProtonSmall,
        Width = ProtonBulletSmall.Width,
        Height = ProtonBulletSmall.Height,
        Create = (x, y, vx, vy, o) => new ProtonBulletSmall(x, y, vx, vy, o),
    };

    public static readonly BulletDef ProtonMedium = new()
    {
        Kind = BulletKind.ProtonMedium,
        Width = ProtonBulletMedium.Width,
        Height = ProtonBulletMedium.Height,
        Create = (x, y, vx, vy, o) => new ProtonBulletMedium(x, y, vx, vy, o),
    };

    public static readonly BulletDef ProtonLarge = new()
    {
        Kind = BulletKind.ProtonLarge,
        Width = ProtonBulletLarge.Width,
        Height = ProtonBulletLarge.Height,
        Create = (x, y, vx, vy, o) => new ProtonBulletLarge(x, y, vx, vy, o),
    };
}