namespace DxMessaging.Core.Messages
{
using System;
///
/// Used to specify general-purposes messages that are meant to be sent to a specific entity.
///
///
/// TargetedMessages should be thought of as commands. Things like "EntityX, pick up this rock" or
/// "EntityX, you successfully completed an active reload".
/// Inheritance should be completely flat. Ie, TargetedMessages should be the direct parent of every implementer.
///
public interface ITargetedMessage : IMessage { }
///
/// No-alloc TargetedMessages. Derive from this type to not have your messages boxed (if they are structs).
///
/// public readonly MyCoolStruct : ITargetedMessage{MyCoolStruct}
///
///
/// Concrete type of the derived. Should be the derived type and nothing else.
public interface ITargetedMessage : ITargetedMessage
where T : ITargetedMessage
{
Type IMessage.MessageType => typeof(T);
}
}