/// <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; }
/// <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); }
/// <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 }