123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524 |
- using System;
- using GFGGame;
- namespace ET
- {
- public static class LoginHelper
- {
- public static async ETTask<(int, long)> LoginTest(Scene zoneScene, string address, string account,
- bool cancelDelete)
- {
- A2C_LoginAccount a2CLoginAccount = null;
- Session accountSession = null;
- try
- {
- accountSession = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(address));
- a2CLoginAccount = (A2C_LoginAccount)await accountSession.Call(new C2A_LoginTest()
- {
- Account = account,
- Version = GameConst.SERVER_VERSION,
- PlatformId = LauncherConfig.platformId,
- ChannelId = LauncherConfig.ChannelId,
- CancelDelete = cancelDelete,
- Token = QDDouYouManager.Instance.token
- });
- }
- catch (Exception e)
- {
- accountSession?.Dispose();
- Log.Debug(e.ToString());
- return (ErrorCode.ERR_NetWorkError, 0);
- }
- if (a2CLoginAccount.Error != ErrorCode.ERR_Success)
- {
- accountSession?.Dispose();
- return (a2CLoginAccount.Error, a2CLoginAccount.DeleteTime);
- }
- OnLoginSuccess(zoneScene, a2CLoginAccount, accountSession, account);
- return (ErrorCode.ERR_Success, 0);
- }
- public static async ETTask<(int, long)> Login(Scene zoneScene, string address, string account, string password,
- bool isMD5, bool cancelDelete)
- {
- A2C_LoginAccount a2CLoginAccount = null;
- Session accountSession = null;
- try
- {
- accountSession = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(address));
- var passwordMD5 = password;
- //密码禁止明文传输
- if (!isMD5)
- {
- passwordMD5 = MD5Helper.stringMD5(password);
- }
- a2CLoginAccount = (A2C_LoginAccount)await accountSession.Call(new C2A_LoginAccount()
- {
- Account = account,
- Password = passwordMD5,
- Version = GameConst.SERVER_VERSION,
- PlatformId = LauncherConfig.platformId,
- ChannelId = LauncherConfig.ChannelId,
- CancelDelete = cancelDelete
- });
- }
- catch (Exception e)
- {
- accountSession?.Dispose();
- Log.Debug(e.ToString());
- return (ErrorCode.ERR_NetWorkError, 0);
- }
- if (a2CLoginAccount.Error != ErrorCode.ERR_Success)
- {
- accountSession?.Dispose();
- return (a2CLoginAccount.Error, a2CLoginAccount.DeleteTime);
- }
- OnLoginSuccess(zoneScene, a2CLoginAccount, accountSession, account);
- return (ErrorCode.ERR_Success, 0);
- }
- public static void OnLoginSuccess(Scene zoneScene, A2C_LoginAccount a2CLoginAccount, Session accountSession,
- string account)
- {
- zoneScene.GetComponent<SessionComponent>().AccountSession = accountSession;
- accountSession.AddComponent<PingComponent>();
- accountSession.AddComponent<DisConnectedCompnent>().SessionState = SessionState.Login;
- zoneScene.GetComponent<SessionComponent>().SessionState = SessionState.Login;
- AccountInfoComponent accountInfoComponent = zoneScene.GetComponent<AccountInfoComponent>();
- accountInfoComponent.Token = a2CLoginAccount.Token;
- accountInfoComponent.AccountId = a2CLoginAccount.AccountId;
- accountInfoComponent.Account = account;
- accountInfoComponent.Age = a2CLoginAccount.Age;
- }
- public static async ETTask<int> Register(Scene zoneScene, string address, string account, string password,
- string name, string identityNum, string code)
- {
- A2C_Register r2C_Register = null;
- Session session = null;
- try
- {
- session = zoneScene.GetComponent<NetKcpComponent>().Create(NetworkHelper.ToIPEndPoint(address));
- {
- //密码禁止明文传输
- var passwordMD5 = MD5Helper.stringMD5(password);
- r2C_Register = (A2C_Register)await session.Call(new C2A_Register()
- {
- Account = account,
- Password = passwordMD5,
- Name = name,
- IdentityNum = identityNum,
- Code = code,
- PlatformId = LauncherConfig.platformId,
- ChannelId = LauncherConfig.ChannelId
- });
- if (r2C_Register.Error != ErrorCode.ERR_Success)
- {
- return r2C_Register.Error;
- }
- }
- }
- catch (Exception e)
- {
- session?.Dispose();
- Log.Debug(e.ToString());
- return ErrorCode.ERR_NetWorkError;
- }
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<int> GetServerInfos(Scene zoneScene)
- {
- A2C_GetServerInfos a2C_GetServerInfos = null;
- try
- {
- a2C_GetServerInfos = (A2C_GetServerInfos)await zoneScene.GetComponent<SessionComponent>().AccountSession
- ?.Call(new C2A_GetServerInfos()
- {
- AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
- Token = zoneScene.GetComponent<AccountInfoComponent>().Token
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- return ErrorCode.ERR_NetWorkError;
- }
- if (a2C_GetServerInfos.Error != ErrorCode.ERR_Success)
- {
- return a2C_GetServerInfos.Error;
- }
- zoneScene.GetComponent<ServerInfosComponent>()?.ServerInfoList?.Clear();
- foreach (var serverInfoProto in a2C_GetServerInfos.ServerInfosList)
- {
- ServerInfo serverInfo = zoneScene.GetComponent<ServerInfosComponent>().AddChild<ServerInfo>();
- serverInfo.FromMessage(serverInfoProto);
- zoneScene.GetComponent<ServerInfosComponent>().Add(serverInfo);
- }
- zoneScene.GetComponent<ServerInfosComponent>().SetRecentlyServerInfo(a2C_GetServerInfos.RecentId);
- await ETTask.CompletedTask;
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<int> GetRoles(Scene zoneScene)
- {
- A2C_GetRoles a2C_GetRoles = null;
- try
- {
- a2C_GetRoles = (A2C_GetRoles)await zoneScene.GetComponent<SessionComponent>().AccountSession.Call(
- new C2A_GetRoles()
- {
- AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
- Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
- ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- return ErrorCode.ERR_NetWorkError;
- }
- if (a2C_GetRoles.Error != ErrorCode.ERR_Success)
- {
- //Log.Error(a2C_GetRoles.Error.ToString());
- return a2C_GetRoles.Error;
- }
- zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.Clear();
- foreach (var roleInfoProto in a2C_GetRoles.RoleInfos)
- {
- RoleInfo roleInfo = zoneScene.GetComponent<RoleInfosComponent>().AddChild<RoleInfo>();
- roleInfo.FromMessage(roleInfoProto);
- zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.Add(roleInfo);
- }
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<int> CreateRole(Scene zoneScene, string name)
- {
- A2C_CreateRole a2C_CreateRole = null;
- try
- {
- a2C_CreateRole = (A2C_CreateRole)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(
- new C2A_CreateRole
- {
- AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
- Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
- Name = name,
- ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- return ErrorCode.ERR_NetWorkError;
- }
- if (a2C_CreateRole.Error != ErrorCode.ERR_Success)
- {
- //Log.Error(a2C_CreateRole.Error.ToString());
- return a2C_CreateRole.Error;
- }
- RoleInfo newRoleInfo = zoneScene.GetComponent<RoleInfosComponent>().AddChild<RoleInfo>();
- newRoleInfo.FromMessage(a2C_CreateRole.RoleInfo);
- zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.Add(newRoleInfo);
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<int> DeleteRole(Scene zoneScene, long roleId)
- {
- A2C_DeleteRole a2C_DeleteRole = null;
- try
- {
- a2C_DeleteRole = (A2C_DeleteRole)await zoneScene.GetComponent<SessionComponent>().AccountSession?.Call(
- new C2A_DeleteRole()
- {
- AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
- Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
- RoleInfoId = roleId,
- ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- return ErrorCode.ERR_NetWorkError;
- }
- if (a2C_DeleteRole.Error != ErrorCode.ERR_Success)
- {
- //Log.Error(a2C_DeleteRole.Error.ToString());
- return a2C_DeleteRole.Error;
- }
- int index = zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.FindIndex((info) =>
- {
- return info.Id == a2C_DeleteRole.DeleteRoleInfoId;
- });
- zoneScene.GetComponent<RoleInfosComponent>().RoleInfos.RemoveAt(index);
- await ETTask.CompletedTask;
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<int> GetRealmKey(Scene zoneScene)
- {
- A2C_GetRealmKey a2C_GetRealmKey = null;
- try
- {
- a2C_GetRealmKey = (A2C_GetRealmKey)await zoneScene.GetComponent<SessionComponent>().AccountSession
- ?.Call(new C2A_GetRealmKey()
- {
- AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
- Token = zoneScene.GetComponent<AccountInfoComponent>().Token,
- ServerId = zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId,
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- return ErrorCode.ERR_NetWorkError;
- }
- if (a2C_GetRealmKey.Error != ErrorCode.ERR_Success)
- {
- //Log.Error(a2C_GetRealmKey.Error.ToString());
- return a2C_GetRealmKey.Error;
- }
- zoneScene.GetComponent<AccountInfoComponent>().RealmKey = a2C_GetRealmKey.RealmKey;
- zoneScene.GetComponent<AccountInfoComponent>().RealmAddress = a2C_GetRealmKey.RealmAddress;
- zoneScene.GetComponent<SessionComponent>().DisconnectAccount();
- await ETTask.CompletedTask;
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<int> EnterGame(Scene zoneScene)
- {
- string realmAddress = zoneScene.GetComponent<AccountInfoComponent>().RealmAddress;
- //1.连接Realm,获取分配的Gate
- R2C_LoginRealm r2C_LoginRealm = null;
- Session session = zoneScene.GetComponent<NetKcpComponent>()
- .Create(NetworkHelper.ToIPEndPoint(realmAddress));
- try
- {
- r2C_LoginRealm = (R2C_LoginRealm)await session.Call(new C2R_LoginRealm()
- {
- AccountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId,
- RealmTokenKey = zoneScene.GetComponent<AccountInfoComponent>().RealmKey
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- session?.Dispose();
- return ErrorCode.ERR_NetWorkError;
- }
- session?.Dispose();
- if (r2C_LoginRealm.Error != ErrorCode.ERR_Success)
- {
- return r2C_LoginRealm.Error;
- }
- LogUtil.LogDev($"GateAddress : {r2C_LoginRealm.GateAddress}");
- Session gateSession = zoneScene.GetComponent<NetKcpComponent>()
- .Create(NetworkHelper.ToIPEndPoint(r2C_LoginRealm.GateAddress));
- gateSession.AddComponent<PingComponent>();
- gateSession.AddComponent<DisConnectedCompnent>().SessionState = SessionState.Gate;
- zoneScene.GetComponent<SessionComponent>().GateSession = gateSession;
- zoneScene.GetComponent<SessionComponent>().SessionState = SessionState.Gate;
- //2.开始连接Gate
- long currentRoleId = zoneScene.GetComponent<RoleInfosComponent>().CurrentRoleId;
- G2C_LoginGate g2C_LoginGate = null;
- try
- {
- long accountId = zoneScene.GetComponent<AccountInfoComponent>().AccountId;
- g2C_LoginGate = (G2C_LoginGate)await gateSession.Call(new C2G_LoginGate()
- {
- Key = r2C_LoginRealm.GateSessionKey,
- AccountId = accountId,
- RoleId = currentRoleId
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- zoneScene.GetComponent<SessionComponent>().GateSession?.Dispose();
- return ErrorCode.ERR_NetWorkError;
- }
- if (g2C_LoginGate.Error != ErrorCode.ERR_Success)
- {
- zoneScene.GetComponent<SessionComponent>().GateSession?.Dispose();
- return g2C_LoginGate.Error;
- }
- LogUtil.LogDev("登陆gate成功!");
- //3.角色正式请求进入游戏逻辑服
- G2C_EnterGame g2C_EnterGame = null;
- try
- {
- g2C_EnterGame = (G2C_EnterGame)await gateSession.Call(new C2G_EnterGame() { });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- zoneScene.GetComponent<SessionComponent>().GateSession.Dispose();
- return ErrorCode.ERR_NetWorkError;
- }
- if (g2C_EnterGame.Error != ErrorCode.ERR_Success)
- {
- //Log.Error(g2C_EnterGame.Error.ToString());
- return g2C_EnterGame.Error;
- }
- zoneScene.GetComponent<PlayerComponent>().MyId = g2C_EnterGame.MyId;
- var result = await GameGlobal.zoneScene.GetComponent<ObjectWait>()
- .Wait<ET.WaitType.Wait_SceneChangeStart>();
- if (result.Error == WaitTypeError.Cancel)
- {
- return ErrorCode.ERR_Cancel;
- }
- LogUtil.LogDev("角色进入游戏成功!");
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<int> ReqGetLatestNotice()
- {
- A2C_GetLatestNotice response = null;
- try
- {
- response = (A2C_GetLatestNotice)await GameGlobal.zoneScene.GetComponent<SessionComponent>()
- .AccountSession?.Call(new C2A_GetLatestNotice());
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- return ErrorCode.ERR_NetWorkError;
- }
- if (response.Error != ErrorCode.ERR_Success)
- {
- //Log.Error(response.Error.ToString());
- return response.Error;
- }
- NoticeInfo noticeInfo = new NoticeInfo();
- noticeInfo.noticeId = response.NoticeId;
- noticeInfo.title = response.Title;
- noticeInfo.time = response.TimeSec * 1000;
- noticeInfo.content = response.Content;
- NoticeDataManager.Instance.LastNoticeInfo = noticeInfo;
- return ErrorCode.ERR_Success;
- }
- public static async ETTask<(int, string)> ReqRandomRoleName()
- {
- A2C_GetRandomRoleName response = null;
- bool notLogin = false;
- Session accountSession = GameGlobal.zoneScene.GetComponent<SessionComponent>().AccountSession;
- if (accountSession == null || accountSession.IsDisposed)
- {
- notLogin = true;
- accountSession = GameGlobal.zoneScene.GetComponent<NetKcpComponent>()
- .Create(NetworkHelper.ToIPEndPoint(GameConfig.LoginAddress));
- }
- try
- {
- response = (A2C_GetRandomRoleName)await accountSession?.Call(new C2A_GetRandomRoleName()
- {
- ServerId = GameGlobal.zoneScene.GetComponent<ServerInfosComponent>().CurrentServerId
- });
- }
- catch (Exception e)
- {
- Log.Debug(e.ToString());
- if (notLogin)
- {
- accountSession?.Dispose();
- }
- return (ErrorCode.ERR_NetWorkError, "");
- }
- if (response.Error != ErrorCode.ERR_Success)
- {
- //Log.Error(response.Error.ToString());
- if (notLogin)
- {
- accountSession?.Dispose();
- }
- return (ErrorCode.ERR_NetWorkError, "");
- }
- if (notLogin)
- {
- accountSession?.Dispose();
- }
- return (ErrorCode.ERR_Success, response.Name);
- }
- //玩家信息登记
- public static async ETTask<int> RegisterRoleInfo(Scene zoneScene, string account,
- string password,
- string name, string identityNum, string code, string phoneNumber)
- {
- var passwordMD5 = MD5Helper.stringMD5(password);
- M2C_RegisterRoleInfo response = (M2C_RegisterRoleInfo)await MessageHelper.SendToServer(
- new C2M_RegisterRoleInfo
- {
- PhoneNumber = phoneNumber,
- VerificationCode = code,
- Account = account,
- Password = passwordMD5,
- IdCard = identityNum,
- CardName = name
- });
- if (response.Error != ErrorCode.ERR_Success)
- {
- return response.Error;
- }
- else
- {
- BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(response.RewardList));
- }
- return ErrorCode.ERR_Success;
- }
- }
- }
|