예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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();
            }
        }