using Fantasy; using Fantasy.Async; using Fantasy.Network; using Fantasy.Network.Interface; using Fantasy.Platform.Net; using NB.Common; using NB.Map; namespace NB.Gate.Handler; public class C2G_EnterRoomRequestHandler : MessageRPC { protected override async FTask Run(Session session, C2G_EnterRoomRequest request, G2C_EnterRoomResponse response, Action reply) { if (string.IsNullOrEmpty(request.RoomCode)) { response.ErrorCode = ErrorCode.MapRoomIdError; return; } var gateUnitSessionComponent = session.GetComponent(); if (gateUnitSessionComponent == null) { response.ErrorCode = ErrorCode.ErrServer; return; } // 在缓存中检查该账号是否存在 var gateUnitManageComponent = session.Scene.GetComponent(); if (gateUnitManageComponent == null) { response.ErrorCode = ErrorCode.ErrServer; return; } var gateUnit = gateUnitManageComponent.Get(gateUnitSessionComponent.AccountID); if (gateUnit == null) { response.ErrorCode = ErrorCode.ErrServer; return; } RoomHelper.ParseCode(request.RoomCode, out var serviceId, out var roomId); if (serviceId < 1 || roomId < 1) { response.ErrorCode = ErrorCode.MapRoomIdError; return; } var sceneConfig = SceneConfigData.Instance.Get(serviceId); if (sceneConfig == null) { response.ErrorCode = ErrorCode.MapRoomIdError; return; } //先判断是否需要更好地图服务器 var mapRouteId = gateUnit.GetAddress(RouteType.MapRoute); //执行进入房间操作 } }