/// <summary> /// Remove the last movement vector /// </summary> private void RemoveLastMovementVector() { // remove from grid points collection mRouteGridPoints.RemoveAt(mRouteGridPoints.Count - 1); xNrVectors.Text = GetNrOfVectors().ToString(); // remove painting from grid uint nrOfUIElements = MovementVectorPainter.RemoveLastMovementVector(xMyCanvas.Children, mRouteElements); // remove from ui elements collection for (uint index = 0; index < nrOfUIElements; index++) { mRouteElements.RemoveAt(mRouteElements.Count - 1); } }
/// <summary> /// The movement vector is valid, now deal with it and /// - paint the movement vector /// - increase counter /// - detect if race is finished /// </summary> /// <param name="gridPointClicked"></param> private void HandleValidMovementVector(Point gridPointClicked) { // paint the movement vector IList <UIElement> uiElemsMovVector = MovementVectorPainter.PaintMovementVector (xMyCanvas.Children, mRouteGridPoints.Last(), gridPointClicked); for (int index = 0; index < uiElemsMovVector.Count; index++) { mRouteElements.Add(uiElemsMovVector[index]); } // verify if the race is finished, it is simpler to do this before adding the grid point bool raceFinished = mActiveTrack.CheckIfRaceIsFinished(mRouteGridPoints, gridPointClicked); mRouteGridPoints.Add(gridPointClicked); xNrVectors.Text = GetNrOfVectors().ToString(); if (raceFinished) { FinishRace(); } }