60 lines
1.9 KiB
C#
60 lines
1.9 KiB
C#
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<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("退出房间服成功==");
|
|
// }
|
|
} |