Пример #1
0
        public ModsViewModel(IScreen screen, DowModLoader?dowModService = null) : base(screen, "mods")
        {
            this.logger        = this.Log();
            this.dowModService = dowModService ?? Locator.Current.GetService <DowModLoader>();

            var whenNotLoading = this.WhenAnyValue(x => x.Loading).Select(loading => !loading).DistinctUntilChanged();

            var whenItemSelected = this.WhenAnyValue(x => x.SelectedBaseItem, x => x.SelectedModItem,
                                                     (baseItem, modItem) => baseItem != null || modItem != null).DistinctUntilChanged();

            var canLoadSpecific = whenNotLoading.CombineLatest(whenItemSelected, (notLoading, itemSelected) => notLoading && itemSelected).DistinctUntilChanged();

            ReloadMods = ReactiveCommand.CreateFromTask(LoadAllMods, whenNotLoading);

            RefreshMods = ReactiveCommand.CreateFromTask(GetModsAsync);
            RefreshMods.ThrownExceptions.Subscribe(exception => logger.Error(exception));
            RefreshMods.Execute().Subscribe();

            RefreshMods.Select(mods => mods.Where(x => !x.Module.File.IsVanilla))
            .Subscribe(mods =>
            {
                ModItems.Clear();
                ModItems.AddRange(mods);
            });

            RefreshMods.Select(mods => mods.Where(x => x.Module.File.IsVanilla))
            .Subscribe(mods =>
            {
                BaseGameItems.Clear();
                BaseGameItems.AddRange(mods);
            });
        }
Пример #2
0
        public MatchupViewModel(IScreen screen, GenerationSettings settings, DowModLoader?modLoader = null, GenerationService?generationService = null)
            : base(screen, "matchup")
        {
            this.generationService = generationService ?? Locator.Current.GetService <GenerationService>();
            this.modLoader         = modLoader ?? Locator.Current.GetService <DowModLoader>();
            this.settings          = settings;

            GenerateMatchup = ReactiveCommand.Create(() =>
            {
                Matchup      = this.generationService.GenerateMatchup(this.settings);
                MapImagePath = this.modLoader.GetMapImagePath(Matchup.Map);
            });

            GenerateMatchup.Execute().Subscribe();

            GoBack = HostScreen.Router.NavigateBack;
        }