Esempio n. 1
0
        public async void Run()
        {
            Game.Scene.AddComponent <MessageDispatherComponent, AppType>(AppType.Client);
            ClientConfig     clientConfig     = Game.Scene.AddComponent <ClientConfigComponent>().Config;
            NetworkComponent networkComponent = Game.Scene.AddComponent <NetOuterComponent>();
            Session          session          = networkComponent.Get(clientConfig.Address);

            try
            {
                R2C_Login s2CLogin = await session.Call <C2R_Login, R2C_Login>(new C2R_Login { Account = "abcdef", Password = "******" });

                networkComponent.Remove(session.Id);

                // 连接Gate
                Log.Debug(MongoHelper.ToJson(s2CLogin));
                Session gateSession = networkComponent.Get(s2CLogin.Address);
                await gateSession.Call <C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(s2CLogin.Key));

                Log.Info("连接Gate验证成功!");
            }
            catch (RpcException e)
            {
                Log.Error(e.ToString());
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
            }
        }
Esempio n. 2
0
        async void Start()
        {
            Session session = null;

            try
            {
                session = NetworkClient.Instance.Create("127.0.0.1:10002");

                R2C_Login r2CLogin = await session.Call <R2C_Login>(new C2R_Login()
                {
                    Account = "Test1", Password = "******"
                });

                Debug.LogError($"R2C_Login: {r2CLogin.Address}");

                gateSession = NetworkClient.Instance.Create(r2CLogin.Address);
                G2C_LoginGate g2CLoginGate = await gateSession.Call <G2C_LoginGate>(new C2G_LoginGate()
                {
                    Key = r2CLogin.Key
                });

                Debug.LogError("登陆gate成功!");
                Debug.LogError(g2CLoginGate.PlayerId.ToString());
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
            }
            finally
            {
                session?.Dispose();
            }
        }
Esempio n. 3
0
        public static async Task <string> Test1(Session rSession)
        {
            R2C_Login r2CLogin = await NetworkClient.Instance.Call <R2C_Login>(rSession, new C2R_Login()
            {
                Account = "Test1", Password = "******"
            });

            Debug.LogError($"R2C_Login: {r2CLogin.Address}");
            address = r2CLogin.Address;
            key     = r2CLogin.Key;
            return(r2CLogin.Address);
        }
Esempio n. 4
0
    public async void OnLogin()
    {
        SessionWrap sessionWrap = null;

        try
        {
            IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(GlobalConfigComponent.Instance.GlobalProto.Address);
            string     text           = pname.text;
            string     pass           = password.text;

            Session session = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);
            sessionWrap = new SessionWrap(session);
            R2C_Login r2CLogin = (R2C_Login)await sessionWrap.Call(new C2R_Login()
            {
                Account = text, Password = pass
            });

            sessionWrap.Dispose();

            connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address);
            Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);
            Game.Scene.AddComponent <SessionWrapComponent>().Session = new SessionWrap(gateSession);
            Game.Scene.AddComponent <SessionComponent>().Session     = gateSession;
            G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await SessionWrapComponent.Instance.Session.Call(new C2G_LoginGate()
            {
                Key = r2CLogin.Key
            });

            Log.Info("登陆gate成功!");
            uiLogin.SetActive(false);
            uiLobby.SetActive(true);

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

            //Game.Scene.GetComponent<UIComponent>().Create(UIType.UILobby);
            //Game.Scene.GetComponent<UIComponent>().Remove(UIType.UILogin);
        }
        catch (Exception e)
        {
            sessionWrap?.Dispose();
            Log.Error(e);
        }
    }
Esempio n. 5
0
        public static async Task <string> Test1(NetworkSession rSession)
        {
            var rTest2 = new HotfixNetworkTest2();
            await rTest2.Initialize();

            EventManager.Instance.Distribute(GameEvent.EVENT_TEST_1, "hahahahahaha...");

            // 设置热更新端的Session
            HotfixNetworkClient.Instance.Session = rSession;

            // Login
            R2C_Login r2CLogin = (R2C_Login)await HotfixNetworkClient.Instance.Call(new C2R_Login()
            {
                Account = "WinddyHe", Password = "******"
            });

            Debug.LogError("Address: " + r2CLogin.Address);
            LoginKey = r2CLogin.Key;

            return(r2CLogin.Address);
        }
Esempio n. 6
0
        public async void Login()
        {
            Session session = null;

            try
            {
                IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint("127.0.0.1:10002");
                session = NetworkClient.Instance.Create(connetEndPoint);

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

                Debug.LogError($"R2C_Login: {r2CLogin.Address}");

                if (string.IsNullOrEmpty(r2CLogin.Address))
                {
                    return;
                }

                connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address);
                gateSession    = NetworkClient.Instance.Create(connetEndPoint);
                G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(new C2G_LoginGate()
                {
                    Key = r2CLogin.Key
                });

                Debug.LogError("登陆gate成功!");
                Debug.LogError(g2CLoginGate.PlayerId.ToString());
            }
            catch (Exception e)
            {
                Log.Error(e.ToString());
            }
            finally
            {
                session?.Dispose();
            }
        }
