public Base(World world, Vector2 position, bool isVertical, Particles.ParticleSystem fire)
            : base(world)
        {
            health = isVertical ? 20 : 40;
            vertical = isVertical;
            warning = 0;
            fireParticles = fire;

            Position = position / 100;
            BodyType = BodyType.Static;
            Rotation = 0;
            if (vertical) FixtureFactory.AttachRectangle(texV.Width / 100f, texV.Height / 100f, 1, Vector2.Zero, this);
            else FixtureFactory.AttachRectangle(texH.Width / 100f, texH.Height / 100f, 1, Vector2.Zero, this);
            OnCollision += (fA, fB, c) =>
            {
                if (!(fB.Body is Projectile)) return true;

                var p = (Projectile)fB.Body;

                if (p.Damage == 0) return true;

                damage += p.Damage;

                hitSnd.Play(0.2f, -p.Damage / 20f, 0);

                fireParticles.AddParticle(new Vector3(p.Position.X * 100 - 512, 0, p.Position.Y * 100 - 384),
                    Vector3.Zero, p.Damage * 2 + 8);

                if (damage >= health)
                {
                    var pos = new Vector3(position.X - 512, 0, position.Y - 384);
                    if (vertical) pos.Z -= texV.Height / 2f;
                    else pos.X -= texH.Width / 2f;

                    for (int i = 0; vertical && i <= texV.Height || !vertical && i <= texH.Width; i+=2)
                    {
                        fireParticles.AddParticle(pos, Vector3.Zero);

                        if (vertical) pos.Z += 2;
                        else pos.X += 2;
                    }
                }

                return true;
            };
        }