protected override async void Run(Session session, MH2MP_CreateRoom_Req message, Action <MP2MH_CreateRoom_Ack> reply) { MP2MH_CreateRoom_Ack response = new MP2MH_CreateRoom_Ack(); try { //创建房间 Room room = ComponentFactory.Create <Room>(); room.AddComponent <DeckComponent>(); room.AddComponent <DeskCardsCacheComponent>(); room.AddComponent <OrderControllerComponent>(); room.AddComponent <GameControllerComponent, RoomConfig>(RoomHelper.GetConfig(RoomLevel.Lv100)); await room.AddComponent <MailBoxComponent>().AddLocation(); Game.Scene.GetComponent <RoomComponent>().Add(room); Log.Info($"创建房间{room.InstanceId}"); response.RoomID = room.InstanceId; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
protected override async void Run(Session session, C2G_StartMatch_Req message, Action <G2C_StartMatch_Ack> reply) { G2C_StartMatch_Ack response = new G2C_StartMatch_Ack(); try { //验证Session if (!GateHelper.SignSession(session)) { response.Error = ErrorCode.ERR_SignError; reply(response); return; } User user = session.GetComponent <SessionUserComponent>().User; //验证玩家是否符合进入房间要求,默认为100底分局 RoomConfig roomConfig = RoomHelper.GetConfig(RoomLevel.Lv100); UserInfo userInfo = await Game.Scene.GetComponent <DBProxyComponent>().Query <UserInfo>(user.UserID, false); if (userInfo.Money < roomConfig.MinThreshold) { response.Error = ErrorCode.ERR_UserMoneyLessError; reply(response); return; } //这里先发送响应,让客户端收到后切换房间界面,否则可能会出现重连消息在切换到房间界面之前发送导致重连异常 reply(response); //向匹配服务器发送匹配请求 StartConfigComponent config = Game.Scene.GetComponent <StartConfigComponent>(); IPEndPoint matchIPEndPoint = config.MatchConfig.GetComponent <InnerConfig>().IPEndPoint; Session matchSession = Game.Scene.GetComponent <NetInnerComponent>().Get(matchIPEndPoint); M2G_PlayerEnterMatch_Ack m2G_PlayerEnterMatch_Ack = await matchSession.Call(new G2M_PlayerEnterMatch_Req() { PlayerID = user.InstanceId, UserID = user.UserID, SessionID = session.InstanceId, }) as M2G_PlayerEnterMatch_Ack; user.IsMatching = true; } catch (Exception e) { ReplyError(response, e, reply); } }