/// <summary> /// 开始发牌、抢地主 /// </summary> /// <param name="uidList"></param> public void StartFight(List <int> uidList) { SingleExecute.Instance.Execute(() => { FightRoom room = FightCache.Create(uidList); room.InitPlayerCards(); room.Sort(); //返回给客户端 foreach (var uid in uidList) { ClientPeer client = UserCache.GetClient(uid); List <CardDto> cardDtos = room.GetUserCard(uid); client.Send(new SocketMsg { OpCode = MsgType.Fight, SubCode = FightCode.Get_Card_Result, value = cardDtos }); } //开始抢地主 int firstUserId = room.GetFirstUId(); var socketMsg = new SocketMsg { OpCode = MsgType.Fight, SubCode = FightCode.Turn_Grab_Bro, value = firstUserId }; BroCast(room, socketMsg); }); }
/// <summary> /// 抢地主 /// </summary> /// <param name="client"></param> /// <param name="resulit"></param> private void GrabLandlord(ClientPeer client, bool resulit) { SingleExecute.Instance.Execute(() => { if (UserCache.IsOnline(client) == false) { socketMsg.State = null; return; } //获取用户id int userId = UserCache.GetClientUserId(client); FightRoom room = FightCache.GetRoomByUId(userId); if (resulit == true) { //抢地主 room.SetLandlord(userId); //发放底牌 GrabDto dto = new GrabDto { UserId = userId, TableCardList = room.TabkeCardList, PlayerCardList = room.GetUserCard(userId) }; socketMsg.SubCode = FightCode.Grab_Landlord_Bro; socketMsg.value = dto; BroCast(room, socketMsg); } else { //不抢 int nextUID = room.GetNextUId(userId); socketMsg.SubCode = FightCode.Turn_Grab_Bro; socketMsg.value = nextUID; BroCast(room, socketMsg); } }); }