Files
Fishing2Server/Hotfix/Common/Handler/G2Common_ExitRequestHandler.cs
2025-12-15 12:30:45 +08:00

58 lines
1.9 KiB
C#

using Fantasy;
using Fantasy.Async;
using Fantasy.Network.Interface;
using NB.Chat;
using NB.Game;
namespace NB.Common;
public class G2Common_ExitRequestHandler : RouteRPC<Scene, G2Common_ExitRequest, Common2G_ExitResponse>
{
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<PlayerManageComponent>();
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<SocialUnitManageComponent>();
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("退出房间服成功==");
// }
}