Exemplo n.º 1
0
        private void SetUpPositions()
        {
            _labels.Clear();
            _modToggles.Clear();
            _currentItemIndex = 0;

            var mods = ModRegistry.GetRegisteredItems();

            for (var index = 0; index < 7; ++index)
            {
                _optionSlots.Add(new ClickableComponent(new Rectangle(xPositionOnScreen + Game1.tileSize / 4, yPositionOnScreen + Game1.tileSize * 6 / 4 + Game1.pixelZoom + index * ((height - Game1.tileSize * 2) / 7), width - Game1.tileSize / 2, (height - Game1.tileSize * 2) / 7 + Game1.pixelZoom), string.Concat(index)));
            }

            foreach (var mod in mods)
            {
                if (mod.UniqueId == ModLoader1.Instance.ModSettings.UniqueId)
                {
                    continue;
                }

                var checkbox = new DisableableOptionCheckbox($"{mod.Name} by {mod.Author}", 11)
                {
                    IsChecked = mod.ModState == ModState.Loaded
                };

                if (mod.ModState != ModState.Loaded && mod.ModState != ModState.Deactivated)
                {
                    ResolveLoadingIssue(checkbox, mod);
                }
                _modToggles.Add(checkbox);
                _modOptions[checkbox] = mod;
            }
        }
Exemplo n.º 2
0
        private void ResolveLoadingIssue(DisableableOptionCheckbox checkbox, ModManifest mod)
        {
            checkbox.IsDisabled = true;
            if (mod.ModState == ModState.MissingDependency)
            {
                var missingDependencies = mod.Dependencies.Where(n => n.DependencyState == DependencyState.Missing);
                var missingParents      = mod.Dependencies.Where(n => n.DependencyState == DependencyState.ParentMissing);
                var tooLow  = mod.Dependencies.Where(n => n.DependencyState == DependencyState.TooLowVersion);
                var tooHigh = mod.Dependencies.Where(n => n.DependencyState == DependencyState.TooHighVersion);

                var modDependencies = missingDependencies as ModDependency[] ?? missingDependencies.ToArray();
                if (modDependencies.Any())
                {
                    checkbox.DisableReason =
                        $"Missing Dependencies: : {string.Join(", ", modDependencies.Select(n => n.UniqueId))}";
                }
                else if (modDependencies.Any())
                {
                    checkbox.DisableReason =
                        $"Dependent Mods Missing Dependencies: : {string.Join(", ", missingParents.Select(n => n.UniqueId))}";
                }
                else
                {
                    var tooLowDependencies = tooLow as ModDependency[] ?? tooLow.ToArray();
                    if (tooLowDependencies.Any())
                    {
                        checkbox.DisableReason =
                            $"Dependency Version Too Low: : {string.Join(", ", tooLowDependencies.Select(n => n.UniqueId + $"(Minimum: {n.MinimumVersion.ToString()})"))}";
                    }
                    else
                    {
                        var tooHighDependencies = tooHigh as ModDependency[] ?? tooHigh.ToArray();
                        if (tooHighDependencies.Any())
                        {
                            checkbox.DisableReason =
                                $"Dependency Version Too High: : {string.Join(",", tooHighDependencies.Select(n => n.UniqueId + $"(Maximum: {n.MaximumVersion.ToString()})"))}";
                        }
                    }
                }
            }
            else if (mod.ModState == ModState.Errored)
            {
                var lastException = mod.LastException?.Message ?? "";
                checkbox.DisableReason = $"Error: {lastException}";
            }
        }
Exemplo n.º 3
0
        private void OnTogglePress(DisableableOptionCheckbox disableableOptionCheckbox)
        {
            if (disableableOptionCheckbox.IsDisabled)
            {
                return;
            }

            Game1.playSound("coin");
            if (disableableOptionCheckbox.IsChecked)
            {
                Log.Info($"Loaded Mod: {_modOptions[disableableOptionCheckbox].Name}");
                Farmhand.ModLoader.ReactivateMod(_modOptions[disableableOptionCheckbox]);
            }
            else
            {
                Log.Info($"Unloaded Mod: {_modOptions[disableableOptionCheckbox].Name}");
                Farmhand.ModLoader.DeactivateMod(_modOptions[disableableOptionCheckbox]);
            }
        }
Exemplo n.º 4
0
        private void SetUpPositions()
        {
            _labels.Clear();
            _modToggles.Clear();
            _currentItemIndex = 0;

            upArrow         = new ClickableTextureComponent(new Rectangle(xPositionOnScreen + width + Game1.tileSize / 4, yPositionOnScreen + Game1.tileSize / 4, 11 * Game1.pixelZoom, 12 * Game1.pixelZoom), Game1.mouseCursors, new Rectangle(421, 459, 11, 12), Game1.pixelZoom);
            downArrow       = new ClickableTextureComponent(new Rectangle(xPositionOnScreen + width + Game1.tileSize / 4, yPositionOnScreen + height - Game1.tileSize, 11 * Game1.pixelZoom, 12 * Game1.pixelZoom), Game1.mouseCursors, new Rectangle(421, 472, 11, 12), Game1.pixelZoom);
            scrollBar       = new ClickableTextureComponent(new Rectangle(upArrow.bounds.X + Game1.pixelZoom * 3, upArrow.bounds.Y + upArrow.bounds.Height + Game1.pixelZoom, 6 * Game1.pixelZoom, 10 * Game1.pixelZoom), Game1.mouseCursors, new Rectangle(435, 463, 6, 10), Game1.pixelZoom);
            scrollBarRunner = new Rectangle(scrollBar.bounds.X, upArrow.bounds.Y + upArrow.bounds.Height + Game1.pixelZoom, scrollBar.bounds.Width, height - Game1.tileSize - upArrow.bounds.Height - Game1.pixelZoom * 7);

            var mods = ModRegistry.GetRegisteredItems();

            for (var index = 0; index < 4; ++index)
            {
                _optionSlots.Add(new ClickableComponent(new Rectangle(xPositionOnScreen + Game1.tileSize / 4, yPositionOnScreen + Game1.tileSize / 4 + index * (height / 4) - (index * 7), width - Game1.tileSize / 2, (height / 4 + Game1.pixelZoom) - 11), string.Concat(index)));
            }

            foreach (var mod in mods)
            {
                if (Equals(mod.UniqueId, ModLoader1.Instance.ModSettings.UniqueId))
                {
                    continue;
                }

                var checkbox = new DisableableOptionCheckbox("", 11)
                {
                    IsChecked = mod.ModState == ModState.Loaded
                };

                if (mod.IsFarmhandMod && mod.ModState != ModState.Loaded && mod.ModState != ModState.Deactivated)
                {
                    ResolveLoadingIssue(checkbox, (ModManifest)mod);
                }
                _modToggles.Add(checkbox);
                _modOptions[checkbox] = mod;
            }
        }