Files @ f419334a476f
Branch filter:

Location: ATITD-Tools/Desert-Paint-Codex/Models/ReactionTestService.cs

Malkyne
Improved up behavior for clipped reactions and 3-way reactions, and fixed
related bugs.
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));
        }
        
    }
}