public AbstractCalendarEntryViewModel Create(EventTemplate eventTemplate, string simulatorName, bool useCalendarEventNames, bool autoReplaceKnownTracks) { if (!string.IsNullOrEmpty(simulatorName) && autoReplaceKnownTracks && _trackTemplateToSimTrackMapper.TryGetSimulatorTrackName(simulatorName, eventTemplate.TrackTemplate.TrackName, out string simulatorTrackName)) { Track trackDefinition = _simulatorContentController.GetAllTracksForSimulator(simulatorName).FirstOrDefault(x => x.Name == simulatorTrackName); if (trackDefinition != null) { var newEntry = _viewModelFactory.Create <ExistingTrackCalendarEntryViewModel>(); newEntry.CustomEventName = useCalendarEventNames ? eventTemplate.EventName : string.Empty; newEntry.TrackName = simulatorTrackName; newEntry.LayoutLength = trackDefinition.LapDistance; bool hasMap = _mapsLoader.TryLoadMap(simulatorName, simulatorTrackName, out TrackMapDto trackMapDto); if (hasMap) { newEntry.TrackGeometryViewModel.FromModel(trackMapDto.TrackGeometry); } return(newEntry); } } return(new CalendarPlaceholderEntryViewModel() { CustomEventName = useCalendarEventNames ? eventTemplate.EventName : string.Empty, LayoutLength = eventTemplate.TrackTemplate.LayoutLength, TrackName = eventTemplate.TrackTemplate.TrackName, }); }
private TrackOverviewViewModel CreateTrackOverviewViewModel(SimulatorDataSet dataSet, ChampionshipDto championship) { TrackInfo trackInfo = dataSet.SessionInfo.TrackInfo; bool hasMap = _mapsLoader.TryLoadMap(championship.SimulatorName, trackInfo.TrackFullName, out TrackMapDto trackMapDto); var trackOverviewViewModel = _viewModelFactory.Create <TrackOverviewViewModel>(); trackOverviewViewModel.TrackName = trackInfo.TrackFullName; trackOverviewViewModel.LayoutLength = $"{trackInfo.LayoutLength.GetByUnit(_settingsProvider.DisplaySettingsViewModel.DistanceUnits):N2} {Distance.GetUnitsSymbol(_settingsProvider.DisplaySettingsViewModel.DistanceUnits)} "; if (hasMap) { trackOverviewViewModel.TrackGeometryViewModel.FromModel(trackMapDto.TrackGeometry); } if (_trackRecordsProvider.TryGetOverallBestRecord(dataSet.Source, trackInfo.TrackFullName, SessionType.Race, out RecordEntryDto recordEntry)) { trackOverviewViewModel.OverallRecord.FromModel(recordEntry); } if (_trackRecordsProvider.TryGetCarBestRecord(dataSet.Source, trackInfo.TrackFullName, dataSet.PlayerInfo.CarName, SessionType.Race, out recordEntry)) { trackOverviewViewModel.CarRecord.FromModel(recordEntry); } if (_trackRecordsProvider.TryGetClassBestRecord(dataSet.Source, trackInfo.TrackFullName, dataSet.PlayerInfo.CarClassName, SessionType.Race, out recordEntry)) { trackOverviewViewModel.ClassRecord.FromModel(recordEntry); } return(trackOverviewViewModel); }
private void ConfirmSimulatorSelection() { if (string.IsNullOrWhiteSpace(_championshipCreationViewModel.SelectedSimulator)) { return; } _championshipCreationViewModel.IsSimulatorSelectionEnabled = false; _selectedSimulator = _championshipCreationViewModel.SelectedSimulator; _championshipCreationViewModel.CalendarDefinitionViewModel.CalendarViewModel.SimulatorName = _selectedSimulator; var allTracks = _simulatorContentController.GetAllTracksForSimulator(_selectedSimulator).OrderBy(x => x.Name); List <AbstractTrackTemplateViewModel> tracksTemplates = new List <AbstractTrackTemplateViewModel> { _viewModelFactory.Create <GenericTrackTemplateViewModel>() }; tracksTemplates[0].UseTemplateInCalendarCommand = new RelayCommand(UseTemplateInCalendar); foreach (Track currentTrack in allTracks) { var newViewModel = _viewModelFactory.Create <ExistingTrackTemplateViewModel>(); newViewModel.TrackName = currentTrack.Name; newViewModel.LayoutLengthMeters = currentTrack.LapDistance; newViewModel.UseTemplateInCalendarCommand = new RelayCommand(UseTemplateInCalendar); bool hasMap = _mapsLoader.TryLoadMap(_selectedSimulator, currentTrack.Name, out TrackMapDto trackMapDto); if (hasMap) { newViewModel.TrackGeometryViewModel.FromModel(trackMapDto.TrackGeometry); } tracksTemplates.Add(newViewModel); } _championshipCreationViewModel.CalendarDefinitionViewModel.AvailableTracksViewModel.TrackTemplateViewModels = tracksTemplates; }
private void InitializeViewModel(SessionInfoDto sessionInfo) { _fakeDrivers.Clear(); string formattedTrackName = FormatTrackName(sessionInfo.TrackName, sessionInfo.LayoutName); _mapAvailable = _mapsLoader.TryLoadMap(sessionInfo.Simulator, formattedTrackName, out _lastMap); if (_mapAvailable) { MapViewViewModel.LoadTrack(_lastMap); } }
protected override void ApplyModel(ChampionshipDto model) { Title = model.ChampionshipName; EventsResults = new List <EventResultOverviewViewModel>(); foreach (EventDto eventDto in model.Events) { var eventResultViewModel = _viewModelFactory.Create <EventResultOverviewViewModel>(); eventResultViewModel.FromModel(eventDto); EventsResults.Add(eventResultViewModel); if (_mapsLoader.TryLoadMap(model.SimulatorName, eventDto.TrackName, out TrackMapDto trackMapDto)) { eventResultViewModel.TrackGeometryViewModel.FromModel(trackMapDto.TrackGeometry); } } }