public Soldier(EntityState es, string name, XmlParser xp)
            : base(es, name)
        {
            Name = name + ID;

            Body = new Body(this, "Body");
            AddComponent(Body);

            Physics = new Physics(this, "Physics");
            AddComponent(Physics);

            Animation = new Animation(this, "Animation");
            Animation.Start();
            AddComponent(Animation);

            Collision = new Collision(this, "Collision");
            AddComponent(Collision);

            Health = new Health(this, "Health");
            Health.DiedEvent += OnDeath;
            AddComponent(Health);

            _attacktimer = new Timer(this, "AttackTimer");
            _attacktimer.LastEvent += OnAttackTimer;
            AddComponent(_attacktimer);

            _attacksound = new Sound(this, "AttackSound");
            AddComponent(_attacksound);

            _hitsound = new Sound(this, "HitSound");
            AddComponent(_hitsound);

            _ge = new GibEmitter(this, "GibEmitter");
            AddComponent(_ge);

            string path = es.Name + "->" + "Soldier";
            ParseXml(xp, path);

            Animation.Flip = (_rand.RandomBool()) ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
            Physics.Velocity.X = (Animation.Flip == SpriteEffects.None) ? -_speed : _speed;
            Body.Position.X = (Animation.Flip == SpriteEffects.None) ? es.GameRef.Viewport.Right + 10 : -10;
            Body.Position.Y = 520 - _rand.Next(-10, 10);

            //TODO: Set origin
            //TODO: Set Health.DiedEvent to emit blood particles and Destroy
        }
        public Helicopter(EntityState es, string name, XmlParser xp)
            : base(es, name)
        {
            Name = name + ID;
            _xp = xp;

            Body = new Body(this, "Body");
            AddComponent(Body);

            Physics = new Physics(this, "Physics");
            AddComponent(Physics);

            Animation = new Animation(this, "Animation");
            AddComponent(Animation);

            Collision = new Collision(this, "Collision");
            AddComponent(Collision);

            Health = new Health(this, "Health");
            Health.DiedEvent += OnDeath;
            AddComponent(Health);

            _ge = new GibEmitter(this, "GibEmitter");
            AddComponent(_ge);

            _explodeanim = new Animation(this, "ExplodeAnim");
            _explodeanim.LastFrameEvent += Destroy;
            AddComponent(_explodeanim);

            _hitsound = new Sound(this, "HitSound");
            AddComponent(_hitsound);

            string path = es.Name + "->Helicopter";
            ParseXml(xp, path);

            Animation.Flip = (_rand.RandomBool()) ? SpriteEffects.None : SpriteEffects.FlipHorizontally;
            Physics.Velocity.X = (Animation.Flip == SpriteEffects.None) ? -.4f : .4f;
            Body.Position.Y = 300 - _rand.Next(-10, 10);
            Body.Position.X = (Animation.Flip == SpriteEffects.None) ? es.GameRef.Viewport.Right + 10 : -10;
        }