using System; using System.Collections.Generic; namespace ProjectI.Builds { public sealed class AbilityUnlockState { private readonly HashSet unlocked; public AbilityUnlockState(IEnumerable ids) { if (ids == null) throw new ArgumentNullException(nameof(ids)); unlocked = new HashSet(); foreach (int id in ids) Unlock(id); } public bool IsUnlocked(int id) => unlocked.Contains(id); public void Unlock(int id) { if (id <= 0) throw new ArgumentOutOfRangeException(nameof(id)); unlocked.Add(id); } } }