private static void OnUpdate(object sender, EventArgs eventArgs) { _list?.ReplaceEverythingBy_Direct( FilesStorage.Instance.GetContentFiles(ContentCategory.NeuralTyresMachines).TryToSelect(x => { return(_list.FirstOrDefault(y => y._filename == x.Filename && y._lastWriteTime == x.LastWriteTime) ?? CreateTyresMachineInfo(x)); })); }
private void UpdateSlots() { var newList = Renderer.CarSlots.Select(x => Slots.FirstOrDefault(y => ReferenceEquals(y.Slot, x)) ?? new CarSlotWrapped(x)); _listBusy.Do(() => Slots.ReplaceIfDifferBy(newList)); foreach (var slot in Slots) { slot.MainCar = ReferenceEquals(Renderer.MainSlot, slot.Slot); } }
protected override async Task <bool> LoadOverride(IProgress <AsyncProgressEntry> progress, CancellationToken cancellation) { await CarsManager.Instance.EnsureLoadedAsync(); Entries = new ChangeableObservableCollection <CarObjectEntry>( CarsManager.Instance.EnabledOnly.OrderBy(x => x.DisplayName).Select(x => new CarObjectEntry(x))); for (var i = 0; i < Entries.Count; i++) { var entry = Entries[i]; progress.Report(new AsyncProgressEntry($"Loading skins ({entry.Car.DisplayName})…", i, Entries.Count)); await entry.Car.SkinsManager.EnsureLoadedAsync(); entry.SelectedSkins = entry.Car.EnabledOnlySkins.Where(x => x.HasError(AcErrorType.CarSkin_PreviewIsMissing)).ToList(); } Entries.ItemPropertyChanged += OnEntryPropertyChanged; SelectedEntry = Entries.FirstOrDefault(); UpdateTotalSelected(); return(Entries.Any()); }