private static void CreatePlayer(AccountRealm account, LoginType loginType) { //获取用户组件 PlayerComponent playerComponent = CentorPivot.This.GetComponent <PlayerComponent>(); //移除所有子用户 playerComponent.RemoveAllChild(); playerComponent.RemoveComponent <Player>(); long userID = long.Parse(account.SUID); //添加当前登陆用户 Player player = playerComponent.AddComponent <Player, long>(userID); player.PlayerInfo = new PlayerInfo(); player.PlayerInfo.UserID = userID; player.PlayerInfo.NickName = account.NickName; player.PlayerInfo.AuthorizedSKey = account.AuthorizedSKey; player.PlayerInfo.DateTime = DateTime.Now; player.PlayerInfo.Status = AccountStatus.Normal; player.PlayerInfo.LoginType = loginType; //选择新的用户登录时候 需要设置临时存储用户信息 player.ChangingPlayerInfo = player.PlayerInfo; //添加为主用户 playerComponent.MainPlayer = player; //存储本次登录信息到本地 LoginCallBackForSavePlayer(player); }
private static void ConnectToGate(AccountRealm account) { //NetOuterComponent netOuter = CentorPivot.This.GetComponent<NetOuterComponent>(); //if (SessionComponent.Instance.Session != null) //{ // netOuter.Remove(SessionComponent.Instance.Session.Id); //} //Session gateSession = netOuter.Create(account.GateAddress); //SessionComponent.Instance.Session = gateSession; //if (!SessionComponent.Instance.Session.IsDisposed) //{ // SessionComponent.Instance.Session.AddComponent<HeartBeatComponent>().CurrentTime = Utility.Timer.ClientNowSeconds(); //} //else //{ // Log.Error("网关连接异常{0}", account.GateAddress, LogCategory.Proto); //} //// 创建一个ClientH层的Session, 并且保存到ClientH.SessionComponent中 //HInstance.He.AddComponent<SessionComponent>().Session = ComponentFactory.Create<Session, ClientM.Session>(gateSession); }
private static async void LoginFromRealmCallback(string data, LoginType loginType, TimeAction timeAction) { AccountRealm account = JsonHelper.ToObject <AccountRealm>(data); Log.Info("Gate网关地址" + account.GateAddress); Log.Info("GateLoginKey" + account.GateLoginKey); //连接到网关 ConnectToGate(account); //登录到被分配的gate网关 await LoginToGate(account, loginType, timeAction); }
private static async CFTask LoginToGate(AccountRealm account, LoginType loginType, TimeAction timeAction) { //O0002_G2C_LoginGate g2CLoginGate = (O0002_G2C_LoginGate)await SessionComponent.Instance.Session.Call(new O0002_C2G_LoginGate() { GateLoginKey = account.GateLoginKey }); //if (g2CLoginGate.Error == ErrorCode.ERR_Success) //{ // //创建本地玩家 // CreatePlayer(account, loginType); //} //else //{ // Log.Error(g2CLoginGate.Error.ToString(), LogCategory.Proto); //} //结束time调用 timeAction?.EndLoop(); }