Esempio n. 1
0
        public void AddOption(Mod mod, int groupIdx, ISubMod option, int priority = 0)
        {
            if (option is not SubMod o)
            {
                return;
            }

            if (mod._groups[groupIdx].Count > 63)
            {
                PluginLog.Error(
                    $"Could not add option {option.Name} to {mod._groups[ groupIdx ].Name} for mod {mod.Name}, "
                    + "since only up to 64 options are supported in one group.");
                return;
            }

            switch (mod._groups[groupIdx])
            {
            case SingleModGroup s:
                s.OptionData.Add(o);
                break;

            case MultiModGroup m:
                m.PrioritizedOptions.Add((o, priority));
                break;
            }

            ModOptionChanged.Invoke(ModOptionChangeType.OptionAdded, mod, groupIdx, mod._groups[groupIdx].Count - 1, -1);
        }
Esempio n. 2
0
 public void MoveModGroup(Mod mod, int groupIdxFrom, int groupIdxTo)
 {
     if (mod._groups.Move(groupIdxFrom, groupIdxTo))
     {
         ModOptionChanged.Invoke(ModOptionChangeType.GroupMoved, mod, groupIdxFrom, -1, groupIdxTo);
     }
 }
Esempio n. 3
0
        public void RenameOption(Mod mod, int groupIdx, int optionIdx, string newName)
        {
            switch (mod._groups[groupIdx])
            {
            case SingleModGroup s:
                if (s.OptionData[optionIdx].Name == newName)
                {
                    return;
                }

                s.OptionData[optionIdx].Name = newName;
                break;

            case MultiModGroup m:
                var option = m.PrioritizedOptions[optionIdx].Mod;
                if (option.Name == newName)
                {
                    return;
                }

                option.Name = newName;
                break;
            }

            ModOptionChanged.Invoke(ModOptionChangeType.DisplayChange, mod, groupIdx, optionIdx, -1);
        }
Esempio n. 4
0
        public void DeleteModGroup(Mod mod, int groupIdx)
        {
            var group = mod._groups[groupIdx];

            ModOptionChanged.Invoke(ModOptionChangeType.PrepareChange, mod, groupIdx, -1, -1);
            mod._groups.RemoveAt(groupIdx);
            group.DeleteFile(mod.ModPath, groupIdx);
            ModOptionChanged.Invoke(ModOptionChangeType.GroupDeleted, mod, groupIdx, -1, -1);
        }
Esempio n. 5
0
        public void MoveOption(Mod mod, int groupIdx, int optionIdxFrom, int optionIdxTo)
        {
            var group = mod._groups[groupIdx];

            if (group.MoveOption(optionIdxFrom, optionIdxTo))
            {
                ModOptionChanged.Invoke(ModOptionChangeType.OptionMoved, mod, groupIdx, optionIdxFrom, optionIdxTo);
            }
        }
Esempio n. 6
0
        public void OptionAddFiles(Mod mod, int groupIdx, int optionIdx, Dictionary <Utf8GamePath, FullPath> additions)
        {
            var subMod   = GetSubMod(mod, groupIdx, optionIdx);
            var oldCount = subMod.FileData.Count;

            subMod.FileData.AddFrom(additions);
            if (oldCount != subMod.FileData.Count)
            {
                ModOptionChanged.Invoke(ModOptionChangeType.OptionFilesAdded, mod, groupIdx, optionIdx, -1);
            }
        }
Esempio n. 7
0
        public void ChangeModGroupType(Mod mod, int groupIdx, SelectType type)
        {
            var group = mod._groups[groupIdx];

            if (group.Type == type)
            {
                return;
            }

            mod._groups[groupIdx] = group.Convert(type);
            ModOptionChanged.Invoke(ModOptionChangeType.GroupTypeChanged, mod, groupIdx, -1, -1);
        }
Esempio n. 8
0
        public void OptionSetFileSwaps(Mod mod, int groupIdx, int optionIdx, Dictionary <Utf8GamePath, FullPath> swaps)
        {
            var subMod = GetSubMod(mod, groupIdx, optionIdx);

            if (subMod.FileSwapData.SetEquals(swaps))
            {
                return;
            }

            ModOptionChanged.Invoke(ModOptionChangeType.PrepareChange, mod, groupIdx, optionIdx, -1);
            subMod.FileSwapData = swaps;
            ModOptionChanged.Invoke(ModOptionChangeType.OptionSwapsChanged, mod, groupIdx, optionIdx, -1);
        }
