using System.Collections.Concurrent; using System.Collections.Generic; using WingsEmu.Game.Families; namespace Plugin.FamilyImpl { public class FamilyExperienceManager : IFamilyExperienceManager { private readonly ConcurrentQueue _bufferFamilyExperience; public FamilyExperienceManager() => _bufferFamilyExperience = new ConcurrentQueue(); public void SaveFamilyExperienceToBuffer(ExperienceGainedSubMessage xpGained) { _bufferFamilyExperience.Enqueue(xpGained); } public IReadOnlyCollection GetFamilyExperiencesInBuffer() { if (_bufferFamilyExperience.IsEmpty) { return null; } var list = new List(); while (_bufferFamilyExperience.TryDequeue(out ExperienceGainedSubMessage exp)) { list.Add(exp); } return list; } } }