using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; using DesertPaintCodex.Services; using DynamicData; namespace DesertPaintCodex.Models { public static class ReactionTestService { private static readonly List _allTests = new(); static ReactionTestService() { } public static void Initialize() { _allTests.Clear(); PlayerProfile? profile = ProfileManager.CurrentProfile; Debug.Assert(profile != null); List reagentNames = ReagentService.Names; foreach (Reagent reagent1 in reagentNames.Select(ReagentService.GetReagent)) { foreach (Reagent reagent2 in reagentNames.Select(ReagentService.GetReagent)) { if (reagent1 == reagent2) continue; Reaction? reaction = profile.FindReaction(reagent1, reagent2); ClipType clipType = profile.PairClipStatus(reagent1, reagent2); ReactionTest test = new(reagent1, reagent2, reaction, clipType) { Clipped = clipType, Reaction = reaction, }; _allTests.Add(test); } } } public static void PopulateRemainingTests(ObservableCollection collection) { collection.Clear(); collection.AddRange(_allTests.Where(test => test.State != ReactionTest.TestState.Saved).OrderBy(test => test)); } public static void PopulateCompletedTests(ObservableCollection collection) { collection.Clear(); collection.AddRange(_allTests.Where(test => test.State == ReactionTest.TestState.Saved).OrderBy(test => test)); } } }