/// <summary> /// 分牌响应 /// </summary> /// <param name="splitBroDto"></param> private void splitBro(SplitBroDto splitBroDto) { string msg = splitBroDto.position.ToString() + "号玩家分牌"; promptMsg.Change(msg, UnityEngine.Color.red); Dispatch(AreaCode.UI, UIEvent.PROMPT_MSG, promptMsg); switch (splitBroDto.position) { case 1: Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_CLEAR_PLAYER1_CARD, null); Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_INIT_PLAYER1_CARD, splitBroDto.cardList); break; case 2: Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_CLEAR_PLAYER2_CARD, null); Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_INIT_PLAYER2_CARD, splitBroDto.cardList); break; case 3: Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_CLEAR_PLAYER3_CARD, null); Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_INIT_PLAYER3_CARD, splitBroDto.cardList); break; case 4: Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_CLEAR_PLAYER4_CARD, null); Dispatch(AreaCode.CHARACTER, CharacterEvent.MULTI_INIT_PLAYER4_CARD, splitBroDto.cardList); break; } }
/// <summary> /// 分牌后要下一组牌 /// </summary> /// <param name="client"></param> private void splitNext(ClientPeer client) { SingleExecute.Instance.Execute( () => { if (userCache.IsOnline(client) == false) { return; } int userId = userCache.GetId(client); if (fightCache.IsInRoom(userId) == false) { return; } //一定要注意安全的验证 _21MutiFightRoom room = fightCache.GetRoom(userId); //发下一组牌 room.NextHandCardByUId(userId); //获取分牌后的下一组手牌 List <CardDto> cardList = room.GetUserCardsByUserId(userId); //广播发送一下手牌 SplitBroDto sbdto = new SplitBroDto(); sbdto.userId = userId; sbdto.position = room.getPosition(userId); sbdto.cardList = cardList; //分牌和 下一手用的一个code brocast(room, OpCode._21Multi, _21MultiCode.SPLIT_BRO, sbdto, null); //和开始游戏后进行一样的判断 //21点 直接赢了 if (room.is21ByUserId(userId)) { //记录一下这组牌 room.SaveListByUserId(userId, 1, false); int position = room.getPosition(userId); OverHandDto ohdto = new OverHandDto(userId, position, 1); brocast(room, OpCode._21Multi, _21MultiCode.OVER_HAND_BRO, ohdto, null); //该下一个玩家了 turnPlayer(userId, position, room); } //能够分牌 if (room.isCanSplitByUserId(userId)) { TurnHandDto thdto = new TurnHandDto(true, userId); client.Send(OpCode._21Multi, _21MultiCode.TURN_HS_BRO, thdto); //brocast(room, OpCode._21Multi, _21MultiCode.TURN_HS_BRO, thdto, null); } else { TurnHandDto thdto = new TurnHandDto(false, userId); client.Send(OpCode._21Multi, _21MultiCode.TURN_HS_BRO, thdto); //brocast(room, OpCode._21Multi, _21MultiCode.TURN_HS_BRO, thdto, null); } } ); }