using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PlantDemo
{
    public abstract class Bullet : Entity
    {
        public abstract BulletShower CreateShower();
    }

    public class BulWD : Bullet
    {
        public BulWD()
        {
            Width = Height = 24;
            VX = 5;
        }

        public override BulletShower CreateShower()
        {
            return new BulWDShower(this);
        }
    }

    public class BulBWD : Bullet
    {
        public BulBWD()
        {
            Width = Height = 24;
            VX = 5;
        }

        public override BulletShower CreateShower()
        {
            return new BulBWDShower(this);
        }
    }

    public class BulXQP : Bullet
    {
        public BulXQP()
        {
            Width = 24;
            Height = 22;
            VX = 8;
        }

        public override BulletShower CreateShower()
        {
            return new BulXQPShower(this);
        }
    }

    public class BulQP : Bullet
    {
        public BulQP()
        {
            Width = 32;
            Height = 29;
            VX = 8;
        }

        public override BulletShower CreateShower()
        {
            return new BulQPShower(this);
        }
    }
}
