Beispiel #1
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();
            }
        }
Beispiel #2
0
        public static async Task Test2(Session rGateSession)
        {
            G2C_LoginGate g2CLoginGate = await NetworkClient.Instance.Call <G2C_LoginGate>(rGateSession, new C2G_LoginGate()
            {
                Key = key
            });

            Debug.LogError("登陆gate成功!");
            Debug.LogError(g2CLoginGate.PlayerId.ToString());
        }
Beispiel #3
0
        public static async ETTask Login(Scene clientScene, string account, string password)
        {
            try
            {
                // 创建一个ETModel层的Session
                R2C_Login r2CLogin;
                Session   session = null;
                try
                {
                    clientScene.RemoveComponent <RouterAddressComponent>();
                    // 获取路由跟realmDispatcher地址
                    RouterAddressComponent routerAddressComponent = clientScene.GetComponent <RouterAddressComponent>();
                    if (routerAddressComponent == null)
                    {
                        routerAddressComponent = clientScene.AddComponent <RouterAddressComponent, string, int>(ConstValue.RouterHttpHost, ConstValue.RouterHttpPort);
                        await routerAddressComponent.Init();

                        clientScene.AddComponent <NetKcpComponent, AddressFamily, int>(routerAddressComponent.RouterManagerIPAddress.AddressFamily, CallbackType.SessionStreamDispatcherClientOuter);
                    }
                    IPEndPoint realmAddress = routerAddressComponent.GetRealmAddress(account);

                    session = await RouterHelper.CreateRouterSession(clientScene, realmAddress);

                    {
                        r2CLogin = (R2C_Login)await session.Call(new C2R_Login()
                        {
                            Account = account, Password = password
                        });
                    }
                }
                finally
                {
                    session?.Dispose();
                }

                // 创建一个gate Session,并且保存到SessionComponent中
                Session gateSession = await RouterHelper.CreateRouterSession(clientScene, NetworkHelper.ToIPEndPoint(r2CLogin.Address));

                clientScene.AddComponent <SessionComponent>().Session = gateSession;

                G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(
                    new C2G_LoginGate()
                {
                    Key = r2CLogin.Key, GateId = r2CLogin.GateId
                });

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

                await Game.EventSystem.PublishAsync(clientScene, new EventType.LoginFinish());
            }
            catch (Exception e)
            {
                Log.Error(e);
            }
        }
        public static async Task Test2(NetworkSession rSession)
        {
            // 设置热更新端的Session
            HotfixNetworkClient.Instance.Session = rSession;
            G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await HotfixNetworkClient.Instance.Call(new C2G_LoginGate()
            {
                Key = LoginKey
            });

            Debug.LogError("PlayerID: " + g2CLoginGate.PlayerId);
        }
Beispiel #5
0
        public static async ETVoid Login(string account, string password)
        {
            try
            {
                NetworkLoading.Open(true);

                // 创建一个ETModel层的Session
                R2C_Login r2CLogin;
                using (Session session = Game.Scene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10002"))
                {
                    r2CLogin = (R2C_Login)await session.Call(new C2R_Login()
                    {
                        Account = account, Password = password
                    });
                }

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

                G2C_LoginGate g2CLoginGate =
                    (G2C_LoginGate)await gateSession.Call(new C2G_LoginGate()
                {
                    Key = r2CLogin.Key, GateId = r2CLogin.GateId
                });

                Game.Scene.AddComponent <SessionComponent, Session, long>(gateSession, g2CLoginGate.UId);

                if (g2CLoginGate.Error == ErrorCode.ERR_Success)
                {
                    OnLoginSuccess(g2CLoginGate);
                }
                else
                {
                    Dialog.Open(new Dialog.Args {
                        Title = "登录", Content = $"登录失败:{g2CLoginGate.Error}"
                    });
                }
            }
            catch (Exception e)
            {
                Dialog.Open(new Dialog.Args {
                    Title = "网络连接", Content = "无法连接网络!"
                });
            }
            finally
            {
                NetworkLoading.Close();
            }
        }
Beispiel #6
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);
        }
    }
Beispiel #7
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();
            }
        }
Beispiel #8
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);
                });
            }
        }
Beispiel #9
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);
        }
Beispiel #10
0
 private static void OnLoginSuccess(G2C_LoginGate data)
 {
     EventSystem.Instance.Publish(new LoginSuccess());
 }