Пример #1
0
        private async void OnLogin()
        {
            Session session = null;

            try
            {
                session = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10002");
                string    text     = this.account.GetComponent <InputField>().text;
                R2C_Login r2CLogin = await session.Call <R2C_Login>(new C2R_Login()
                {
                    Account = text, Password = "******"
                });

                Session gateSession = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address);
                Game.Scene.AddComponent <SessionComponent>().Session = gateSession;

                G2C_LoginGate g2CLoginGate = await SessionComponent.Instance.Session.Call <G2C_LoginGate>(new C2G_LoginGate(r2CLogin.Key));

                Log.Info("登陆gate成功!");

                Hotfix.Scene.GetComponent <UIComponent>().Create(UIType.Lobby);
                Hotfix.Scene.GetComponent <UIComponent>().Remove(UIType.Login);
            }
            catch (Exception e)
            {
                Log.Error(e.ToStr());
            }
            finally
            {
                session?.Dispose();
            }
        }
Пример #2
0
        public static async void Login()
        {
            try
            {
                Game.Scene.AddComponent <MessageDispatherComponent, AppType>(AppType.Client);
                ClientConfig      clientConfig     = Game.Scene.AddComponent <ClientConfigComponent>().Config.GetComponent <ClientConfig>();
                NetOuterComponent networkComponent = Game.Scene.AddComponent <NetOuterComponent>();
                using (Session session = networkComponent.Create(clientConfig.Address))
                {
                    R2C_Login s2CLogin = await session.Call <C2R_Login, R2C_Login>(new C2R_Login { Account = "abcdef", Password = "******" });

                    networkComponent.Remove(session.Id);

                    // 连接Gate
                    using (Session gateSession = networkComponent.Create(s2CLogin.Address))
                    {
                        await gateSession.Call <C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(s2CLogin.Key));
                    }

                    Log.Info("连接Gate验证成功!");
                }
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
            }
        }
Пример #3
0
        private async void OnCreateRoom()
        {
            Session session = null;

            try
            {
                session = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10001");
                R2C_Login r2CLogin = await session.Call <C2R_Login, R2C_Login>(new C2R_Login()
                {
                    Account = "abcdef", Password = "******"
                });

                Session       gateSession  = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address);
                G2C_LoginGate g2CLoginGate = await gateSession.Call <C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(r2CLogin.Key));

                Log.Info("登陆gate成功!");
            }
            catch (Exception e)
            {
                Log.Error(e.ToStr());
            }
            finally
            {
                session?.Dispose();
            }
        }
Пример #4
0
        /// <summary>
        /// 接收消息回调函数
        /// </summary>
        private void OnHandleHotfixMsg(NetReceivePackage package)
        {
            Type   msgType  = _msgTypes.GetValueByKey(package.Type);
            object instance = Activator.CreateInstance(msgType);
            var    message  = ProtobufHelper.Decode(instance, package.ProtoBodyData);

            Debug.Log($"Handle net message : {package.Type}");

            // TODO 可以在这里分发消息到逻辑层
            R2C_Login loginMsg = message as R2C_Login;

            if (loginMsg != null)
            {
                Debug.Log($"R2C_Login = {loginMsg.Address}");
                Debug.Log($"R2C_Login = {loginMsg.Key}");
            }
        }
Пример #5
0
        public async void OnLogin()
        {
            try
            {
                IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(GlobalConfigComponent.Instance.GlobalProto.Address);
                Session    session        = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);
                string     text           = this.account.GetComponent <InputField>().text;


                R2C_Login r2CLogin = (R2C_Login)await session.Call(new C2R_Login()
                {
                    Account = text, Password = "******"
                }, true);

                if (r2CLogin.Error != ErrorCode.ERR_Success)
                {
                    Log.Error(r2CLogin.Error.ToString());
                    return;
                }

                connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address);
                Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);
                Game.Scene.AddComponent <SessionComponent>().Session = gateSession;

                G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await SessionComponent.Instance.Session.Call(new C2G_LoginGate()
                {
                    Key = r2CLogin.Key
                }, true);

                Log.Info("登陆gate成功!");

                // 创建Player
                Player          player          = Model.EntityFactory.CreateWithId <Player>(g2CLoginGate.PlayerId);
                PlayerComponent playerComponent = Game.Scene.GetComponent <PlayerComponent>();
                playerComponent.MyPlayer = player;

                Hotfix.Scene.GetComponent <UIComponent>().Create(UIType.UILobby);
                Hotfix.Scene.GetComponent <UIComponent>().Remove(UIType.UILogin);
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
            }
        }
Пример #6
0
        private async void OnLogin()
        {
            Session session = null;

            try
            {
                session = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10002");
                string    account  = this.account.GetComponent <InputField>().text;
                R2C_Login r2CLogin = await session.Call <R2C_Login>(new C2R_Login()
                {
                    Account = account, Password = "******"
                });

                Session       gateSession  = Hotfix.Scene.ModelScene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address);
                G2C_LoginGate g2CLoginGate = await gateSession.Call <G2C_LoginGate>(new C2G_LoginGate(r2CLogin.Key));

                //Log.Debug($"{JsonHelper.ToJson(g2CLoginGate)}");

                Log.Info("登陆gate成功!");

                // 发送一个actor消息
                gateSession.Send(new Actor_Test()
                {
                    Info = "message client->gate->map->gate->client"
                });

                // 向actor发起一次rpc调用
                ActorRpc_TestResponse response = await gateSession.Call <ActorRpc_TestResponse>(new ActorRpc_TestRequest()
                {
                    request = "request actor test rpc"
                });

                Log.Info($"recv response: {JsonHelper.ToJson(response)}");
            }
            catch (Exception e)
            {
                Log.Error(e.ToStr());
            }
            finally
            {
                session?.Dispose();
            }
        }
Пример #7
0
        private void LoginOK(AResponse response)
        {
            R2C_Login r2CLogin = (R2C_Login)response;

            if (r2CLogin.Error != ErrorCode.ERR_Success)
            {
                Log.Error(r2CLogin.Error.ToString());
                return;
            }

            Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address);

            Game.Scene.AddComponent <SessionComponent>().Session = gateSession;

            SessionComponent.Instance.Session.CallWithAction(new C2G_LoginGate()
            {
                Key = r2CLogin.Key
            },
                                                             (response2) => LoginGateOk(response2)
                                                             );
        }
Пример #8
0
        private void LoginOK(Session loginSession, AResponse response)
        {
            loginSession.Dispose();
            R2C_Login r2CLogin = (R2C_Login)response;

            if (r2CLogin.Error != ErrorCode.ERR_Success)
            {
                Log.Error(r2CLogin.Error.ToString());
                return;
            }

            IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address);
            Session    gateSession    = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);

            Game.Scene.AddComponent <SessionComponent>().Session = gateSession;

            SessionComponent.Instance.Session.CallWithAction(new C2G_LoginGate()
            {
                Key = r2CLogin.Key
            },
                                                             (response2) => LoginGateOk(response2)
                                                             );
        }