using System; using Fantasy; using Fantasy.Async; using Fantasy.Network.Interface; using NB.Chat; using NB.Game; using NBF.Social; namespace NB.Common; public class G2Common_ExitRequestHandler : AddressRPC { protected override async FTask Run(Scene scene, G2Common_ExitRequest request, Common2G_ExitResponse response, Action reply) { switch (scene.SceneType) { case SceneType.Game: { await RunGame(scene, request, response); break; } case SceneType.Social: { await RunSocial(scene, request, response); break; } // case SceneType.Map: // { // await RunMap(scene, request, response); // break; // } } await FTask.CompletedTask; } private async FTask RunGame(Scene scene, G2Common_ExitRequest request, Common2G_ExitResponse response) { // 在缓存中检查该账号是否存在 var gameAccountManageComponent = scene.GetComponent(); await gameAccountManageComponent.Offline(request.AccountId, request.GateRouteId); Log.Info("退出游戏服成功=="); } private async FTask RunSocial(Scene scene, G2Common_ExitRequest request, Common2G_ExitResponse response) { // 在缓存中检查该账号是否存在 var chatUnitManageComponent = scene.GetComponent(); await chatUnitManageComponent.Offline(scene, request.AccountId, request.GateRouteId); Log.Info("退出聊天服成功=="); } // private async FTask RunMap(Scene scene, G2Common_ExitRequest request, Common2G_ExitResponse response) // { // await MapHelper.Offline(scene, request.AccountId, request.GateRouteId); // Log.Info("退出房间服成功=="); // } }