Esempio n. 7
0
        private async void OnClickLogin()
        {
            Debug.Log("Login");
            Session session = ETModel.Game.Scene.GetComponent <SessionComponent>().Session;

            if (session != null)
            {
                R2C_Login r2C_Login = (R2C_Login)await session.Call(
                    new C2R_Login()
                {
                    Account = mInputEmail.text, Password = mInputPass.text
                }
                    );

                session.Dispose();
                IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(r2C_Login.Address);
                Session    gateSession    = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint);
                ETModel.Game.Scene.GetComponent <ETModel.SessionComponent>().Session = gateSession;

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

                Debug.Log("LoginToGateServer");
                Player          player          = ETModel.ComponentFactory.CreateWithId <Player>(g2CLoginGate.PlayerId);
                PlayerComponent playerComponent = ETModel.Game.Scene.GetComponent <PlayerComponent>();
                playerComponent.MyPlayer = player;
                Debug.Log(player.Id);
                Debug.Log(player.UnitId);
                RoleModel.Instance.OnRevInfo(g2CLoginGate.BaseInfo);
                PreloadManager.Instance.OnLoginEnterMainScenePreload(() =>
                {
                    SceneManager.Instance.EnterSceneById(1);
                });
            }
        }
Esempio n. 8
0
        public static async ETVoid Login(LoginViewComponent self, string account, string password)
        {
            #region 客户端给服务器发送登陆信息
            // 创建一个ETModel层的Session
            ETModel.Session session = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(GlobalConfigComponent.Instance.GlobalProto.Address);

            Log.Info("服务器地址 : " + GlobalConfigComponent.Instance.GlobalProto.Address);
            // 创建一个ETHotfix层的Session, ETHotfix的Session会通过ETModel层的Session发送消息
            Session   realmSession = ComponentFactory.Create <Session, ETModel.Session>(session);
            R2C_Login r2CLogin     = (R2C_Login)await realmSession.Call(new C2R_Login()
            {
                Account = account, Password = password
            });

            realmSession.Dispose();

            #endregion

            if (r2CLogin.Error != ErrorCode.ERR_Success)
            {
                SetErrorPrompt(self, Message.Get(r2CLogin.ErrorMessageId));
                return;
            }


            #region 客户端根据服务器下发的网关地址连接网关

            Log.Info("服务器下发的网关地址 : " + r2CLogin.Address);
            Log.Info("服务器下发的网关验证码 : " + r2CLogin.Key);

            // 创建一个ETModel层的Session,并且保存到ETModel.SessionComponent中
            ETModel.Session gateSession = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address);
            ETModel.Game.Scene.AddComponent <ETModel.SessionComponent>().Session = gateSession;

            // 创建一个ETHotfix层的Session, 并且保存到ETHotfix.SessionComponent中
            Game.Scene.AddComponent <SessionComponent>().Session = ComponentFactory.Create <Session, ETModel.Session>(gateSession);



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

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

            #endregion

            // 创建Player
            Player player = ETModel.ComponentFactory.CreateWithId <Player>(g2CLoginGate.PlayerId);

            PlayerComponent playerComponent = ETModel.Game.Scene.GetComponent <PlayerComponent>();

            playerComponent.MyPlayer = player;

            // 测试消息有成员是class类型
            G2C_PlayerInfo g2CPlayerInfo = (G2C_PlayerInfo)await SessionComponent.Instance.Session.Call(new C2G_PlayerInfo());


            // 加载Unit资源
            ResourcesComponent resourcesComponent = ETModel.Game.Scene.GetComponent <ResourcesComponent>();

            // 加载场景资源
            await resourcesComponent.LoadBundleAsync("start.unity3d");

            // 切换到Battle场景
            using (SceneChangeComponent sceneChangeComponent = Game.Scene.AddComponent <SceneChangeComponent>())
            {
                await sceneChangeComponent.ChangeSceneAsync(SceneType.Start);
            }

            // 逻辑层不应该去调用UI,逻辑层只关心逻辑并且抛出事件,由UI层自己去订阅事件,而且注意事件名字
            // 很多人容易把这个事件取名成LoginFinishiCreateLobbyUI,这是不对的,事件抛出去不可能知道谁订阅了这个事件,
            // 也不会知道别人订阅这个事件是干什么的,这里只知道我Login Finish
            //Game.EventSystem.Run(EventIdType.LoginFinish);
            Game.EventSystem.Run(EventIdType.LoginHasFinish);
        }