/// <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); }); }
/// <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); } }); }
/// <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); } } ); }
/// <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); }); }