private void HandlePushEvent(SkeletonPoint pt, bool isPlayerOne) { if (selectingBall) { return; } SeesawObject pushedBall = null; PointCanvas ballHolder = null; var heldBalls = isPlayerOne ? game.PlayerOneHeldBalls : game.PlayerTwoHeldBalls; var ballHolders = isPlayerOne ? _playerOneBallHolders : _playerTwoBallHolders; foreach (var holder in ballHolders) { Rect rect = holder.GetBoundaryRect(); if (rect.Contains(pt.To2DPoint())) { if (holder.Children.Count > 0) { pushedBall = (SeesawObject)holder.Children[0]; ballHolder = holder; } } } if (pushedBall != null) { int index = heldBalls.IndexOf(pushedBall); HitBall(index, new Vector(0, 0), isPlayerOne); } }
/// <summary> /// Adds a ball to the balance /// </summary> /// <param name="ball"></param> /// <param name="leftSide"></param> public void AddBallToBalance(SeesawObject ball, bool leftSide) { if (leftSide) { LeftBalanceBalls.Add(ball); } else { RightBalanceBalls.Add(ball); } }
/// <summary> /// Pushes a ball from the HeldBalls section in the assumption that it'll trigger an animation /// </summary> /// <param name="ball">The ball to remove</param> public bool PushBall(SeesawObject ball) { if (ball == null) { return(false); } int ballOneIdx = this.PlayerOneHeldBalls.IndexOf(ball); int ballTwoIdx = this.PlayerTwoHeldBalls.IndexOf(ball); if (ballOneIdx > -1) { this.PlayerOneHeldBalls[ballOneIdx] = null; } else if (ballTwoIdx > -1) { this.PlayerTwoHeldBalls[ballTwoIdx] = null; } else { return(false); } return(true); }