You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

33 lines
1.2 KiB

using System;
namespace ET
{
[FriendClass(typeof(GateMapComponent))]
[MessageHandler]
//此函数已经放弃了
public class C2G_EnterMapHandler : AMRpcHandler<C2G_EnterMap, G2C_EnterMap>
{
protected override async ETTask Run(Session session, C2G_EnterMap request, G2C_EnterMap response, Action reply)
{
Player player = session.GetComponent<SessionPlayerComponent>().GetMyPlayer();
// 在Gate上动态创建一个Map Scene,把Unit从DB中加载放进来,然后传送到真正的Map中,这样登陆跟传送的逻辑就完全一样了
GateMapComponent gateMapComponent = player.AddComponent<GateMapComponent>();
gateMapComponent.Scene = await SceneFactory.Create(gateMapComponent, "GateMap", SceneType.Map);
Scene scene = gateMapComponent.Scene;
// 这里可以从DB中加载Unit
Unit unit = await UnitFactory.Create(scene, player.Id, UnitType.Player);
unit.AddComponent<UnitGateComponent, long>(session.InstanceId);
StartSceneConfig startSceneConfig = StartSceneConfigCategory.Instance.GetBySceneName(session.DomainZone(), "Map1");
response.MyId = player.Id;
reply();
// 开始传送
await TransferHelper.Transfer(unit, startSceneConfig.InstanceId, startSceneConfig.Name);
}
}
}