Example #1
0
        private void DoOneComputerDriverMove(object state)
        {
            uint  nrBacktracks;
            Point gridPoint;

            mComputerDriverManager.GetNextGridPoint(mActiveTrack, mActiveCar, mRouteGridPoints,
                                                    new Point(GridLinePainter.GetMiddleGridPointX(xMyCanvas),
                                                              GridLinePainter.GetMiddleGridPointY(xMyCanvas)),
                                                    out nrBacktracks, out gridPoint);

            if (nrBacktracks == 0)
            {
                if (gridPoint != null)
                {
                    HandleGridPoint(gridPoint);
                }
            }
            else
            {
                for (uint index = 0; index < nrBacktracks; index++)
                {
                    RemoveLastMovementVector();
                }

                if (gridPoint != null)
                {
                    HandleGridPoint(gridPoint);
                }
            }
        }
Example #2
0
        /// <summary>
        /// constructor
        /// </summary>
        public GridBackground()
        {
            InitializeComponent();

            xMyCanvas.PointerReleased += handlePointerReleased;

            uint nrGridRows = GridLinePainter.GetNrGridRows(xMyCanvas);

            // paint background color
            this.xMyCanvas.Background = GridBrushDefs.backgroundBrush;

            // paint the background grid lines
            GridLinePainter.PaintGridLines(xMyCanvas, nrGridRows);

            // get a standard car with acceleration = 1
            mActiveCar = new StandardCar(1);
        }
        /// <summary>
        /// constructor
        /// </summary>
        public GridBackgroundTrackCreation()
        {
            InitializeComponent();

            xMyCanvas.PointerPressed  += handlePointerPressed;
            xMyCanvas.PointerMoved    += handlePointerMoved;
            xMyCanvas.PointerReleased += handlePointerReleased;

            uint nrGridRows = GridLinePainter.GetNrGridRows(xMyCanvas);

            // paint background color of track creation grid
            this.xMyCanvas.Background = BackgroundBrushTrackCreation;

            // paint the background grid lines
            GridLinePainter.PaintGridLines(xMyCanvas, nrGridRows);

            // paint starting line candidate so that user knows where to start
            PaintStartingLineCandidate();

            // reset all drawing member variables
            ResetDrawings();
        }
        /// <summary>
        /// Paint starting line candidate so that user knows where to start
        /// </summary>
        private void PaintStartingLineCandidate()
        {
            uint   startingLineYCoordinate      = GridLinePainter.GetMiddleGridRowYCoordinate(xMyCanvas);
            uint   startingLineXRightGridPoint  = GridLinePainter.GetMiddleGridPointX(xMyCanvas);
            double startingLineXRightCoordinate = startingLineXRightGridPoint * GridBackgroundHelper.gridDistance;

            mStartingLineCandidateLeftPoint.X = 0.0;
            mStartingLineCandidateLeftPoint.Y = startingLineYCoordinate;

            mStartingLineCandidateRightPoint.X = startingLineXRightCoordinate;
            mStartingLineCandidateRightPoint.Y = startingLineYCoordinate;

            Line startingLineCandidate = new Line();

            startingLineCandidate.Stroke          = TrackBrushDefs.startingLineBrush;
            startingLineCandidate.StrokeThickness = 3;
            startingLineCandidate.X1 = mStartingLineCandidateLeftPoint.X;
            startingLineCandidate.Y1 = mStartingLineCandidateLeftPoint.Y;
            startingLineCandidate.X1 = mStartingLineCandidateRightPoint.X;
            startingLineCandidate.Y2 = mStartingLineCandidateRightPoint.Y;

            Canvas.SetZIndex(startingLineCandidate, ZIndexValues.startingLine);
            xMyCanvas.Children.Add(startingLineCandidate);
        }
Example #5
0
        /// <summary>
        /// Get the track that was chosen and paint that
        /// </summary>
        /// <param name="e"></param>
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            // first paint the track
            int?trackNumber = e.Parameter as int?;

            if (trackNumber != null)
            {
                try
                {
                    if (trackNumber != LOAD_TRACK_NR)
                    {
                        // a predefined track was chosen, get this track
                        mActiveTrack = TrackProvider.GetTrack((uint)trackNumber);
                    }
                    else
                    {
                        // user chose "Load Track"
                        // FileBrowseDialog
                        string filePath = await MyFilePicker.LetUserPickFile2Open();

                        if (filePath != null)
                        {
                            try
                            {
                                // load track
                                mActiveTrack = await TrackLoader.LoadTrack(filePath);
                            }
                            catch (Exception)
                            {
                                MessageDialog dialog = new MessageDialog("Please choose another track file, because the selected file is invalid: "
                                                                         + Environment.NewLine + "'" + filePath + "'.", "Error");
                                await dialog.ShowAsync();

                                // an exception occurred, return to main page
                                Back2Main();
                            }
                        }
                    }

                    if (mActiveTrack != null)
                    {
                        mActiveTrack.PaintTrack(xMyCanvas.Children, xMyCanvas.Width, xMyCanvas.Height,
                                                GridLinePainter.GetMiddleGridRowYCoordinate(xMyCanvas));

                        // highscore
                        SetHighscoreInGUI();

                        InitRace();
                    }
                    else
                    {
                        // loading track failed, navigate back to main
                        Back2Main();
                    }
                }
                catch (Exception)
                {
                    MessageDialog dialog = new MessageDialog("Problem with loading the track", "Error");
                    await dialog.ShowAsync();

                    // an exception occurred, return to main page
                    Back2Main();
                }
            }
        }