| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using System;
- using System.Net;
- namespace ET.Server
- {
- [ActorMessageHandler]
- public class Actor_TransferHandler : AMActorLocationRpcHandler<Unit, Actor_TransferRequest, Actor_TransferResponse>
- {
- protected override async ETTask Run(Unit unit, Actor_TransferRequest request, Actor_TransferResponse response, Action reply)
- {
- //long unitId = unit.Id;
- //
- //// 先在location锁住unit的地址
- //await Game.Scene.GetComponent<LocationProxyComponent>().Lock(unitId, unit.InstanceId);
- //
- //// 删除unit,让其它进程发送过来的消息找不到actor,重发
- //Game.EventSystem.Remove(unitId);
- //
- //long instanceId = unit.InstanceId;
- //
- //int mapIndex = request.MapIndex;
- //
- //StartConfigComponent startConfigComponent = StartConfigComponent.Instance;
- //
- //// 传送到map
- //StartConfig mapConfig = startConfigComponent.MapConfigs[mapIndex];
- //IPEndPoint address = mapConfig.GetComponent<InnerConfig>().IPEndPoint;
- //Session session = Game.Scene.GetComponent<NetInnerComponent>().Get(address);
- //
- //// 只删除不disponse否则M2M_TrasferUnitRequest无法序列化Unit
- //Game.Scene.GetComponent<UnitComponent>().RemoveNoDispose(unitId);
- //M2M_TrasferUnitResponse m2m_TrasferUnitResponse = (M2M_TrasferUnitResponse)await session.Call(new M2M_TrasferUnitRequest() { Unit = unit });
- //unit.Dispose();
- //
- //// 解锁unit的地址,并且更新unit的instanceId
- //await Game.Scene.GetComponent<LocationProxyComponent>().UnLock(unitId, instanceId, m2m_TrasferUnitResponse.InstanceId);
- reply();
-
- await ETTask.CompletedTask;
- }
- }
- }
|