public ViewModel(TrackObjectBase track, TrackMapPreparationRenderer renderer) { Track = track; Renderer = renderer; Renderer.SetFilter(this); Surfaces = SurfaceDescription.LoadAll(Path.Combine(track.DataDirectory, "surfaces.ini")).ToList(); _save = new SaveHelper <SaveableData>(".TrackMapRendererTools:" + track.Id, () => new SaveableData { Filter = Filter, IgnoreCase = FilterIgnoreCase, UseFxaa = UseFxaa, Scale = Scale, Margin = Margin, AiLaneWidth = AiLaneWidth, AiLaneActualWidth = AiLaneActualWidth, }, o => { if (o.Filter == null) { UpdateFilter(Surfaces.Where(x => x.ShouldBeVisibleOnMap())); } else { Filter = o.Filter; } FilterIgnoreCase = o.IgnoreCase; UseFxaa = o.UseFxaa; Scale = o.Scale; Margin = o.Margin; AiLaneWidth = o.AiLaneWidth; AiLaneActualWidth = o.AiLaneActualWidth; }, storage: CacheStorage.Storage); _save.Initialize(); }
public BakedShadowsRendererViewModel([CanBeNull] BaseRenderer renderer, [NotNull] Kn5 kn5, [NotNull] string textureName, [CanBeNull] CarObject car) { _renderer = renderer; _kn5 = kn5; _textureName = textureName; _car = car; _saveable = new SaveHelper <SaveableData>("_carTextureDialog", () => new SaveableData { From = From, To = To, Brightness = Brightness, Gamma = Gamma, Ambient = Ambient, Iterations = Iterations, ShadowBias = ShadowBias, }, o => { From = o.From; To = o.To; Brightness = o.Brightness; Gamma = o.Gamma; Ambient = o.Ambient; Iterations = o.Iterations; ShadowBias = o.ShadowBias; }); _saveable.Initialize(); }
public ViewModel(string serializedPreset, CarObject carObject, string selectedSkinId) { ShowroomsManager.Instance.EnsureLoaded(); PpFiltersManager.Instance.EnsureLoaded(); SelectedCar = carObject; SelectedSkinId = selectedSkinId ?? SelectedCar.SelectedSkin?.Id; _saveable = new SaveHelper<SaveableData>("__CarOpenInShowroom", () => new SaveableData { ShowroomId = SelectedShowroom?.Id, FilterId = SelectedFilter?.Id, CameraFov = CameraFov, DisableSweetFx = DisableSweetFx, DisableWatermark = DisableWatermark, }, o => { if (o.ShowroomId != null) SelectedShowroom = ShowroomsManager.Instance.GetById(o.ShowroomId) ?? SelectedShowroom; if (o.FilterId != null) SelectedFilter = PpFiltersManager.Instance.GetById(o.FilterId) ?? SelectedFilter; CameraFov = o.CameraFov; DisableWatermark = o.DisableWatermark; DisableSweetFx = o.DisableSweetFx; }, () => { SelectedShowroom = ShowroomsManager.Instance.GetDefault(); SelectedFilter = PpFiltersManager.Instance.GetDefault(); CameraFov = 30; DisableWatermark = false; DisableSweetFx = false; }); if (string.IsNullOrEmpty(serializedPreset)) { _saveable.Initialize(); } else { _saveable.Reset(); _saveable.FromSerializedString(serializedPreset); } }
/// <summary> /// /// </summary> /// <param name="saveHelper">If the ISaveHelper is null, the result is a default ISaveHelper instance is assigned. The SaveHelper property can be assigned later, /// or the SaveMethod property (a SaveMethodPointer delegate) can be assigned to the default SaveHelper instance.</param> public SqlConnectionDialog(ISaveHelper saveHelper) { this.SaveHelper = saveHelper; //if (saveHelper != null) _saveHelper = saveHelper; //else _saveHelper = _defaultSaveHelper; // Can simplify code with one line: this.SaveHelper = saveHelper; // as this does the check for null and set default _frmSqlConnectionDialog = new frmSqlConnectionDialog(); }
public ViewModel(string serializedPreset, CarObject carObject, string selectedSkinId) { ShowroomsManager.Instance.EnsureLoaded(); PpFiltersManager.Instance.EnsureLoaded(); SelectedCar = carObject; SelectedSkinId = selectedSkinId ?? SelectedCar.SelectedSkin?.Id; VideoPresets = _helper.CreateGroup(AcSettingsHolder.VideoPresetsCategory, "", "Default"); _saveable = new SaveHelper <SaveableData>("__CarOpenInShowroom", () => new SaveableData { ShowroomId = SelectedShowroom?.Id, FilterId = SelectedFilter?.Id, CameraFov = CameraFov, DisableSweetFx = DisableSweetFx, DisableWatermark = DisableWatermark, VideoPresetFilename = VideoPresetFilename, }, o => { if (o.ShowroomId != null) { SelectedShowroom = ShowroomsManager.Instance.GetById(o.ShowroomId) ?? SelectedShowroom; } if (o.FilterId != null) { SelectedFilter = PpFiltersManager.Instance.GetById(o.FilterId) ?? SelectedFilter; } CameraFov = o.CameraFov; DisableWatermark = o.DisableWatermark; DisableSweetFx = o.DisableSweetFx; VideoPresetFilename = o.VideoPresetFilename; }, () => { SelectedShowroom = ShowroomsManager.Instance.GetDefault(); SelectedFilter = PpFiltersManager.Instance.GetDefault(); CameraFov = 30; DisableWatermark = false; DisableSweetFx = false; VideoPresetFilename = null; }); if (string.IsNullOrEmpty(serializedPreset)) { _saveable.Initialize(); } else { _saveable.Reset(); _saveable.FromSerializedString(serializedPreset); } }
/// <summary> /// Inner constructor. /// </summary> /// <param name="key">ValuesStorage key</param> /// <param name="fixedMode">Prevent saving</param> protected AssistsViewModelBase(string key, bool fixedMode) { Saveable = new SaveHelper <SaveableData>(key ?? DefaultKey, () => fixedMode ? null : new SaveableData { IdealLine = IdealLine, AutoBlip = AutoBlip, StabilityControl = StabilityControl, AutoBrake = AutoBrake, AutoShifter = AutoShifter, SlipSteam = SlipsteamMultipler, AutoClutch = AutoClutch, Abs = Abs, TractionControl = TractionControl, VisualDamage = VisualDamage, Damage = Damage, TyreWear = TyreWearMultipler, FuelConsumption = FuelConsumption, TyreBlankets = TyreBlankets }, o => { IdealLine = o.IdealLine; AutoBlip = o.AutoBlip; StabilityControl = (int)o.StabilityControl; AutoBrake = o.AutoBrake; AutoShifter = o.AutoShifter; SlipsteamMultipler = o.SlipSteam; AutoClutch = o.AutoClutch; Abs = o.Abs; TractionControl = o.TractionControl; VisualDamage = o.VisualDamage; Damage = o.Damage; TyreWearMultipler = o.TyreWear; FuelConsumption = o.FuelConsumption; TyreBlankets = o.TyreBlankets; }, () => { IdealLine = false; AutoBlip = false; StabilityControl = 0; AutoBrake = false; AutoShifter = false; SlipsteamMultipler = 1d; AutoClutch = false; Abs = AssistState.Factory; TractionControl = AssistState.Factory; VisualDamage = true; Damage = 100d; TyreWearMultipler = 1d; FuelConsumption = 1d; TyreBlankets = false; }); }
protected TrackStateViewModelBase(string key, bool fixedMode) { Saveable = new SaveHelper <SaveableData>(key ?? DefaultKey, () => fixedMode ? null : new SaveableData { GripStart = GripStart, GripTransfer = GripTransfer, GripRandomness = GripRandomness, LapGain = LapGain, Description = Description }, o => { GripStart = o.GripStart; GripTransfer = o.GripTransfer; GripRandomness = o.GripRandomness; LapGain = o.LapGain; Description = o.Description; }); }
/// <summary> /// Don’t forget to call it in overrided versions. /// </summary> protected void Initialize(bool reset) { // ReSharper disable once VirtualMemberCallInConstructor _saveable = CreateSaveable(); if (reset) { _saveable.Reset(); } else { _saveable.Initialize(); } UpdateColors(); SyncAll(); Renderer.PropertyChanged += OnRendererPropertyChanged; }
public AmbientShadowParams() { if (ValuesStorage.Contains(KeyOldSavedData) && !ValuesStorage.Contains(KeySavedData)) { ValuesStorage.Set(KeySavedData, ValuesStorage.Get <string>(KeyOldSavedData)); } _saveable = new SaveHelper <SaveableData>(KeySavedData, () => new SaveableData { AmbientShadowDiffusion = Diffusion, AmbientShadowBrightness = Brightness, AmbientShadowIterations = Iterations, AmbientShadowHideWheels = HideWheels, AmbientShadowFade = Fade, AmbientShadowCorrectLighting = CorrectLighting, AmbientShadowPoissonSampling = PoissonSampling, AmbientShadowExtraBlur = ExtraBlur, AmbientShadowUpDelta = UpDelta, AmbientShadowBodyMultiplier = BodyMultiplier, AmbientShadowWheelMultiplier = WheelMultiplier, }, Load); _saveable.Initialize(); }
public ViewModel([NotNull] DarkKn5ObjectRenderer renderer, [NotNull] CarObject carObject, string skinId) { if (renderer == null) { throw new ArgumentNullException(nameof(renderer)); } Renderer = renderer; Settings = new CmPreviewsSettings(renderer); renderer.PropertyChanged += Renderer_PropertyChanged; Renderer_CarNodeUpdated(); renderer.Tick += Renderer_Tick; Car = carObject; Skin = skinId == null ? Car.SelectedSkin : Car.GetSkinById(skinId); Car.SkinsManager.EnsureLoadedAsync().Forget(); Saveable = new SaveHelper <SaveableData>("__CmPreviewsTools", () => new SaveableData(), o => { }, () => { Reset(false); }); }
public ViewModel(TrackObjectBase track, TrackOutlineRenderer renderer) { Track = track; Renderer = renderer; var layouts = track.MainTrackObject.MultiLayouts?.ApartFrom(track).ToList(); Layouts = layouts?.Count < 1 ? null : layouts; Renderer.SetActiveMaps(new string[0]); _perLayoutSave = new SaveHelper <PerLayoutSaveable>(".TrackOutlineRendererTools:l:" + track.IdWithLayout, () => new PerLayoutSaveable { ExtraLayoutIds = ExtraLayoutIds, }, Load, storage: CacheStorage.Storage); _perTrackSave = new SaveHelper <PerTrackSaveable>(".TrackOutlineRendererTools:" + track.Id, () => new PerTrackSaveable { Rotation = Renderer.Rotation, Scale = Renderer.Scale, OffsetX = Renderer.OffsetX, OffsetY = Renderer.OffsetY, ExtraWidth = Renderer.ExtraWidth, UseAiLanes = Renderer.UseAiLanes, }, Load, storage: CacheStorage.Storage); _globalSaveable = new SaveHelper <GlobalSaveable>(".TrackOutlineRendererTools", () => new GlobalSaveable { ShadowOpacity = Renderer.ShadowOpacity, ShadowDistance = Renderer.ShadowDistance, DimmedOpacity = Renderer.DimmedOpacity, DimmedWidthMultipler = Renderer.DimmedWidthMultipler, }, Load, storage: ValuesStorage.Storage); _perLayoutSave.Initialize(); _perTrackSave.Initialize(); _globalSaveable.Initialize(); Renderer.PropertyChanged += OnRendererPropertyChanged; }
public ViewModel([NotNull] ToolsKn5ObjectRenderer renderer, CarObject carObject, string skinId) { if (renderer == null) { throw new ArgumentNullException(nameof(renderer)); } Renderer = renderer; renderer.PropertyChanged += Renderer_PropertyChanged; Renderer_CarNodeUpdated(); renderer.Tick += Renderer_Tick; Car = carObject; Skin = skinId == null ? Car.SelectedSkin : Car.GetSkinById(skinId); Car.SkinsManager.EnsureLoadedAsync().Forget(); Saveable = new SaveHelper <SaveableData>("__LiteShowroomTools", () => new SaveableData { AmbientShadowDiffusion = AmbientShadowDiffusion, AmbientShadowBrightness = AmbientShadowBrightness, AmbientShadowIterations = AmbientShadowIterations, AmbientShadowHideWheels = AmbientShadowHideWheels, AmbientShadowFade = AmbientShadowFade, LiveReload = renderer.MagickOverride, }, o => { AmbientShadowDiffusion = o.AmbientShadowDiffusion; AmbientShadowBrightness = o.AmbientShadowBrightness; AmbientShadowIterations = o.AmbientShadowIterations; AmbientShadowHideWheels = o.AmbientShadowHideWheels; AmbientShadowFade = o.AmbientShadowFade ?? true; renderer.MagickOverride = o.LiveReload; }, () => { Reset(false); }); Saveable.Initialize(); }
public ViewModel([CanBeNull] string serializedPreset, ServerPresetObject server) { Server = server; _saveable = new SaveHelper <SaveableData>("__PackServer", () => new SaveableData { Mode = Mode, IncludeExecutable = IncludeExecutable, PackIntoSingle = PackIntoSingle, }, o => { Mode = o.Mode; IncludeExecutable = o.IncludeExecutable; PackIntoSingle = o.PackIntoSingle; }); if (string.IsNullOrEmpty(serializedPreset)) { _saveable.Initialize(); } else { _saveable.Reset(); _saveable.FromSerializedString(serializedPreset); } }
public TrainingViewModel() { (_saveable = new SaveHelper <Data>("CreateTyres.TrainingParams", () => new Data { Layers = Layers, SeparateNetworks = SeparateNetworks, TrainingRuns = TrainingRuns, AverageAmount = AverageAmount, LearningMomentum = LearningMomentum, LearningRate = LearningRate, HighPrecision = HighPrecision, RandomBounds = RandomBounds, FannAlgorithm = (FannTrainingAlgorithm?)FannAlgorithm.IntValue ?? DefaultFannAlgorithm, }, o => { Layers = o.Layers; SeparateNetworks = o.SeparateNetworks; TrainingRuns = o.TrainingRuns; AverageAmount = o.AverageAmount; LearningMomentum = o.LearningMomentum; LearningRate = o.LearningRate; HighPrecision = o.HighPrecision; RandomBounds = o.RandomBounds; FannAlgorithm = FannAlgorithms.GetByIdOrDefault((int?)o.FannAlgorithm) ?? FannAlgorithms.GetById((int?)DefaultFannAlgorithm); })).Initialize(); }
internal ViewModel(string serializedPreset, bool uiMode, CarObject carObject = null, string carSkinId = null, TrackObjectBase trackObject = null, string carSetupId = null, string weatherId = null, int? time = null, bool savePreset = false) { _uiMode = uiMode; _carSetupId = carSetupId; _weatherId = weatherId; _forceTime = time; _saveable = new SaveHelper<SaveableData>(KeySaveable, () => new SaveableData { RealConditions = RealConditions, RealConditionsLocalWeather = RealConditionsLocalWeather, RealConditionsTimezones = RealConditionsTimezones, RealConditionsManualTime = RealConditionsManualTime, Mode = SelectedMode, ModeData = SelectedModeViewModel?.ToSerializedString(), CarId = SelectedCar?.Id, TrackId = SelectedTrack?.IdWithLayout, WeatherId = SelectedWeather?.Id, TrackPropertiesPreset = SelectedTrackPropertiesPreset.Name, Temperature = Temperature, Time = Time, TimeMultipler = TimeMultipler, }, o => { TimeMultipler = o.TimeMultipler; RealConditions = _weatherId == null && o.RealConditions; RealConditionsTimezones = o.RealConditionsTimezones ?? true; RealConditionsLocalWeather = o.RealConditionsLocalWeather ?? false; RealConditionsManualTime = o.RealConditionsManualTime ?? false; Temperature = o.Temperature; Time = o.Time; if (RealConditions) { UpdateConditions(); } try { _skipLoading = o.ModeData != null; if (o.Mode != null && o.Mode.OriginalString.Contains('_')) SelectedMode = o.Mode; if (o.ModeData != null) SelectedModeViewModel?.FromSerializedString(o.ModeData); } finally { _skipLoading = false; } if (o.CarId != null) SelectedCar = CarsManager.Instance.GetById(o.CarId) ?? SelectedCar; if (o.TrackId != null) SelectedTrack = TracksManager.Instance.GetLayoutById(o.TrackId) ?? SelectedTrack; if (_weatherId != null) { SelectedWeather = WeatherManager.Instance.GetById(_weatherId); } else if (o.WeatherId != null) { SelectedWeather = WeatherManager.Instance.GetById(o.WeatherId) ?? SelectedWeather; } if (o.TrackPropertiesPreset != null) { SelectedTrackPropertiesPreset = Game.DefaultTrackPropertiesPresets.FirstOrDefault(x => x.Name == o.TrackPropertiesPreset) ?? SelectedTrackPropertiesPreset; } }, () => { RealConditions = false; RealConditionsTimezones = true; RealConditionsManualTime = false; RealConditionsLocalWeather = false; SelectedMode = new Uri("/Pages/Drive/QuickDrive_Race.xaml", UriKind.Relative); SelectedCar = CarsManager.Instance.GetDefault(); SelectedTrack = TracksManager.Instance.GetDefault(); SelectedWeather = WeatherManager.Instance.GetDefault(); SelectedTrackPropertiesPreset = Game.GetDefaultTrackPropertiesPreset(); Temperature = 12.0; Time = 12 * 60 * 60; TimeMultipler = 1; }); if (string.IsNullOrEmpty(serializedPreset)) { _saveable.LoadOrReset(); } else { _saveable.Reset(); if (savePreset) { _saveable.FromSerializedString(serializedPreset); } else { _saveable.FromSerializedStringWithoutSaving(serializedPreset); } } if (carObject != null) { SelectedCar = carObject; // TODO: skin? } if (trackObject != null) { SelectedTrack = trackObject; } UpdateConditions(); }
internal ViewModel(string serializedPreset, bool uiMode, CarObject carObject = null, string carSkinId = null, TrackObjectBase trackObject = null, string carSetupId = null, string weatherId = null, int?time = null, bool savePreset = false) { _uiMode = uiMode; _carSetupId = carSetupId; _weatherId = weatherId; _forceTime = time; _saveable = new SaveHelper <SaveableData>(KeySaveable, () => new SaveableData { RealConditions = RealConditions, RealConditionsLocalWeather = RealConditionsLocalWeather, RealConditionsTimezones = RealConditionsTimezones, RealConditionsManualTime = RealConditionsManualTime, Mode = SelectedMode, ModeData = SelectedModeViewModel?.ToSerializedString(), CarId = SelectedCar?.Id, TrackId = SelectedTrack?.IdWithLayout, WeatherId = SelectedWeather?.Id, // TODO TrackPropertiesData = TrackState.ExportToPresetData(), TrackPropertiesPresetFilename = UserPresetsControl.GetCurrentFilename(TrackState.PresetableKey), Temperature = Temperature, Time = Time, TimeMultipler = TimeMultipler, }, o => { TimeMultipler = o.TimeMultipler; RealConditions = _weatherId == null && o.RealConditions; RealConditionsTimezones = o.RealConditionsTimezones ?? true; RealConditionsLocalWeather = o.RealConditionsLocalWeather ?? false; RealConditionsManualTime = o.RealConditionsManualTime ?? false; Temperature = o.Temperature; Time = o.Time; if (RealConditions) { UpdateConditions(); } try { _skipLoading = o.ModeData != null; if (o.Mode != null && o.Mode.OriginalString.Contains('_')) { SelectedMode = o.Mode; } if (o.ModeData != null) { SelectedModeViewModel?.FromSerializedString(o.ModeData); } } finally { _skipLoading = false; } if (o.CarId != null) { SelectedCar = CarsManager.Instance.GetById(o.CarId) ?? SelectedCar; } if (o.TrackId != null) { SelectedTrack = TracksManager.Instance.GetLayoutById(o.TrackId) ?? SelectedTrack; } if (_weatherId != null) { SelectedWeather = WeatherManager.Instance.GetById(_weatherId); } else if (o.WeatherId != null) { SelectedWeather = WeatherManager.Instance.GetById(o.WeatherId) ?? SelectedWeather; } if (o.TrackPropertiesPresetFilename != null && File.Exists(o.TrackPropertiesPresetFilename)) { UserPresetsControl.LoadPreset(TrackState.PresetableKey, o.TrackPropertiesPresetFilename); } else if (o.TrackPropertiesData != null) { UserPresetsControl.LoadSerializedPreset(TrackState.PresetableKey, o.TrackPropertiesData); } else if (o.ObsTrackPropertiesPreset != null) { UserPresetsControl.LoadBuiltInPreset(TrackState.PresetableKey, TrackStateViewModelBase.PresetableCategory, o.ObsTrackPropertiesPreset); } }, () => { RealConditions = false; RealConditionsTimezones = true; RealConditionsManualTime = false; RealConditionsLocalWeather = false; SelectedMode = new Uri("/Pages/Drive/QuickDrive_Race.xaml", UriKind.Relative); SelectedCar = CarsManager.Instance.GetDefault(); SelectedTrack = TracksManager.Instance.GetDefault(); SelectedWeather = WeatherManager.Instance.GetDefault(); UserPresetsControl.LoadBuiltInPreset(TrackState.PresetableKey, TrackStateViewModelBase.PresetableCategory, "Green"); Temperature = 12.0; Time = 12 * 60 * 60; TimeMultipler = 1; }); if (string.IsNullOrEmpty(serializedPreset)) { _saveable.LoadOrReset(); } else { _saveable.Reset(); if (savePreset) { _saveable.FromSerializedString(serializedPreset); } else { _saveable.FromSerializedStringWithoutSaving(serializedPreset); } } if (carObject != null) { SelectedCar = carObject; // TODO: skin? } if (trackObject != null) { SelectedTrack = trackObject; } UpdateConditions(); }
public ExampleCarsViewModel(List <CarWithTyres> cars) { CommonTyresList = new BetterObservableCollection <CommonTyres>(); CarsList = cars; UpdateListFilterLater(); UpdateSummary(); CarsView = new BetterListCollectionView(CarsList) { Filter = o => _listFilterInstance?.Test(((CarWithTyres)o).Car) ?? true }; TestKeys = new BetterObservableCollection <SettingEntry>(); TestKeysView = new BetterListCollectionView(TestKeys) { GroupDescriptions = { new PropertyGroupDescription(nameof(SettingEntry.Tag)) }, CustomSort = KeyComparer.Instance }; (_saveable = new SaveHelper <Data>("CreateTyres.ExampleCars", () => new Data { Checked = CarsList.ToDictionary(x => x.Car.Id, x => Tuple.Create(x.IsChecked, x.Tyres.Where(y => y.IsChecked).Select(y => y.Entry.DisplayName).ToArray())), Filter = CarsFilter, TyresName = TyresName, TyresShortName = TyresShortName, }, o => { for (var i = CarsList.Count - 1; i >= 0; i--) { var c = CarsList[i]; var e = o.Checked?.GetValueOrDefault(c.Car.Id); c.IsChecked = o.Checked == null ? c.Car.Author == AcCommonObject.AuthorKunos : e?.Item1 == true; for (var j = c.Tyres.Count - 1; j >= 0; j--) { var tyre = c.Tyres[j]; tyre.IsChecked = e?.Item2.ArrayContains(tyre.Entry.DisplayName) == true; } } CarsFilter = o.Filter; TyresName = o.TyresName; TyresShortName = o.TyresShortName; })).Initialize(); UpdateListFilter(); CarsList.ForEach(x => { x.PropertyChanged += (sender, args) => { if (args.PropertyName == nameof(CarWithTyres.IsChecked)) { UpdateSummary(); } }; x.Tyres.ForEach(y => { y.PropertyChanged += (sender, args) => { if (args.PropertyName == nameof(CarTyres.IsChecked)) { UpdateSummary(); } }; }); }); }
public CarUpdatePreviewsDialog([NotNull] IReadOnlyList <ToUpdatePreview> toUpdate, UpdatePreviewMode mode, string loadPreset = null, bool applyImmediately = false) { if (toUpdate == null) { throw new ArgumentNullException(nameof(toUpdate)); } if (toUpdate.Count == 0) { throw new ArgumentException("Value cannot be an empty collection.", nameof(toUpdate)); } ApplyImmediately = applyImmediately; _toUpdate = toUpdate; _mode = mode; _loadPreset = loadPreset; _saveable = new SaveHelper <SaveableData>("__AutoUpdatePreviews", () => IsVisible ? new SaveableData { ShowroomId = SelectedShowroom?.Id, FilterId = SelectedFilter?.Id, CameraPosition = CameraPosition, CameraLookAt = CameraLookAt, CameraFov = CameraFov, CameraExposure = CameraExposure, DisableSweetFx = DisableSweetFx, DisableWatermark = DisableWatermark, ResizePreviews = ResizePreviews, MaximizeVideoSettings = MaximizeVideoSettings, EnableFxaa = EnableFxaa, UseSpecialResolution = UseSpecialResolution } : null, o => { if (o.ShowroomId != null) { var showroom = ShowroomsManager.Instance.GetById(o.ShowroomId); SelectedShowroom = showroom ?? SelectedShowroom; if (showroom == null) { switch (o.ShowroomId) { case "at_studio_black": ShowroomMessageInstance("Studio Black Showroom (AT Previews Special)", "at_studio_black", "http://www.racedepartment.com/downloads/studio-black-showroom.4353/"); break; case "at_previews": ShowroomMessageInstance("Kunos Previews Showroom (AT Previews Special)", "at_previews", "http://www.assettocorsa.net/assetto-corsa-v1-5-dev-diary-part-33/"); break; } } } if (o.FilterId != null) { SelectedFilter = Filters.GetByIdOrDefault(o.FilterId) ?? SelectedFilter; } else { SelectedFilter = DefaultPpFilter; } CameraPosition = o.CameraPosition; CameraLookAt = o.CameraLookAt; CameraFov = o.CameraFov; CameraExposure = o.CameraExposure == 0 ? null : o.CameraExposure; DisableWatermark = o.DisableWatermark; DisableSweetFx = o.DisableSweetFx; ResizePreviews = o.ResizePreviews; MaximizeVideoSettings = o.MaximizeVideoSettings; EnableFxaa = o.EnableFxaa; UseSpecialResolution = o.UseSpecialResolution; }, () => { SelectedShowroom = null; SelectedFilter = (IWithId)PpFiltersManager.Instance.GetDefault() ?? DefaultPpFilter; CameraPosition = @"-3.867643, 1.423590, 4.70381"; CameraLookAt = @"0.0, 0.7, 0.5"; CameraFov = 30; CameraExposure = 94.5; DisableWatermark = true; DisableSweetFx = true; ResizePreviews = true; MaximizeVideoSettings = true; EnableFxaa = true; UseSpecialResolution = true; }); InitializeComponent(); DataContext = this; }
public RaceGridViewModel(bool ignoreStartingPosition = false) { IgnoreStartingPosition = ignoreStartingPosition; _saveable = new SaveHelper<SaveableData>(KeySaveable, () => { var data = new SaveableData { ModeId = Mode.Id, FilterValue = FilterValue, ShuffleCandidates = ShuffleCandidates, AiLevelFixed = AiLevelFixed, AiLevelArrangeRandom = AiLevelArrangeRandom, AiLevelArrangeReverse = AiLevelArrangeReverse, AiLevel = AiLevel, AiLevelMin = AiLevelMin, OpponentsNumber = OpponentsNumber, StartingPosition = StartingPosition, }; if (Mode == BuiltInGridMode.CandidatesManual) { var priority = false; data.CarIds = NonfilteredList.Select(x => { if (x.CandidatePriority != 1) priority = true; return x.Car.Id; }).ToArray(); if (priority) { data.CandidatePriorities = NonfilteredList.Select(x => x.CandidatePriority).ToArray(); } } else if (Mode == BuiltInGridMode.Custom) { data.CarIds = NonfilteredList.Where(x => !x.SpecialEntry).Select(x => x.Car.Id).ToArray(); } if (data.CarIds != null) { var filtered = NonfilteredList.Where(x => !x.SpecialEntry).ToList(); if (filtered.Any(x => x.AiLevel.HasValue)) { data.AiLevels = filtered.Select(x => x.AiLevel ?? -1).ToArray(); } if (filtered.Any(x => x.Name != null)) { data.Names = filtered.Select(x => x.Name).ToArray(); } if (filtered.Any(x => x.Nationality != null)) { data.Nationalities = filtered.Select(x => x.Nationality).ToArray(); } if (filtered.Any(x => x.CarSkin != null)) { data.SkinIds = filtered.Select(x => x.CarSkin?.Id).ToArray(); } } return data; }, data => { ShuffleCandidates = data.ShuffleCandidates ?? true; AiLevelFixed = data.AiLevelFixed ?? false; AiLevelArrangeRandom = data.AiLevelArrangeRandomly.HasValue ? (data.AiLevelArrangeRandomly.Value ? 1d : 0d) : data.AiLevelArrangeRandom ?? 0.1d; AiLevelArrangeReverse = data.AiLevelArrangeReverse ?? false; AiLevel = data.AiLevel ?? 95; AiLevelMin = data.AiLevelMin ?? 85; FilterValue = data.FilterValue; ErrorMessage = null; var mode = Modes.GetByIdOrDefault<IRaceGridMode>(data.ModeId); if (mode == null) { NonfatalError.NotifyBackground(ToolsStrings.RaceGrid_GridModeIsMissing, string.Format(ToolsStrings.RaceGrid_GridModeIsMissing_Commentary, data.ModeId)); Mode = BuiltInGridMode.SameCar; } else { Mode = mode; } if (Mode.CandidatesMode) { if (Mode == BuiltInGridMode.CandidatesManual && data.CarIds != null) { // TODO: Async? NonfilteredList.ReplaceEverythingBy(data.CarIds.Select(x => CarsManager.Instance.GetById(x)).Select((x, i) => { if (x == null) return null; var aiLevel = data.AiLevels?.ElementAtOrDefault(i); var carSkinId = data.SkinIds?.ElementAtOrDefault(i); return new RaceGridEntry(x) { CandidatePriority = data.CandidatePriorities?.ElementAtOr(i, 1) ?? 1, AiLevel = aiLevel >= 0 ? aiLevel : (int?)null, Name = data.Names?.ElementAtOrDefault(i), Nationality = data.Nationalities?.ElementAtOrDefault(i), CarSkin = carSkinId != null ? x.GetSkinById(carSkinId) : null, }; }).NonNull()); } else { NonfilteredList.Clear(); } SetOpponentsNumberInternal(data.OpponentsNumber ?? 7); } else { NonfilteredList.ReplaceEverythingBy(data.CarIds?.Select(x => CarsManager.Instance.GetById(x)).Select((x, i) => { if (x == null) return null; var aiLevel = data.AiLevels?.ElementAtOrDefault(i); var carSkinId = data.SkinIds?.ElementAtOrDefault(i); return new RaceGridEntry(x) { AiLevel = aiLevel >= 0 ? aiLevel : null, Name = data.Names?.ElementAtOrDefault(i), Nationality = data.Nationalities?.ElementAtOrDefault(i), CarSkin = carSkinId != null ? x.GetSkinById(carSkinId) : null, }; }).NonNull() ?? new RaceGridEntry[0]); } StartingPosition = data.StartingPosition ?? 7; FinishLoading(); }, Reset); _presetsHelper = new PresetsMenuHelper(); _randomGroup = new HierarchicalGroup(ToolsStrings.RaceGrid_Random); UpdateRandomModes(); Modes = new HierarchicalGroup { BuiltInGridMode.SameCar, _randomGroup, BuiltInGridMode.Custom, _presetsHelper.Create(PresetableKeyValue, p => { ImportFromPresetData(p.ReadData()); }, ControlsStrings.Common_Presets) }; NonfilteredList.CollectionChanged += OnCollectionChanged; FilteredView = new BetterListCollectionView(NonfilteredList) { CustomSort = this }; // _saveable.Initialize(); FilesStorage.Instance.Watcher(ContentCategory.GridTypes).Update += OnGridTypesUpdate; }
/// <summary> /// /// </summary> /// <param name="saveHelper">If the ISaveHelper is null, the result is a default ISaveHelper instance is assigned. The SaveHelper property can be assigned later, /// or the SaveMethod property (a SaveMethodPointer delegate) can be assigned to the default SaveHelper instance.</param> /// <param name="connectionString">Specify the current connection string the ConnectionUI will help modify</param> /// <param name="title">Specify the text title for the display form</param> public SqlConnectionDialog(ISaveHelper saveHelper, string connectionString, string title) : this(saveHelper, connectionString) { _frmSqlConnectionDialog.Text = title; }
/// <summary> /// /// </summary> /// <param name="saveHelper">If the ISaveHelper is null, the result is a default ISaveHelper instance is assigned. The SaveHelper property can be assigned later, /// or the SaveMethod property (a SaveMethodPointer delegate) can be assigned to the default SaveHelper instance.</param> /// <param name="connectionString">Specify the current connection string the ConnectionUI will help modify</param> public SqlConnectionDialog(ISaveHelper saveHelper, String connectionString) : this(saveHelper) { _frmSqlConnectionDialog.ConnectionString = connectionString; }
public ViewModel([NotNull] ToolsKn5ObjectRenderer renderer, CarObject carObject, string skinId) { if (renderer == null) throw new ArgumentNullException(nameof(renderer)); Renderer = renderer; renderer.PropertyChanged += Renderer_PropertyChanged; renderer.Tick += Renderer_Tick; Car = carObject; Skin = skinId == null ? Car.SelectedSkin : Car.GetSkinById(skinId); Car.SkinsManager.EnsureLoadedAsync().Forget(); Saveable = new SaveHelper<SaveableData>("__LiteShowroomTools", () => new SaveableData { AmbientShadowDiffusion = AmbientShadowDiffusion, AmbientShadowBrightness = AmbientShadowBrightness, AmbientShadowIterations = AmbientShadowIterations, AmbientShadowHideWheels = AmbientShadowHideWheels, AmbientShadowFade = AmbientShadowFade, LiveReload = Renderer.LiveReload, }, o => { AmbientShadowDiffusion = o.AmbientShadowDiffusion; AmbientShadowBrightness = o.AmbientShadowBrightness; AmbientShadowIterations = o.AmbientShadowIterations; AmbientShadowHideWheels = o.AmbientShadowHideWheels; AmbientShadowFade = o.AmbientShadowFade ?? true; Renderer.LiveReload = o.LiveReload; }, () => { Reset(false); }); Saveable.Initialize(); }
/// <summary> /// Inner constructor. /// </summary> /// <param name="key">ValuesStorage key</param> /// <param name="fixedMode">Prevent saving</param> protected BaseAssistsViewModel(string key, bool fixedMode) { Saveable = new SaveHelper<SaveableData>(key ?? DefaultKey, () => fixedMode ? null : new SaveableData { IdealLine = IdealLine, AutoBlip = AutoBlip, StabilityControl = StabilityControl, AutoBrake = AutoBrake, AutoShifter = AutoShifter, SlipSteam = SlipsteamMultipler, AutoClutch = AutoClutch, Abs = Abs, TractionControl = TractionControl, VisualDamage = VisualDamage, Damage = Damage, TyreWear = TyreWearMultipler, FuelConsumption = FuelConsumption, TyreBlankets = TyreBlankets }, o => { IdealLine = o.IdealLine; AutoBlip = o.AutoBlip; StabilityControl = (int)o.StabilityControl; AutoBrake = o.AutoBrake; AutoShifter = o.AutoShifter; SlipsteamMultipler = o.SlipSteam; AutoClutch = o.AutoClutch; Abs = o.Abs; TractionControl = o.TractionControl; VisualDamage = o.VisualDamage; Damage = o.Damage; TyreWearMultipler = o.TyreWear; FuelConsumption = o.FuelConsumption; TyreBlankets = o.TyreBlankets; }, () => { IdealLine = false; AutoBlip = false; StabilityControl = 0; AutoBrake = false; AutoShifter = false; SlipsteamMultipler = 1d; AutoClutch = false; Abs = AssistState.Factory; TractionControl = AssistState.Factory; VisualDamage = true; Damage = 100d; TyreWearMultipler = 1d; FuelConsumption = 1d; TyreBlankets = false; }); }
public RaceGridViewModel(bool ignoreStartingPosition = false, [CanBeNull] string keySaveable = KeySaveable) { IgnoreStartingPosition = ignoreStartingPosition; _saveable = new SaveHelper <SaveableData>(keySaveable, () => { var data = new SaveableData { ModeId = Mode.Id, FilterValue = FilterValue, ShuffleCandidates = ShuffleCandidates, AiLevelFixed = AiLevelFixed, AiLevelArrangeRandom = AiLevelArrangeRandom, AiLevelArrangeReverse = AiLevelArrangeReverse, AiLevel = AiLevel, AiLevelMin = AiLevelMin, OpponentsNumber = OpponentsNumber, StartingPosition = StartingPosition, }; if (Mode == BuiltInGridMode.CandidatesManual) { var priority = false; data.CarIds = NonfilteredList.Select(x => { if (x.CandidatePriority != 1) { priority = true; } return(x.Car.Id); }).ToArray(); if (priority) { data.CandidatePriorities = NonfilteredList.Select(x => x.CandidatePriority).ToArray(); } } else if (Mode == BuiltInGridMode.Custom) { data.CarIds = NonfilteredList.Where(x => !x.SpecialEntry).Select(x => x.Car.Id).ToArray(); } if (data.CarIds != null) { var filtered = NonfilteredList.Where(x => !x.SpecialEntry).ToList(); if (filtered.Any(x => x.AiLevel.HasValue)) { data.AiLevels = filtered.Select(x => x.AiLevel ?? -1).ToArray(); } if (filtered.Any(x => x.Name != null)) { data.Names = filtered.Select(x => x.Name).ToArray(); } if (filtered.Any(x => x.Nationality != null)) { data.Nationalities = filtered.Select(x => x.Nationality).ToArray(); } if (filtered.Any(x => x.CarSkin != null)) { data.SkinIds = filtered.Select(x => x.CarSkin?.Id).ToArray(); } } return(data); }, data => { ShuffleCandidates = data.ShuffleCandidates ?? true; AiLevelFixed = data.AiLevelFixed ?? false; AiLevelArrangeRandom = data.AiLevelArrangeRandomly.HasValue ? (data.AiLevelArrangeRandomly.Value ? 1d : 0d) : data.AiLevelArrangeRandom ?? 0.1d; AiLevelArrangeReverse = data.AiLevelArrangeReverse ?? false; AiLevel = data.AiLevel ?? 95; AiLevelMin = data.AiLevelMin ?? 85; FilterValue = data.FilterValue; ErrorMessage = null; var mode = Modes.GetByIdOrDefault <IRaceGridMode>(data.ModeId); if (mode == null) { NonfatalError.NotifyBackground(ToolsStrings.RaceGrid_GridModeIsMissing, string.Format(ToolsStrings.RaceGrid_GridModeIsMissing_Commentary, data.ModeId)); Mode = BuiltInGridMode.SameCar; } else { Mode = mode; } if (Mode.CandidatesMode) { if (Mode == BuiltInGridMode.CandidatesManual && data.CarIds != null) { // TODO: Async? NonfilteredList.ReplaceEverythingBy(data.CarIds.Select(x => CarsManager.Instance.GetById(x)).Select((x, i) => { if (x == null) { return(null); } var aiLevel = data.AiLevels?.ElementAtOrDefault(i); var carSkinId = data.SkinIds?.ElementAtOrDefault(i); return(new RaceGridEntry(x) { CandidatePriority = data.CandidatePriorities?.ElementAtOr(i, 1) ?? 1, AiLevel = aiLevel >= 0 ? aiLevel : (int?)null, Name = data.Names?.ElementAtOrDefault(i), Nationality = data.Nationalities?.ElementAtOrDefault(i), CarSkin = carSkinId != null ? x.GetSkinById(carSkinId) : null, }); }).NonNull()); } else { NonfilteredList.Clear(); } SetOpponentsNumberInternal(data.OpponentsNumber ?? 7); } else { NonfilteredList.ReplaceEverythingBy(data.CarIds?.Select(x => CarsManager.Instance.GetById(x)).Select((x, i) => { if (x == null) { return(null); } var aiLevel = data.AiLevels?.ElementAtOrDefault(i); var carSkinId = data.SkinIds?.ElementAtOrDefault(i); return(new RaceGridEntry(x) { AiLevel = aiLevel >= 0 ? aiLevel : null, Name = data.Names?.ElementAtOrDefault(i), Nationality = data.Nationalities?.ElementAtOrDefault(i), CarSkin = carSkinId != null ? x.GetSkinById(carSkinId) : null, }); }).NonNull() ?? new RaceGridEntry[0]); } StartingPosition = data.StartingPosition ?? 7; FinishLoading(); }, Reset); _presetsHelper = new PresetsMenuHelper(); _randomGroup = new HierarchicalGroup(ToolsStrings.RaceGrid_Random); UpdateRandomModes(); Modes = new HierarchicalGroup { BuiltInGridMode.SameCar, _randomGroup, BuiltInGridMode.Custom, _presetsHelper.Create(PresetableKeyValue, p => { ImportFromPresetData(p.ReadData()); }, ControlsStrings.Common_Presets) }; NonfilteredList.CollectionChanged += OnCollectionChanged; NonfilteredList.ItemPropertyChanged += OnItemPropertyChanged; FilteredView = new BetterListCollectionView(NonfilteredList) { CustomSort = this }; // _saveable.Initialize(); FilesStorage.Instance.Watcher(ContentCategory.GridTypes).Update += OnGridTypesUpdate; }