using System;
using System.Threading.Tasks;
namespace Model
{
public struct ActorMessageInfo
{
public Session Session;
public ActorRequest Message;
}
///
/// 挂上这个组件表示该Entity是一个Actor, 它会将Entity位置注册到Location Server, 接收的消息将会队列处理
///
public class ActorComponent: Component
{
public IEntityActorHandler entityActorHandler;
public long actorId;
// 队列处理消息
public EQueue queue;
public TaskCompletionSource tcs;
public override void Dispose()
{
try
{
if (this.Id == 0)
{
return;
}
base.Dispose();
Game.Scene.GetComponent().Remove(actorId);
}
catch (Exception)
{
Log.Error($"unregister actor fail: {this.actorId}");
}
}
}
}