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<ReactionTest> _allTests = new();
static ReactionTestService()
{
}
public static void Initialize()
{
_allTests.Clear();
PlayerProfile? profile = ProfileManager.CurrentProfile;
Debug.Assert(profile != null);
List<string> 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<ReactionTest> collection)
{
collection.Clear();
collection.AddRange(_allTests.Where(test => test.State != ReactionTest.TestState.Saved).OrderBy(test => test));
}
public static void PopulateCompletedTests(ObservableCollection<ReactionTest> collection)
{
collection.Clear();
collection.AddRange(_allTests.Where(test => test.State == ReactionTest.TestState.Saved).OrderBy(test => test));
}
}
}