/// <summary>
 /// Update
 /// </summary>
 /// <param name="position"></param>
 /// <param name="gun"></param>
 /// <param name="canSeeTarget"></param>
 public void Update(Vector2 position, AbstractGun gun, bool canSeeTarget)
 {
     if (this.Target != null && gun != null && canSeeTarget)
     {
         Vector2 toTarget = this.Target.GetBody().GetPosition() - position;
         gun.Fire(toTarget);
     }
 }
 /// <summary>
 /// React to collision with another gun
 /// </summary>
 /// <param name="gun"></param>
 public void ReactToCollision(AbstractGun gun)
 {
     // Undefined
 }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="gun"></param>
 public CollisionBehaviors(AbstractGun gun)
 {
     this.Gun = gun;
 }
Exemple #4
0
        /// <summary>
        /// Pick up gun
        /// </summary>
        /// <param name="gun"></param>
        public override void PickUpGun(AbstractGun gun)
        {
            if (this.Gun == null)
            {
                this.EnqueueMessage("You picked up a " + gun.GetType().Name);
            }

            base.PickUpGun(gun);
        }
Exemple #5
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="body"></param>
 /// <param name="model"></param>
 /// <param name="gun"></param>
 public Bullet(AbstractBody body, PrimitiveBuilder model, AbstractGun gun)
     : base(body, model, gun)
 {
     this.SetCollisionBehaviors(new CollisionBehaviors(this));
 }
        /// <summary>
        /// Drop gun
        /// </summary>
        protected void DropGun()
        {
            Vector2 reverseDirection = -this.Body.GetVelocity();
            reverseDirection.Normalize();

            if (float.IsNaN(reverseDirection.X))
                reverseDirection.X = 0f;
            if (float.IsNaN(reverseDirection.Y))
                reverseDirection.Y = 0f;

            Vector2 direction = reverseDirection;

            this.Gun.GetBody().SetPosition(this.Body.GetPosition() + (((CircleBody)this.Body).GetRadius() + ((CircleBody)this.Gun.GetBody()).GetRadius() + 1f) * direction);

            // Add gun body back to collision pool
            CollisionPool.Instance.AddBody(this.Gun.GetBody());

            this.Gun.SetPlayer(null);
            this.Gun = null;
        }
 /// <summary>
 /// Pick up gun
 /// </summary>
 /// <param name="gun"></param>
 public virtual void PickUpGun(AbstractGun gun)
 {
     if (this.Gun == null)
     {
         this.Gun = gun;
         this.Gun.SetPlayer(this);
         CollisionPool.Instance.RemoveBody(gun.GetBody());
     }
 }
 /// <summary>
 /// Add gun
 /// </summary>
 /// <param name="gun"></param>
 public void AddGun(AbstractGun gun)
 {
     this.Guns.Add(gun);
 }
 /// <summary>
 /// React to a collision with a gun
 /// </summary>
 /// <param name="gun"></param>
 public void ReactToCollision(AbstractGun gun)
 {
     this.Player.PickUpGun(gun);
 }
 /// <summary>
 /// React to a collision with a gun
 /// </summary>
 /// <param name="gun"></param>
 public void ReactToCollision(AbstractGun gun)
 {
     // TODO
 }