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); }
public void MoveModGroup(Mod mod, int groupIdxFrom, int groupIdxTo) { if (mod._groups.Move(groupIdxFrom, groupIdxTo)) { ModOptionChanged.Invoke(ModOptionChangeType.GroupMoved, mod, groupIdxFrom, -1, groupIdxTo); } }
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); }
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); }
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); } }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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; } }
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); }