PKHeX/PKHeX.Core/Editing/Saves/BoxManipUtil.cs
Kurt 53216333e6 Misc updates
extract final pkm manipulation logic from pkm editor
add xmldoc to boxmanipulator, add utility class for enum->manip fetching
fix xmldoc referencing removed enum member
relocate boxmanip overview logic to utility class
move SAVPaths file pointer to Main for reuse #2109 , will add to
autodetect in a later commit
open/save dialog with extra extensions: ignore ones already present
2018-09-03 10:30:35 -07:00

64 lines
2.2 KiB
C#

using System.Collections.Generic;
using System.Linq;
namespace PKHeX.Core
{
public static class BoxManipUtil
{
/// <summary>
/// Grouped categories of different <see cref="IBoxManip"/>.
/// </summary>
public static readonly IReadOnlyList<IBoxManip>[] ManipCategories =
{
BoxManipClear.Common,
BoxManipSort.Common,
BoxManipSort.Advanced,
BoxManipModify.Common,
};
public static readonly string[] ManipCategoryNames =
{
"Delete",
"Sort",
"SortAdvanced",
"Modify",
};
/// <summary>
/// Gets a <see cref="IBoxManip"/> reference that carries out the action of the requested <see cref="type"/>.
/// </summary>
/// <param name="type">Manipulation type.</param>
/// <returns>Reference to <see cref="IBoxManip"/>.</returns>
public static IBoxManip GetManip(this BoxManipType type) => ManipCategories.SelectMany(c => c).FirstOrDefault(m => m.Type == type);
/// <summary>
/// Gets the corresponding name from <see cref="ManipCategoryNames"/> for the requested <see cref="type"/>.
/// </summary>
/// <param name="type">Manipulation type.</param>
/// <returns>Category Name</returns>
public static string GetManipCategoryName(this BoxManipType type)
{
for (int i = 0; i < ManipCategories.Length; i++)
{
if (ManipCategories[i].Any(z => z.Type == type))
return ManipCategoryNames[i];
}
return null;
}
/// <summary>
/// Gets the corresponding name from <see cref="ManipCategoryNames"/> for the requested <see cref="manip"/>.
/// </summary>
/// <param name="manip">Manipulation type.</param>
/// <returns>Category Name</returns>
public static string GetManipCategoryName(this IBoxManip manip)
{
for (int i = 0; i < ManipCategories.Length; i++)
{
if (ManipCategories[i].Any(z => z == manip))
return ManipCategoryNames[i];
}
return null;
}
}
}