Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
        }