예제 #1
0
 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));
     }));
 }
예제 #2
0
        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());
        }