Esempio n. 1
0
        public bool TryLoadMap(string simulator, string trackName, out TrackMapDto trackMapDto)
        {
            string fullPathName = Path.Combine(Path.Combine(MapsPath, simulator), trackName + FileSuffix);

            Logger.Info($"Trying to Load Map for Simulator {simulator}, track: {trackName}, path: {fullPathName} ");
            if (!File.Exists(fullPathName))
            {
                fullPathName = fullPathName.Replace("-", "_");
            }
            try
            {
                using (TextReader file = File.OpenText(fullPathName))
                {
                    XmlReader reader = XmlReader.Create(file, new XmlReaderSettings()
                    {
                        CheckCharacters = false
                    });
                    trackMapDto = (TrackMapDto)_xmlSerializer.Deserialize(reader);
                }
                return(true);
            }
            catch (Exception e)
            {
                Logger.Error(e, "Error Loading Map");
                if (File.Exists(fullPathName))
                {
                    File.Delete(fullPathName);
                }

                trackMapDto = null;
                return(false);
            }
        }
Esempio n. 2
0
        public void SaveMap(string simulator, string trackName, TrackMapDto trackMapDto)
        {
            string directory = Path.Combine(MapsPath, simulator);

            Directory.CreateDirectory(directory);
            string fullPathName = Path.Combine(directory, trackName + FileSuffix);

            Logger.Info($"Trying to Save Map for Simulator {simulator}, track: {trackName}, path: {fullPathName} ");
            using (FileStream file = File.Exists(fullPathName) ? File.Open(fullPathName, FileMode.Truncate) : File.Create(fullPathName))
            {
                _xmlSerializer.Serialize(file, trackMapDto);
            }
        }
Esempio n. 3
0
        private void SwapGeometries(TrackMapDto trackMapDto, bool reverseXAxis, bool reverseYAxis)
        {
            Point[] fullMapPoints   = GeometryToPoints(trackMapDto.TrackGeometry.FullMapGeometry).Select(x => new Point(reverseXAxis ? -x.Y : x.Y, reverseYAxis ? -x.X : x.X)).ToArray();
            Point[] sector1Points   = GeometryToPoints(trackMapDto.TrackGeometry.Sector1Geometry).Select(x => new Point(reverseXAxis ? -x.Y : x.Y, reverseYAxis ? -x.X : x.X)).ToArray();
            Point[] sector2Points   = GeometryToPoints(trackMapDto.TrackGeometry.Sector2Geometry).Select(x => new Point(reverseXAxis ? -x.Y : x.Y, reverseYAxis ? -x.X : x.X)).ToArray();
            Point[] sector3Points   = GeometryToPoints(trackMapDto.TrackGeometry.Sector3Geometry).Select(x => new Point(reverseXAxis ? -x.Y : x.Y, reverseYAxis ? -x.X : x.X)).ToArray();
            Point[] startLinePoints = GeometryToPoints(trackMapDto.TrackGeometry.StartLineGeometry).Select(x => new Point(reverseXAxis ? -x.Y : x.Y, reverseYAxis ? -x.X : x.X)).ToArray();

            trackMapDto.TrackGeometry.LeftOffset = fullMapPoints.Min(x => x.X) - TrackMapFromTelemetryFactory.TrackBounds;
            trackMapDto.TrackGeometry.TopOffset  = fullMapPoints.Min(x => x.Y) - TrackMapFromTelemetryFactory.TrackBounds;

            trackMapDto.TrackGeometry.Width  = fullMapPoints.Max(x => x.X) + TrackMapFromTelemetryFactory.TrackBounds - trackMapDto.TrackGeometry.LeftOffset;
            trackMapDto.TrackGeometry.Height = fullMapPoints.Max(x => x.Y) + TrackMapFromTelemetryFactory.TrackBounds - trackMapDto.TrackGeometry.TopOffset;

            trackMapDto.TrackGeometry.FullMapGeometry   = TrackMapFromTelemetryFactory.GetGeometry(fullMapPoints, true);
            trackMapDto.TrackGeometry.Sector1Geometry   = TrackMapFromTelemetryFactory.GetGeometry(sector1Points, false);
            trackMapDto.TrackGeometry.Sector2Geometry   = TrackMapFromTelemetryFactory.GetGeometry(sector2Points, false);
            trackMapDto.TrackGeometry.Sector3Geometry   = TrackMapFromTelemetryFactory.GetGeometry(sector3Points, false);
            trackMapDto.TrackGeometry.StartLineGeometry = TrackMapFromTelemetryFactory.GetGeometry(startLinePoints, false);
        }
Esempio n. 4
0
        public TrackMapDto RotateRight(TrackMapDto trackMapDto)
        {
            TrackGeometryDto trackGeometry = trackMapDto.TrackGeometry;
            TrackMapDto      swapped       = SwapAxis(trackMapDto);

            if (trackGeometry.IsSwappedAxis)
            {
                swapped.TrackGeometry.XCoef = -trackMapDto.TrackGeometry.XCoef;
            }
            else
            {
                swapped.TrackGeometry.YCoef = -trackMapDto.TrackGeometry.YCoef;
            }

            bool reverseXAxis = Math.Sign(trackMapDto.TrackGeometry.XCoef) != Math.Sign(swapped.TrackGeometry.YCoef);
            bool reverseYAxis = Math.Sign(trackMapDto.TrackGeometry.YCoef) != Math.Sign(swapped.TrackGeometry.XCoef);

            SwapGeometries(swapped, reverseXAxis, reverseYAxis);
            return(swapped);
        }
Esempio n. 5
0
 private TrackMapDto SwapAxis(TrackMapDto trackMapDto)
 {
     return(new TrackMapDto()
     {
         LayoutName = trackMapDto.LayoutName,
         SimulatorSource = trackMapDto.SimulatorSource,
         TrackName = trackMapDto.TrackName,
         TrackGeometry = new TrackGeometryDto()
         {
             ExporterVersion = trackMapDto.TrackGeometry.ExporterVersion,
             IsSwappedAxis = !trackMapDto.TrackGeometry.IsSwappedAxis,
             XCoef = trackMapDto.TrackGeometry.XCoef,
             YCoef = trackMapDto.TrackGeometry.YCoef,
             FullMapGeometry = trackMapDto.TrackGeometry.FullMapGeometry,
             StartLineGeometry = trackMapDto.TrackGeometry.StartLineGeometry,
             Sector1Geometry = trackMapDto.TrackGeometry.Sector1Geometry,
             Sector2Geometry = trackMapDto.TrackGeometry.Sector2Geometry,
             Sector3Geometry = trackMapDto.TrackGeometry.Sector3Geometry,
         }
     });
 }
Esempio n. 6
0
 public MapEventArgs(TrackMapDto trackMapDto)
 {
     TrackMapDto = trackMapDto;
 }