Esempio n. 9
0
        public void OptionSetManipulations(Mod mod, int groupIdx, int optionIdx, HashSet <MetaManipulation> manipulations)
        {
            var subMod = GetSubMod(mod, groupIdx, optionIdx);

            if (subMod.Manipulations.Count == manipulations.Count &&
                subMod.Manipulations.All(m => manipulations.TryGetValue(m, out var old) && old.EntryEquals(m)))
            {
                return;
            }

            ModOptionChanged.Invoke(ModOptionChangeType.PrepareChange, mod, groupIdx, optionIdx, -1);
            subMod.ManipulationData = manipulations;
            ModOptionChanged.Invoke(ModOptionChangeType.OptionMetaChanged, mod, groupIdx, optionIdx, -1);
        }
Esempio n. 10
0
        public void DeleteOption(Mod mod, int groupIdx, int optionIdx)
        {
            ModOptionChanged.Invoke(ModOptionChangeType.PrepareChange, mod, groupIdx, optionIdx, -1);
            switch (mod._groups[groupIdx])
            {
            case SingleModGroup s:
                s.OptionData.RemoveAt(optionIdx);
                break;

            case MultiModGroup m:
                m.PrioritizedOptions.RemoveAt(optionIdx);
                break;
            }

            ModOptionChanged.Invoke(ModOptionChangeType.OptionDeleted, mod, groupIdx, optionIdx, -1);
        }
Esempio n. 11
0
        public void ChangeGroupDescription(Mod mod, int groupIdx, string newDescription)
        {
            var group = mod._groups[groupIdx];

            if (group.Description == newDescription)
            {
                return;
            }

            var _ = group switch
            {
                SingleModGroup s => s.Description = newDescription,
                MultiModGroup m => m.Description = newDescription,
                _ => newDescription,
            };

            ModOptionChanged.Invoke(ModOptionChangeType.DisplayChange, mod, groupIdx, -1, -1);
        }
Esempio n. 12
0
        public void AddModGroup(Mod mod, SelectType type, string newName)
        {
            if (!VerifyFileName(mod, null, newName, true))
            {
                return;
            }

            var maxPriority = mod._groups.Count == 0 ? 0 : mod._groups.Max(o => o.Priority) + 1;

            mod._groups.Add(type == SelectType.Multi
                ? new MultiModGroup {
                Name = newName, Priority = maxPriority
            }
                : new SingleModGroup {
                Name = newName, Priority = maxPriority
            });
            ModOptionChanged.Invoke(ModOptionChangeType.GroupAdded, mod, mod._groups.Count - 1, -1, -1);
        }
Esempio n. 13
0
        public void ChangeGroupPriority(Mod mod, int groupIdx, int newPriority)
        {
            var group = mod._groups[groupIdx];

            if (group.Priority == newPriority)
            {
                return;
            }

            var _ = group switch
            {
                SingleModGroup s => s.Priority = newPriority,
                MultiModGroup m => m.Priority = newPriority,
                _ => newPriority,
            };

            ModOptionChanged.Invoke(ModOptionChangeType.PriorityChanged, mod, groupIdx, -1, -1);
        }
Esempio n. 14
0
        public void AddOption(Mod mod, int groupIdx, string newName)
        {
            switch (mod._groups[groupIdx])
            {
            case SingleModGroup s:
                s.OptionData.Add(new SubMod {
                    Name = newName
                });
                break;

            case MultiModGroup m:
                m.PrioritizedOptions.Add((new SubMod {
                    Name = newName
                }, 0));
                break;
            }

            ModOptionChanged.Invoke(ModOptionChangeType.OptionAdded, mod, groupIdx, mod._groups[groupIdx].Count - 1, -1);
        }
Esempio n. 15
0
        public void ChangeOptionPriority(Mod mod, int groupIdx, int optionIdx, int newPriority)
        {
            switch (mod._groups[groupIdx])
            {
            case SingleModGroup:
                ChangeGroupPriority(mod, groupIdx, newPriority);
                break;

            case MultiModGroup m:
                if (m.PrioritizedOptions[optionIdx].Priority == newPriority)
                {
                    return;
                }

                m.PrioritizedOptions[optionIdx] = (m.PrioritizedOptions[optionIdx].Mod, newPriority);
                ModOptionChanged.Invoke(ModOptionChangeType.PriorityChanged, mod, groupIdx, optionIdx, -1);
                return;
            }
        }
Esempio n. 16
0
        public void RenameModGroup(Mod mod, int groupIdx, string newName)
        {
            var group   = mod._groups[groupIdx];
            var oldName = group.Name;

            if (oldName == newName || !VerifyFileName(mod, group, newName, true))
            {
                return;
            }

            group.DeleteFile(mod.ModPath, groupIdx);

            var _ = group switch
            {
                SingleModGroup s => s.Name = newName,
                MultiModGroup m => m.Name = newName,
                _ => newName,
            };

            ModOptionChanged.Invoke(ModOptionChangeType.GroupRenamed, mod, groupIdx, -1, -1);
        }