|
@@ -17,48 +17,64 @@ namespace ET.Server
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (request.PlayerId <= 0)
|
|
|
- {
|
|
|
- Log.Debug($"参数错误");
|
|
|
- response.Error = ErrorCode.ERR_ParameterError;
|
|
|
- reply();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (!session.GetComponent<SessionPlayerComponent>().PlayerList.ContainsKey(request.PlayerId))
|
|
|
- {
|
|
|
- Log.Debug($"选角出错,没有选择的角色");
|
|
|
- response.Error = ErrorCode.ERR_BindPlayerError;
|
|
|
- reply();
|
|
|
- return;
|
|
|
- }
|
|
|
+ Scene scene = session.DomainScene();
|
|
|
|
|
|
- PlayerInfo playerInfo = session.GetComponent<SessionPlayerComponent>().PlayerList[request.PlayerId];
|
|
|
+ PlayerInfo playerInfo;
|
|
|
|
|
|
- if (playerInfo == null)
|
|
|
+ if (request.PlayerId <= 0)
|
|
|
{
|
|
|
- Log.Debug($"选角出错,没有选择的角色");
|
|
|
- response.Error = ErrorCode.ERR_BindPlayerError;
|
|
|
- reply();
|
|
|
- return;
|
|
|
+ long _id = IdGenerater.Instance.GenerateUnitId(scene.DomainZone());
|
|
|
+ // 简易版登录,直接创建一个player
|
|
|
+ using (await CoroutineLockComponent.Instance.Wait(CoroutineLockType.CreatePlayer, _id.ToString().Trim().GetHashCode()))
|
|
|
+ {
|
|
|
+ playerInfo = new PlayerInfo();
|
|
|
+ playerInfo.Id = _id;
|
|
|
+ playerInfo.UserId = request.UserId;
|
|
|
+ playerInfo.Name = "玩家-" + _id;
|
|
|
+ playerInfo.Sex = 0;
|
|
|
+ playerInfo.Pro = 0;
|
|
|
+ playerInfo.Level = 1;
|
|
|
+ playerInfo.Exp = 0;
|
|
|
+
|
|
|
+ await DBManagerComponent.Instance.GetZoneDB(session.DomainZone()).Save(playerInfo);
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- long bindPlayerId = session.GetComponent<SessionPlayerComponent>().PlayerId;
|
|
|
-
|
|
|
- switch (bindPlayerId)
|
|
|
+ else
|
|
|
{
|
|
|
- case > 0 when bindPlayerId == request.PlayerId:
|
|
|
- Log.Debug($"该角色已经绑定");
|
|
|
- response.Error = ErrorCode.ERR_PlayerIdIsBind;
|
|
|
+ // 正常选角,判断参数
|
|
|
+ if (!session.GetComponent<SessionPlayerComponent>().PlayerList.ContainsKey(request.PlayerId))
|
|
|
+ {
|
|
|
+ Log.Debug($"选角出错,没有选择的角色");
|
|
|
+ response.Error = ErrorCode.ERR_BindPlayerError;
|
|
|
reply();
|
|
|
return;
|
|
|
- case > 0 when bindPlayerId != request.PlayerId:
|
|
|
- // todo 老角色下线
|
|
|
+ }
|
|
|
|
|
|
- break;
|
|
|
- }
|
|
|
+ playerInfo = session.GetComponent<SessionPlayerComponent>().PlayerList[request.PlayerId];
|
|
|
|
|
|
- Scene scene = session.DomainScene();
|
|
|
+ if (playerInfo == null)
|
|
|
+ {
|
|
|
+ Log.Debug($"选角出错,没有选择的角色");
|
|
|
+ response.Error = ErrorCode.ERR_BindPlayerError;
|
|
|
+ reply();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ long bindPlayerId = session.GetComponent<SessionPlayerComponent>().PlayerId;
|
|
|
+
|
|
|
+ switch (bindPlayerId)
|
|
|
+ {
|
|
|
+ case > 0 when bindPlayerId == request.PlayerId:
|
|
|
+ Log.Debug($"该角色已经绑定");
|
|
|
+ response.Error = ErrorCode.ERR_PlayerIdIsBind;
|
|
|
+ reply();
|
|
|
+ return;
|
|
|
+ case > 0 when bindPlayerId != request.PlayerId:
|
|
|
+ // todo 老角色下线
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
WNPlayer player = scene.GetComponent<GamePlayerComponent>().Get(request.PlayerId);
|
|
|
|