/// <summary> /// React to a collision with another player /// </summary> /// <param name="player"></param> public void ReactToCollision(AbstractPlayer player) { // TODO: Fix this //Vector2 closestPoint = player.GetBody().GetClosestPointOnPerimeter(this.Player.GetBody().GetPosition()); //Vector2 closestPointToPosition = this.Player.GetBody().GetPosition() - closestPoint; //closestPointToPosition.Normalize(); //if (float.IsNaN(closestPointToPosition.X)) // closestPointToPosition.X = 0f; //if (float.IsNaN(closestPointToPosition.Y)) // closestPointToPosition.Y = 0f; //this.Player.GetBody().SetPosition(closestPoint + closestPointToPosition * ((CircleBody)this.Player.GetBody()).GetRadius()); }
/// <summary> /// React to a collision with a player /// </summary> /// <param name="player"></param> public void ReactToCollision(AbstractPlayer player) { if (!this._flag.IsReset() && this._flag.GetTeam() == player.GetTeam()) { player.ReturnFlag(this._flag); } else if (this._flag.GetTeam() != player.GetTeam()) { player.PickUpFlag(this._flag); } else if (player.HasFlag() && player.GetTeam() == this._flag.GetTeam()) { player.CaptureFlag(); } }
/// <summary> /// React to collision with a player /// </summary> /// <param name="player"></param> public void ReactToCollision(AbstractPlayer player) { // Undefined }
/// <summary> /// Reset state /// </summary> public void Reset() { this.Target = null; }
/// <summary> /// Constructor /// </summary> public AttackBehavior() { this.Target = null; }
/// <summary> /// Add player /// </summary> /// <param name="player"></param> public void AddPlayer(AbstractPlayer player) { if (!this.Players.Contains(player)) { this.Players.Add(player); } }
/// <summary> /// Constructor /// </summary> /// <param name="player"></param> public CollisionBehaviors(AbstractPlayer player) { this.Player = player; }
/// <summary> /// Set player /// </summary> public void SetPlayer(AbstractPlayer player) { this.Player = player; }