12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using System;
- using System.Net;
- using System.Net.Sockets;
- namespace ET.Client
- {
- public static class LoginHelper
- {
- public static async ETTask<int> Login(Scene clientScene, string account, string password)
- {
- try
- {
-
- clientScene.RemoveComponent<RouterAddressComponent>();
-
- RouterAddressComponent routerAddressComponent = clientScene.GetComponent<RouterAddressComponent>();
- if (routerAddressComponent == null)
- {
- routerAddressComponent =
- clientScene.AddComponent<RouterAddressComponent, string, int>(ConstValue.RouterHttpHost, ConstValue.RouterHttpPort);
- await routerAddressComponent.Init();
- clientScene.AddComponent<NetClientComponent, AddressFamily>(routerAddressComponent.RouterManagerIPAddress.AddressFamily);
- }
- IPEndPoint realmAddress = routerAddressComponent.GetRealmAddress(account);
-
- R2C_Login r2CLogin;
- using (Session session = await RouterHelper.CreateRouterSession(clientScene, realmAddress))
- {
- r2CLogin = (R2C_Login)await session.Call(new C2R_Login() { Account = account, Password = MD5Helper.StringMD5(password) });
- }
- if (r2CLogin.Error != ErrorCode.ERR_Success)
- {
- Log.Debug($"登陆验证错误...errCode={r2CLogin.Error}");
- return r2CLogin.Error;
- }
-
- Session gateSession = await RouterHelper.CreateRouterSession(clientScene, NetworkHelper.ToIPEndPoint(r2CLogin.Address[0]));
-
- G2C_LoginGame g2CLoginGate = (G2C_LoginGame)await gateSession.Call(new C2G_LoginGame() { Token = r2CLogin.Token, UserId = r2CLogin.UserId });
- if (g2CLoginGate.Error != ErrorCode.ERR_Success)
- {
- Log.Debug($"登陆game错误...errCode={g2CLoginGate.Error}");
- return g2CLoginGate.Error;
- }
-
- clientScene.AddComponent<SessionComponent>().Session = gateSession;
- var accountComponet = clientScene.AddComponent<AccountInfoComponent>();
- accountComponet.Token = r2CLogin.Token;
- accountComponet.UserId = r2CLogin.UserId;
- Log.Debug($"登陆game成功...token={r2CLogin.Token}, userId={r2CLogin.UserId}");
-
-
-
- var ret = (G2C_BindPlayer)await gateSession.Call(new C2G_BindPlayer() { PlayerId = 0 });
- await EventSystem.Instance.PublishAsync(clientScene, new EventType.LoginFinish() { player = ret.Player});
- }
- catch (Exception e)
- {
- Log.Error($"登陆出错...{e.Message}");
- return ErrorCode.ERR_LoginError;
- }
- return ErrorCode.ERR_Success;
- }
- }
- }
|