Esempio n. 1
0
        public void TestFetchBSVersions()
        {
            var versions = BeatModsV1.FetchBSVersions();

            Assert.NotNull(versions);
            Assert.Equal(11, versions.Count);
        }
Esempio n. 2
0
        public void TestFetchMods()
        {
            var filters = BeatModsV1.DefaultFilters;

            filters.Add("gameVersion", "1.12.2");

            var mods = BeatModsV1.FetchMods(filters);

            Assert.NotNull(mods);
            Assert.Equal(56, mods.Count);
        }
        public SettingsViewModel(Settings s)
        {
            settings = s;

            // Fetch data from beatmods api, setup defaults
            //Task.Run(() =>
            //{
            // TODO: This should almost certainly be async (But it's a small request) Assuming a normal threading model in avalonia
            var versions   = BeatModsV1.FetchBSVersions();
            var versionSet = new ObservableCollection <string>(versions);

            this.RaiseAndSetIfChanged(ref bsVersions, versionSet);

            if (!string.IsNullOrWhiteSpace(settings.BSVersion))
            {
                BSVersionIndex = versions.IndexOf(settings.BSVersion);
            }
            else
            {
                BSVersionIndex = 0;
            }

            // Criteria for continue button to be enabled
            var bsInstallValid = this.WhenAnyValue(
                x => x.BSInstall,
                x => SettingsViewModel.IsBSInstallValid(x)
                );

            // var bsVersionValid = this.WhenAnyValue(
            //   x => x.BSVersion,
            //   x => !string.IsNullOrEmpty(x)
            // );
            // TODO: This doesn't work because the When triggers when both are observable
            // i.e when both the settings have been changed.
            // Disabled for now, as we'll always have a version selected, and only really need to
            // validate the install path..Will need to re-enable later on when things are more complex
            // var settingsValid = Observable.When(
            //   bsInstallValid.And(bsVersionValid)
            //   .Then((x1,x2) => x1 & x2));
            // Command for button. Enabled if validation passes, fires the command when clicked.
            // Subscribed to in MainWindowViewModel
            ContinueButton = ReactiveCommand.Create(
                () => { },
                bsInstallValid);
        }
Esempio n. 4
0
        public void FetchMods(string gameVersion, string bsInstall)
        {
            // List all mods for the specified game version
            var filters = BeatModsV1.DefaultFilters;

            filters.Add("gameVersion", gameVersion);

            var m         = BeatModsV1.FetchMods(BeatModsV1.DefaultFilters).OrderBy(mod => mod.name, new Helpers.StringInvariantSortComparerUS()).ToList();
            var installer = new ModInstaller();
            var entries   = new List <ModEntry>();

            foreach (var mm in m)
            {
                var mod = new ModEntry()
                {
                    mod = mm, selected = installer.IsModInstalled(mm, bsInstall)
                };
                entries.Add(mod);
            }

            mods = new ObservableCollection <ModEntry>(entries);
        }