using Fantasy; using Fantasy.Async; using Fantasy.Network; using Fantasy.Platform.Net; using NB.Chat; using NB.Game; // ReSharper disable ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract namespace NB.Gate; public static class GateLoginHelper { #region 上线 /// /// 网关通知其他服务器上线 /// /// public static async FTask Online(GateUnit gateUnit) { if (gateUnit == null) { return ErrorCode.ErrArgs; } Session session = gateUnit.Session; if (session == null) { return ErrorCode.ErrArgs; } var gateUnitSessionComponent = session.GetComponent(); if (gateUnitSessionComponent == null) { gateUnitSessionComponent = session.AddComponent(); } var routeComponent = session.GetComponent(); if (routeComponent == null) { session.AddComponent(); } gateUnitSessionComponent.AccountID = gateUnit.AccountID; gateUnitSessionComponent.SessionId = session.RuntimeId; return await gateUnit.Online(RouteType.GameRoute, RouteType.SocialRoute, RouteType.MapRoute); } #endregion #region 下线 /// /// 网关通知其他服务器下线 /// /// /// public static async FTask Offline(GateUnit gateUnit, long sessionId) { //通知服务器下线 Log.Info($"断线的session id={sessionId}"); var ret = await gateUnit.Offline(sessionId, RouteType.GameRoute, RouteType.SocialRoute, RouteType.MapRoute); // await GameSceneHelper.Offline(gateUnit.Scene, gateUnit.AccountID, sessionId); // await SocialSceneHelper.Offline(gateUnit.Scene, gateUnit.AccountID, sessionId, // gateUnit.ChatSceneRouteId); return ret; } #endregion }