Пример #1
0
        /// <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("有玩家进行了匹配");
            }
                );
        }
Пример #2
0
    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);
        }
        //进来一个显示一个
    }