Beispiel #1
0
            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();
            }
Beispiel #2
0
        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);
                }
            }
Beispiel #4
0
 /// <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();
 }
Beispiel #5
0
            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);
                }
            }
Beispiel #6
0
 /// <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;
        }
Beispiel #9
0
        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();
        }
Beispiel #10
0
            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;
            }
Beispiel #12
0
            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();
            }
Beispiel #13
0
            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);
                }
            }
Beispiel #14
0
 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();
 }
Beispiel #15
0
            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();
            }
Beispiel #16
0
            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();
                            }
                        };
                    });
                });
            }
Beispiel #18
0
        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;
        }
Beispiel #19
0
        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;
        }
Beispiel #20
0
 /// <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;
 }
Beispiel #21
0
 /// <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();
            }
Beispiel #23
0
 /// <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;
     });
 }
Beispiel #24
0
        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;
        }