/// <summary> /// 匹配 /// </summary> /// <param name="client"></param> public void match(ClientPeer client) { SingleExecute.Instance.Execute( delegate() { if (!userCache.IsOnline(client)) { return; } int userId = userCache.GetId(client); //if (userId != id) // return; //如果用户已经在匹配房间等待了 那就无视 if (fightCache.IsInRoom(userId)) { client.Send(OpCode._21Multi, _21MultiCode.MATCH_SRES, -1); //重复匹配 return; } //正常匹配 _21MutiFightRoom room = fightCache.Match(userId, client); //广播给房间内除了当前客户端的其他用户,有新玩家计入了 参数:新进入的玩家的用户id #region 构造一个UserDto Dto就是针对UI定义的 UI需要什么我们就加什么字段 UserModel model = userCache.GetModelById(userId); UserDto userDto = new UserDto(model.Id, model.Name, model.Been, model.WinCount, model.LoseCount, model.RunCount, model.Lv, model.Exp); int position = room.getPosition(userId); MultiEnterDto edto = new MultiEnterDto(userDto, position); #endregion room.Brocast(OpCode._21Multi, _21MultiCode.ENTER_BRO, edto, client); MutiRoomDto dto = makeRoomDto(room); client.Send(OpCode._21Multi, _21MultiCode.MATCH_SRES, dto); Console.WriteLine("有玩家进行了匹配"); } ); }
private void enterBro(MultiEnterDto multiEnterDto) { if (isEnter) { //更新房间数据 MutiRoomDto room = Models.GameModel.MutiRoomDto; room.Add(multiEnterDto.userDto, multiEnterDto.position); //给UI绑定数据 switch (multiEnterDto.position) { case 1: Dispatch(AreaCode.UI, UIEvent.SET_1_PLAYER_DATA, multiEnterDto.userDto); break; case 2: Dispatch(AreaCode.UI, UIEvent.SET_2_PLAYER_DATA, multiEnterDto.userDto); break; case 3: Dispatch(AreaCode.UI, UIEvent.SET_3_PLAYER_DATA, multiEnterDto.userDto); break; case 4: Dispatch(AreaCode.UI, UIEvent.SET_4_PLAYER_DATA, multiEnterDto.userDto); break; default: break; } //发消息 显示玩家的状态面板所有游戏物体 Dispatch(AreaCode.UI, UIEvent.MULTI_PLAYER_ENTER, multiEnterDto.userDto.Id); //给用户一个提示 promptMsg.Change("有新玩家 ( " + multiEnterDto.userDto.Name + " )进入", UnityEngine.Color.blue); Dispatch(AreaCode.UI, UIEvent.PROMPT_MSG, promptMsg); } //进来一个显示一个 }