Ejemplo n.º 1
0
        /// <summary>
        /// 开始战斗
        /// </summary>
        public void StartFight(List <int> uidList)
        {
            SingleExecute.Instance.Execute(
                delegate()
            {
                //创建战斗房间
                FightRoom room = fightCache.Create(uidList);
                room.InitPlayerCards();
                room.Sort();
                //发送给每个客户端 他自身有什么牌
                foreach (int uid in uidList)
                {
                    ClientPeer client       = userCache.GetClientPeer(uid);
                    List <CardDto> cardList = room.GetUserCards(uid);
                    //int[] cardIds = new int[17];
                    //54 每一张牌 都是一个 id
                    //红桃A 是 0
                    //红桃2 是 1
                    //红桃3 是 2
                    //红桃4 是 3
                    //红桃5 是 4
                    //发送的int数组 是 234
                    client.Send(OpCode.FIGHT, FightCode.GET_CARD_SRES, cardList);
                }
                //发送开始抢地主的响应
                int firstUserId = room.GetFirstUId();

                brocast(room, OpCode.FIGHT, FightCode.TURN_GRAB_BRO, firstUserId, null);
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 抢地主的处理
        /// </summary>
        private void grabLandlord(ClientPeer client, bool result)
        {
            SingleExecute.Instance.Execute(
                delegate()
            {
                if (userCache.IsOnline(client) == false)
                {
                    return;
                }
                //必须确保在线
                int userId = userCache.GetId(client);
                //if()
                FightRoom room = fightCache.GetRoomByUId(userId);

                if (result == true)
                {
                    //抢
                    room.SetLandlord(userId);
                    //给每一个客户端发一个消息  谁当了地主
                    //   第一个:地主id  第二个:三张底牌
                    GrabDto dto = new GrabDto(userId, room.TableCardList, room.GetUserCards(userId));
                    brocast(room, OpCode.FIGHT, FightCode.GRAB_LANDLORD_BRO, dto);
                    //发送一个出牌命令
                    brocast(room, OpCode.FIGHT, FightCode.TURN_DEAL_BRO, userId);
                }
                else
                {
                    //不抢
                    int nextUId = room.GetNextUId(userId);
                    brocast(room, OpCode.FIGHT, FightCode.TURN_GRAB_BRO, nextUId);
                }
            });
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 抢地主的处理
 /// </summary>
 private void grabLandlord(ClientPeer client, bool result)
 {
     SingleExecute.Instance.Execute(
         delegate()
     {
         if (userCache.IsOnline(client) == false)
         {
             return;
         }
         //必须确保在线
         int userId     = userCache.GetId(client);
         FightRoom room = fightCache.GetRoomByUId(userId);
         if (result == true)
         {
             room.isMulti = true;
             //抢
             room.SetLandlord(userId);
             //给每一个客户发一个消息 谁当了地主
             GrabDto dto = new GrabDto(userId, room.TableCardList, room.GetUserCards(userId));
             brocast(room, OpCode.FIGHT, FightCode.GRAB_LANDLORD_BRO, dto);
             foreach (var player in room.PlayerList)
             {
                 if (player.Identity == Identity.FARMER)
                 {
                     //发送给平民翻倍命令
                     singleBrocast(room, OpCode.FIGHT, FightCode.MULTIPLE_BRO, 1, player.UserId);
                 }
                 else
                 {
                     singleBrocast(room, OpCode.FIGHT, FightCode.MULTIPLE_BRO, 2, player.UserId);
                 }
             }
         }
         else
         {
             //不抢
             int nextUId = room.GetNextUId(userId);
             brocast(room, OpCode.FIGHT, FightCode.TURN_GRAB_BRO, nextUId);
         }
     }
         );
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 开始战斗
 /// </summary>
 public void startFight(List <int> uIdList)
 {
     SingleExecute.Instance.Execute(
         delegate()
     {
         //创建战斗房间
         FightRoom room = fightCache.Create(uIdList);
         room.InitPlayerCards();
         room.Sort();
         //发送设置按钮响应
         brocast(room, OpCode.FIGHT, FightCode.BUTTON_BRO, null);
         //发送给每个客户端 它自身有什么用
         foreach (int uid in uIdList)
         {
             ClientPeer client       = userCache.GetClientPeer(uid);
             List <CardDto> cardList = room.GetUserCards(uid);
             client.Send(OpCode.FIGHT, FightCode.GET_CARD_SRES, cardList);
         }
         //发送开始抢地主的响应
         int firstUserId = room.GetFirstUId();
         brocast(room, OpCode.FIGHT, FightCode.TURN_GRAB_BRO, firstUserId, null);
     });
 }