using AnotherReplayReader.ReplayFile; using System.Collections.Immutable; using System.Linq; namespace AnotherReplayReader.Utils { internal class ReplayPinyinList { public ImmutableArray Replays { get; } = ImmutableArray.Empty; public ImmutableArray Pinyins { get; } = ImmutableArray.Empty; public ReplayPinyinList() : this(ImmutableArray.Empty) { } public ReplayPinyinList(ImmutableArray replay) : this(replay, replay.Select(replay => new ReplayPinyinData(replay)).ToImmutableArray()) { } private ReplayPinyinList(ImmutableArray replay, ImmutableArray pinyins) { Replays = replay; Pinyins = pinyins; } public ReplayPinyinList SetItem(int index, Replay replay) { return new(Replays.SetItem(index, replay), Pinyins.SetItem(index, new(replay))); } } class ReplayPinyinData { public Replay Replay { get; } public string? PinyinDetails { get; } public string? PinyinMod { get; } public ReplayPinyinData(Replay replay) { Replay = replay; PinyinDetails = replay.GetDetails().ToPinyin(); PinyinMod = replay.Mod.ModName.ToPinyin(); } public bool MatchPinyin(string? pinyin) { return PinyinDetails?.ContainsIgnoreCase(pinyin) is true || PinyinMod?.ContainsIgnoreCase(pinyin) is true; } } }