ActorComponent.cs 854 字节
Newer Older
1
using System;
2
using System.Threading.Tasks;
3 4 5

namespace Model
{
6 7 8
	public struct ActorMessageInfo
	{
		public Session Session;
9
		public ActorRequest Message;
10 11
	}

12
	/// <summary>
13
	/// 挂上这个组件表示该Entity是一个Actor, 它会将Entity位置注册到Location Server, 接收的消息将会队列处理
14 15 16
	/// </summary>
	public class ActorComponent: Component
	{
17
		public IEntityActorHandler entityActorHandler;
18

19
		public long actorId;
20

21
		// 队列处理消息
22
		public EQueue<ActorMessageInfo> queue;
T
tanghai 已提交
23

24
		public TaskCompletionSource<ActorMessageInfo> tcs;
25

T
tanghai 已提交
26
		public override void Dispose()
27 28 29 30 31 32 33 34 35 36 37 38
		{
			try
			{
				if (this.Id == 0)
				{
					return;
				}

				base.Dispose();

				Game.Scene.GetComponent<ActorManagerComponent>().Remove(actorId);
			}
39
			catch (Exception)
40
			{
41
				Log.Error($"unregister actor fail: {this.actorId}");
42 43 44 45
			}
		}
	}
}