12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using System;
- using System.Collections.Generic;
- namespace ET.Server
- {
- /// <summary>
- /// 选角绑定角色
- /// </summary>
- [MessageHandler(SceneType.Game)]
- public class C2G_BindPlayerHandler: AMRpcHandler<C2G_BindPlayer, G2C_BindPlayer>
- {
- protected override async ETTask Run(Session session, C2G_BindPlayer request, G2C_BindPlayer response, Action reply)
- {
- // 判断参数
- if (string.IsNullOrEmpty(request.PlayerId.ToString()))
- {
- Log.Debug($"参数错误,角色id为空");
- response.Error = ErrorCode.ERR_ParameterError;
- reply();
- return;
- }
- PlayerInfo info = session.GetComponent<SessionPlayerComponent>().PlayerInfo;
- if (info != null && request.PlayerId != info.Id)
- {
- Log.Debug($"参数错误,角色id错误");
- response.Error = ErrorCode.ERR_ParameterError;
- reply();
- return;
- }
- Scene scene = session.DomainScene();
- WNPlayer player = scene.GetComponent<GamePlayerComponent>().Get(request.PlayerId);
- if (player != null)
- {
- // 重新登录,赋值session
- if (player.Session.InstanceId != session.InstanceId)
- {
- player.Session = session;
- Log.Debug($"重新登录,赋值session...");
- }
- }
- else
- {
- player = scene.GetComponent<GamePlayerComponent>().AddChild<WNPlayer, Session>(session);
- }
- // 绑定选择的玩家
- session.GetComponent<SessionPlayerComponent>().BindPlayerId(player);
- // todo 分配场景
- Map map = MapHelper.BindPlayerDispatch(player);
- MapConfig mapConfig = map.Prop;
- // 登录数据
- player.OnLogin();
- map.OnPlayerLogin(player);
- response.Player = PlayerHelper.PlayerInfoToProto(player);
- response.Player.areaId = mapConfig.TemplateID;
- response.Player.instanceId = map.Id;
- response.Player.mapId = map.MapId;
- reply();
- await ETTask.CompletedTask;
- }
- }
- }
|