using System.Collections.Generic; namespace DesertPaintCodex.Models { public class ReactionSet { // ingredient -> [ingredient, reaction] private readonly Dictionary> _reactions = new(); public Reaction? Find(Reagent reagent1, Reagent reagent2) { Reaction? reaction = null; _reactions.TryGetValue(reagent1.PracticalPaintName, out Dictionary? secondReagentDict); secondReagentDict?.TryGetValue(reagent2.PracticalPaintName, out reaction); return reaction; } public void Set(Reagent reagent1, Reagent reagent2, Reaction? reaction) { _reactions.TryGetValue(reagent1.PracticalPaintName, out Dictionary? secondReagentDict); if (secondReagentDict == null) { secondReagentDict = new Dictionary(); _reactions.Add(reagent1.PracticalPaintName, secondReagentDict); } secondReagentDict[reagent2.PracticalPaintName] = reaction; } public void Remove(Reagent reagent1, Reagent reagent2) { _reactions.TryGetValue(reagent1.PracticalPaintName, out Dictionary? secondReagentDict); secondReagentDict?.Remove(reagent2.PracticalPaintName); } public void Clear() { _reactions.Clear(); } } }