using System; using System.Collections.Generic; using System.Linq; using WingsEmu.Core.Extensions; using WingsEmu.Game.TimeSpaces; namespace Plugin.TimeSpaces; public class TimeSpaceManager : ITimeSpaceManager { private readonly IDictionary _timeSpaceParties = new Dictionary(); private readonly IDictionary _timeSpacePartiesByMapInstanceId = new Dictionary(); private readonly IDictionary _timeSpaceSubInstances = new Dictionary(); public IReadOnlyCollection GetTimeSpaces() => _timeSpaceParties.Values.ToArray(); public TimeSpaceParty GetTimeSpace(Guid id) => _timeSpaceParties.GetOrDefault(id); public TimeSpaceParty GetTimeSpaceByMapInstanceId(Guid id) => _timeSpacePartiesByMapInstanceId.GetOrDefault(id); public TimeSpaceSubInstance GetSubInstance(Guid mapInstanceId) => _timeSpaceSubInstances.GetOrDefault(mapInstanceId); public void AddTimeSpace(TimeSpaceParty timeSpaceParty) { _timeSpaceParties.Add(timeSpaceParty.Id, timeSpaceParty); } public void AddTimeSpaceSubInstance(Guid mapInstanceId, TimeSpaceSubInstance subInstance) { _timeSpaceSubInstances[mapInstanceId] = subInstance; } public void AddTimeSpaceByMapInstanceId(Guid mapInstanceId, TimeSpaceParty timeSpaceParty) { _timeSpacePartiesByMapInstanceId[mapInstanceId] = timeSpaceParty; } public void RemoveTimeSpaceSubInstance(Guid mapInstanceId) { _timeSpaceSubInstances.Remove(mapInstanceId); } public void RemoveTimeSpacePartyByMapInstanceId(Guid mapInstanceId) { _timeSpacePartiesByMapInstanceId.Remove(mapInstanceId); } public void RemoveTimeSpace(TimeSpaceParty timeSpaceParty) => _timeSpaceParties.Remove(timeSpaceParty.Id); }