using System.Collections.Generic; using System.Linq; namespace PKHeX.Core { /// /// Miscellaneous setup utility for legality checking data sources. /// internal static class EncounterUtil { /// /// Gets the relevant objects that appear in the relevant game. /// /// Table of valid encounters that appear for the game pairing /// Game to filter for /// Array of encounter objects that can be encountered in the input game internal static T[] GetEncounters(IEnumerable source, GameVersion game) where T : IVersion { return source.Where(s => s.Version.Contains(game)).ToArray(); } internal static void MarkEncounterTradeStrings(T[] table, string[][] strings) where T : EncounterTrade { int half = strings[1].Length / 2; for (int i = 0; i < half; i++) { var t = table[i]; t.Nicknames = getNames(i, strings); t.TrainerNames = getNames(i + half, strings); } static string[] getNames(int i, IEnumerable names) => names.Select(z => z.Length > i ? z[i] : string.Empty).ToArray(); } internal static void MarkEncounterTradeNicknames(T[] table, string[][] strings) where T : EncounterTrade { for (int i = 0; i < table.Length; i++) { var t = table[i]; t.Nicknames = getNames(i, strings); } static string[] getNames(int i, IEnumerable names) => names.Select(z => z.Length > i ? z[i] : string.Empty).ToArray(); } } }