encompass-cs/encompass-cs/MessageManager.cs

73 lines
2.3 KiB
C#

using System.Collections.Generic;
namespace Encompass
{
internal class MessageManager
{
private readonly TimeManager timeManager;
private readonly MessageStore messageStore = new MessageStore();
public MessageManager(TimeManager timeManager)
{
this.timeManager = timeManager;
}
internal void AddMessage<TMessage>(TMessage message) where TMessage : struct, IMessage
{
messageStore.AddMessage(message);
}
internal void AddMessage<TMessage>(TMessage message, double time) where TMessage : struct, IMessage
{
messageStore.AddMessage(message, time);
}
internal void AddMessageIgnoringTimeDilation<TMessage>(TMessage message, double time) where TMessage : struct, IMessage
{
messageStore.AddMessageIgnoringTimeDilation(message, time);
}
internal void ClearMessages()
{
messageStore.ClearAll();
}
internal void ProcessDelayedMessages(double dt)
{
messageStore.ProcessDelayedMessages(dt * timeManager.TimeDilationFactor, dt);
}
internal IEnumerable<TMessage> GetMessagesByType<TMessage>() where TMessage : struct, IMessage
{
return messageStore.All<TMessage>();
}
internal bool Any<TMessage>() where TMessage : struct, IMessage
{
return messageStore.Any<TMessage>();
}
internal TMessage First<TMessage>() where TMessage : struct, IMessage
{
return messageStore.First<TMessage>();
}
internal IEnumerable<TMessage> WithEntity<TMessage>(int entityID) where TMessage : struct, IMessage, IHasEntity
{
return messageStore.WithEntity<TMessage>(entityID);
}
internal TMessage WithEntitySingular<TMessage>(int entityID) where TMessage : struct, IMessage, IHasEntity
{
var enumerator = messageStore.WithEntity<TMessage>(entityID).GetEnumerator();
enumerator.MoveNext();
return enumerator.Current;
}
internal bool SomeWithEntity<TMessage>(int entityID) where TMessage : struct, IMessage, IHasEntity
{
return messageStore.SomeWithEntity<TMessage>(entityID);
}
}
}