public override void handleMouseDown(Point mouseLocation, PlayFrame frame, PitchScreenCoordConverter converter, VisualOverlay overlay) { if (mSelectedPlayer == null) { PointF pitchCoords = converter.screenToPitchCoords(mouseLocation); // No player is yet selected so attempt to find the one closest // to the selected spot. mSelectedPlayer = frame.GetClosestPlayer(pitchCoords, Settings.Default.PlayerDiameter * 2.0f); if (mSelectedPlayer == null) { LinearMovement prevCut = frame.GetClosestCutEnd(pitchCoords, Settings.Default.PlayerDiameter * 2.0f); if (prevCut != null && prevCut != frame.DiscFrameMovement.ReceivingCut) { mSelectedPlayer = prevCut.Player; overlay.DrawingNewCut = true; overlay.CutStart = prevCut; } } else { overlay.DrawingNewCut = true; overlay.CutStart = frame.PlayerMovement[mSelectedPlayer][0]; } } }
public override void handleMouseUp(Point mouseLocation, PlayFrame frame, PitchScreenCoordConverter converter, VisualOverlay overlay) { PointF pitchCoords = converter.screenToPitchCoords(mouseLocation); Player closestPlayer = frame.GetClosestPlayer(pitchCoords, Settings.Default.PlayerDiameter); if (closestPlayer != null) { frame.AddDisc(closestPlayer); IsComplete = true; ModelChanged = true; } }
/// <summary> /// In order to move an item we catch the mouse down event to decide which /// thing has been selected. This function chooses either the selected /// cut, trigger or player. /// </summary> /// <param name="mouseLocation">Screen coordinates.</param> /// <param name="frame">Frame currently being designed.</param> /// <param name="converter">Used to convert from screen to pitch /// coordinates.</param> public override void handleMouseDown(Point mouseLocation, PlayFrame frame, PitchScreenCoordConverter converter, VisualOverlay overlay) { PointF pitchCoords = converter.screenToPitchCoords(mouseLocation); // Choose closest selected item. mSelectedPlayer = frame.GetClosestPlayer(pitchCoords, SELECTION_MAX_DISTANCE); mSelectedCut = frame.GetClosestCutEnd(pitchCoords, SELECTION_MAX_DISTANCE); mSelectedTrigger = frame.GetClosestTrigger(pitchCoords, SELECTION_MAX_DISTANCE); mIsMovingDiscControlPoint = frame.IsNearControlPoint(pitchCoords, SELECTION_MAX_DISTANCE); // Note that the ordering of priorities here MUST be the same as the // ordering on mouse up. if (mSelectedTrigger != null) { overlay.SelectedTrigger = mSelectedTrigger; overlay.TriggerPlayer = mSelectedTrigger.AffectedPlayer; } else if (mSelectedCut != null) { overlay.DrawingNewCut = false; overlay.CutStart = mSelectedCut; } else if (mSelectedPlayer != null) { overlay.SelectedPlayer = mSelectedPlayer; } else if (mIsMovingDiscControlPoint) { overlay.MovingDiscControlPoint = true; } }