//开始游戏 public static void StartGame(this FiveStarRoom fiveStarRoom) { Actor_FiveStar_StartGame actorFiveStarStart = new Actor_FiveStar_StartGame(); actorFiveStarStart.RoomConfigs = fiveStarRoom.RoomConfig.Configs; actorFiveStarStart.RoomId = fiveStarRoom.RoomId; if (fiveStarRoom.RoomType == RoomType.Match) { actorFiveStarStart.RoomId = fiveStarRoom.MathRoomId; } foreach (var player in fiveStarRoom.FiveStarPlayerDic.Values) { //因为有些对象不能进行序列化 就必须重新复制一份 actorFiveStarStart.PlayerInfos.Add(FiveStarPlayerFactory.CopySerialize(player)); } foreach (var player in fiveStarRoom.FiveStarPlayerDic) { player.Value.StartGame(actorFiveStarStart); } //第一局随机出一个休息的玩家 fiveStarRoom.NextRestSeatIndex = RandomTool.Random(1, fiveStarRoom.RoomConfig.RoomNumber); //不能为0 因为0要第一个摸牌 fiveStarRoom.SmallStartGame(); //小局开始游戏 //用来发送消息的序列化对象 放入简易对象池 不能直接销毁 因为会改变一些东西 foreach (var player in actorFiveStarStart.PlayerInfos) { FiveStarPlayerFactory.DisposeSerializePlayer(player); } }
//给房间内的所有玩家广播消息 public static void BroadcastMssagePlayers(this FiveStarRoom fiveStarRoom, IActorMessage iActorMessage) { foreach (var player in fiveStarRoom.FiveStarPlayerDic.Values) { player.SendMessageUser(iActorMessage); } }
//玩家胡牌进行结算 小结算 public static void PlayerHuPaiResult(this FiveStarRoom fiveStarRoom, int operateType, params int[] seatIndexs) { fiveStarRoom.InitSamllResultInfo(); for (int i = 0; i < fiveStarRoom.RoomNumber; i++) { fiveStarRoom.SmallPlayerResults[i].SeatIndex = i; //玩家索引 fiveStarRoom.SmallPlayerResults[i].SamllGangPaiScore = fiveStarRoom.FiveStarPlayerDic[i].SmallGangScore; //小局杠牌得分 fiveStarRoom.SmallPlayerResults[i].Hands = fiveStarRoom.FiveStarPlayerDic[i].Hands; //玩家手牌 fiveStarRoom.SmallPlayerResults[i].PengGangInfos = fiveStarRoom.FiveStarPlayerDic[i].OperateInfos; //碰杠操作信息 if (seatIndexs.Contains(i)) { if (FiveStarOperateType.ZiMo == operateType) { fiveStarRoom.PlayerResultCalculateGrade(fiveStarRoom.FiveStarPlayerDic[i].MoEndHand, i, operateType);//算出胡牌得分 } else if (FiveStarOperateType.FangChongHu == operateType) { fiveStarRoom.PlayerResultCalculateGrade(fiveStarRoom.CurrChuPaiCard, i, operateType);//算出胡牌得分 } } } //如果是胡牌人数是0 就要算 查叫 和亮倒赔付 if (seatIndexs.Length == 0) { fiveStarRoom.ChaJiaoLiangDaoPeiFu(); } //分数赋值 for (int j = 0; j < fiveStarRoom.RoomNumber; j++) { fiveStarRoom.FiveStarPlayerDic[j].NowScoreChange(fiveStarRoom.SmallPlayerResults[j].GetScore); //现在的分数要加上胡牌得到分数 fiveStarRoom.SmallPlayerResults[j].GetScore += fiveStarRoom.SmallPlayerResults[j].SamllGangPaiScore; //最终得分要算上小局杠牌得分 fiveStarRoom.SmallPlayerResults[j].NowScore = fiveStarRoom.FiveStarPlayerDic[j].NowScore; //现在的分数 } fiveStarRoom.SamllResultsFollow(seatIndexs); //处理小结算后续事件 }
//超时操作 public static void OverTimeOperate(this FiveStarRoom fiveStarRoom) { //如果在打漂中 if (fiveStarRoom.IsDaPiaoBeing) { for (int i = 0; i < fiveStarRoom.FiveStarPlayerDic.Count; i++) { fiveStarRoom.FiveStarPlayerDic[i].CollocationAIOperate(); } } else if (fiveStarRoom.CanOperatePlayerIndex.Count > 0) { int[] operatIndexs = fiveStarRoom.CanOperatePlayerIndex.ToArray();//必须先复制一份 因为胡牌操作会清空自己 //可以操作的人 for (int i = 0; i < operatIndexs.Length; i++) { fiveStarRoom.FiveStarPlayerDic[operatIndexs[i]].CollocationAIOperate(); } } else { //可以出牌的人 都进行一下操作 fiveStarRoom.FiveStarPlayerDic[fiveStarRoom.CanPlayCardPlayerIndex].CollocationAIOperate(); } }
//添加可操作消息 public static void AddOperateResults(this FiveStarRoom fiveStarRoom, Actor_FiveStar_OperateResult actorFiveStarOperateResult) { //选出以前操作里面的昨天操作级别 但是里面操作级别肯定都一样的所以取第一个就行了 if (fiveStarRoom.BeforeOperateResults.Count > 0) { fiveStarRoom.intData = fiveStarRoom.BeforeOperateResults[0].OperateInfo.OperateType; } else { //以前没有操作 级别默认-1 fiveStarRoom.intData = -1; } //如果操作优先级相同就同时操作 if (fiveStarRoom.intData == actorFiveStarOperateResult.OperateInfo.OperateType) { fiveStarRoom.BeforeOperateResults.Add(actorFiveStarOperateResult);//先记录操作消息 } //如果新消息优先级别高就删除以前的消息 else if (fiveStarRoom.intData < actorFiveStarOperateResult.OperateInfo.OperateType) { fiveStarRoom.BeforeOperateResults.Clear(); fiveStarRoom.BeforeOperateResults.Add(actorFiveStarOperateResult);//先记录操作消息 } //如果新消息优先级低 就忽略 }
//直接发送小结算 public static void SamllResultsFollow(this FiveStarRoom fiveStarRoom, int[] huCardSeatIndexs) { //发送小结算信息 fiveStarRoom.SendSamllResults(); //如果是匹配服直接销毁房间 if (fiveStarRoom.RoomType == RoomType.Match) { fiveStarRoom.Dispose(); return; } //算出下局最先摸牌的玩家索引 和4人房休息玩家索引 fiveStarRoom.CalcuateFirstMoCardAndRestPlayerSeat(huCardSeatIndexs); fiveStarRoom.LittleRoundClearData();//如果是房卡模式 正常打下去 清空一下小局应该清空的数据 //房间总结算 if (fiveStarRoom.JudgeIsRoomTotalResult()) { fiveStarRoom.RoomTotalResult();//如果进入总结算 房间直接就销毁了 return; } fiveStarRoom.CurrRoomStateType = RoomStateType.ReadyIn;//更改房间游戏状态为准备中 //所有玩家取消托管 for (int i = 0; i < fiveStarRoom.FiveStarPlayerDic.Count; i++) { fiveStarRoom.FiveStarPlayerDic[i].SetCollocation(false); } }
//获取超时时间 public static long GetOverTime(this FiveStarRoom fiveStarRoom, int playerSeatIndex, int overTimeType) { if (fiveStarRoom.FiveStarPlayerDic[playerSeatIndex].IsLiangDao && overTimeType == FiveStarOverTimeType.PlayCardType) { return(FiveStarRoomComponent.CurrTime + 1);//如果亮倒了 出牌 就一秒时间 } if (!fiveStarRoom.RoomConfig.IsHaveOverTime) { return(0);//配置没有超时 直接返回0 } if (fiveStarRoom.FiveStarPlayerDic[playerSeatIndex].IsAI) { return(FiveStarRoomComponent.CurrTime + RandomTool.Random(1, 4));//如果是AI加个随机值 } if (overTimeType == FiveStarOverTimeType.DaPiaoType) { return(FiveStarRoomComponent.CurrTime + FiveStarOverTime.CanDaPiaoOverTime); } if (fiveStarRoom.FiveStarPlayerDic[playerSeatIndex].IsCollocation) { return(FiveStarRoomComponent.CurrTime + 1); } if (overTimeType == FiveStarOverTimeType.PlayCardType) { return(FiveStarRoomComponent.CurrTime + FiveStarOverTime.CanPlayCardOverTime); } else if (overTimeType == FiveStarOverTimeType.OperateType) { return(FiveStarRoomComponent.CurrTime + FiveStarOverTime.CanOperateOverTime); } return(0); }
//算出下局最先摸牌的玩家索引 和休息玩家索引 public static void CalcuateFirstMoCardAndRestPlayerSeat(this FiveStarRoom fiveStarRoom, int[] huCardSeatIndexs) { if (fiveStarRoom.RoomNumber == 4) { if (huCardSeatIndexs.Length == 1) { fiveStarRoom.FirstMoCardSeatIndex = fiveStarRoom.CurrRestSeatIndex; //4人房 做庄的就是上局休息的 fiveStarRoom.NextRestSeatIndex = huCardSeatIndexs[0]; //4人房 下局休息 就是这局胡的 } else if (huCardSeatIndexs.Length == 2) { fiveStarRoom.NextRestSeatIndex = fiveStarRoom.CurrRestSeatIndex; //4人房 如果一炮多想下局休息的还是不变 fiveStarRoom.FirstMoCardSeatIndex = fiveStarRoom.CurrChuPaiIndex; //4人房 如果一炮多想 做庄的就是放炮的 } } else { if (huCardSeatIndexs.Length == 1) { fiveStarRoom.FirstMoCardSeatIndex = huCardSeatIndexs[0];//3人房 坐庄就是胡的人 } else if (huCardSeatIndexs.Length == 2) { fiveStarRoom.FirstMoCardSeatIndex = fiveStarRoom.CurrChuPaiIndex;//3人房 一炮多向 坐庄就是放炮的人 } } }
//亮倒增加的倍数 public static int LiangDaoAddMultiple(this FiveStarRoom fiveStarRoom, int huCardSeatIndex, int subSocreIndex) { if (fiveStarRoom.FiveStarPlayerDic[huCardSeatIndex].IsLiangDao || fiveStarRoom.FiveStarPlayerDic[subSocreIndex].IsLiangDao) { return(2); } return(1); }
//查叫和亮倒 赔付减分 private static void ChaJiaoLiangSmallResultGet(this FiveStarRoom fiveStarRoom, int subScoreIndex, int scoreValue) { for (int j = 0; j < fiveStarRoom.RoomNumber; j++) { //计算玩家小结算得分 fiveStarRoom.SmallReultPlayerGetScore(j, subScoreIndex, scoreValue); } }
//存储当前小局对战具体信息 private static async void SaveParticularMiltaryRecordData(this FiveStarRoom fiveStarRoom, int dataId) { fiveStarRoom.CurrParticularMiltaryRecordData.DataId = dataId; fiveStarRoom.CurrParticularMiltaryRecordData.ToyGameId = ToyGameId.CardFiveStar; await FiveStarRoomComponent.Ins.SaveVideo(fiveStarRoom.CurrParticularMiltaryRecordData);//存储当前小局对战具体信息到数据库 fiveStarRoom.CurrParticularMiltaryRecordData.Dispose(); }
//玩家选择打漂 public static void PlayerDaPiao(this FiveStarRoom fiveStarRoom) { fiveStarRoom.EntiretyOprationAleadyNum++; if (fiveStarRoom.EntiretyOprationAleadyNum >= fiveStarRoom.RoomNumber) { fiveStarRoom.IsDaPiaoBeing = false; //不在打漂中了 fiveStarRoom.Deal(); //发牌 } }
//玩家可以进行操作 public static void PlayerCanOperate(this FiveStarRoom fiveStarRoom, Actor_FiveStar_CanOperate actorFiveStarCanOperate) { if (!fiveStarRoom.CanOperatePlayerIndex.Contains(actorFiveStarCanOperate.SeatIndex)) { fiveStarRoom.CanOperatePlayerIndex.Add(actorFiveStarCanOperate.SeatIndex); fiveStarRoom.OverTime = fiveStarRoom.GetOverTime(actorFiveStarCanOperate.SeatIndex, FiveStarOverTimeType.OperateType); //超时时间 } fiveStarRoom.EndCanOperateAndCanChuMessage = actorFiveStarCanOperate; //记录最后一条玩家可操作消息 }
//计算下局谁坐庄先摸牌 和如果是四人房谁 休息 //发送小结算消息 public static void SendSamllResults(this FiveStarRoom fiveStarRoom) { Actor_FiveStar_SmallResult actorFiveStarSmall = new Actor_FiveStar_SmallResult(); actorFiveStarSmall.SmallPlayerResults = fiveStarRoom.SmallPlayerResults; actorFiveStarSmall.MaiMaCard = fiveStarRoom.MaiMaCard; //买马的牌 赋值 fiveStarRoom.RecordSmallResult(actorFiveStarSmall); //记录小结算信息 fiveStarRoom.BroadcastMssagePlayers(actorFiveStarSmall); }
//获取下个玩家索引 排序休息玩家索引 public static int GetNextSeatIndexExcludeRest(this FiveStarRoom fiveStarRoom, int currSeatIndexint, int maxSeatIndex) { int nextSeat = SeatIndexTool.GetNextSeatIndex(currSeatIndexint, maxSeatIndex); if (fiveStarRoom.RoomNumber == 4 && nextSeat == fiveStarRoom.CurrRestSeatIndex) { nextSeat = SeatIndexTool.GetNextSeatIndex(nextSeat, maxSeatIndex); } return(nextSeat); }
//放冲胡分数计算 private static void FangChongHuCalculateScore(this FiveStarRoom fiveStarRoom, int huPaiIndex) { fiveStarRoom.SmallPlayerResults[huPaiIndex].PlayerResultType = FiveStarPlayerResultType.HuFangChong;//改变胡牌人的类型 //计算玩家小结算得分 fiveStarRoom.ResultCalculateScore(huPaiIndex, fiveStarRoom.CurrChuPaiIndex, fiveStarRoom.intData, fiveStarRoom.intData2); //计算分数 fiveStarRoom.SmallPlayerResults[fiveStarRoom.CurrChuPaiIndex].PlayerResultType = FiveStarPlayerResultType.FangChong; //记录放冲人的类型 fiveStarRoom.FiveStarPlayerDic[fiveStarRoom.CurrChuPaiIndex].FangChongCount++; //放冲次数加1 }
//存储大局战绩小局信息到数据库 private static async void SaveMiltarySmallInfo(this FiveStarRoom fiveStarRoom, int miltaryId) { MiltarySmallInfo miltarySmallInfo = ComponentFactory.Create <MiltarySmallInfo>(); miltarySmallInfo.MiltaryId = miltaryId; miltarySmallInfo.ParticularMiltarys = fiveStarRoom.ParticularMiltarys; await FiveStarRoomComponent.Ins.SaveVideo(miltarySmallInfo);//存储大局战绩小局详情到数据库 miltarySmallInfo.Dispose(); }
//获取玩家信息 public static FiveStarPlayer GetPlayerInfoUserIdIn(this FiveStarRoom fiveStarRoom, long userId) { for (int i = 0; i < fiveStarRoom.FiveStarPlayerDic.Count; i++) { if (fiveStarRoom.FiveStarPlayerDic[i].User.UserId == userId) { return(fiveStarRoom.FiveStarPlayerDic[i]); } } return(null); }
//玩家准备 public static void PlayerReady(this FiveStarRoom fiveStarRoom) { for (int i = 0; i < fiveStarRoom.FiveStarPlayerDic.Count; i++) { if (!fiveStarRoom.FiveStarPlayerDic[i].ReadyState) { return; } } fiveStarRoom.SmallStartGame();//开始小局游戏 }
//给房间内的所有玩家广播消息 指定一个玩家不广播 public static void BroadcastMssagePlayersDivideThisPlayer(this FiveStarRoom fiveStarRoom, int playerSeatIndex, IActorMessage iActorMessage) { foreach (var player in fiveStarRoom.FiveStarPlayerDic.Values) { if (playerSeatIndex == player.SeatIndex) { continue; } player.SendMessageUser(iActorMessage); } }
//擦杠和暗杠分数变化 public static void CaGangAnGangScoreChang(this FiveStarRoom fiveStarRoom, Actor_FiveStar_ScoreChange actorFiveStarScoreChange, int gangCardIndex, int socre) { for (int i = 0; i < fiveStarRoom.RoomNumber; i++) { if (i == fiveStarRoom.CurrRestSeatIndex) { continue; //休息的玩家 不参与杠牌计分 } actorFiveStarScoreChange.GetScore[i] -= socre; //其他玩家 减去这个分数 actorFiveStarScoreChange.GetScore[gangCardIndex] += socre; //杠牌玩家加上这个分数 } }
//计算分数 private static void ResultCalculateScore(this FiveStarRoom fiveStarRoom, int huPaiIndex, int deductIndex, int paiTypeMultiple, int maiMaMultiple) { int unwelcomeCappingMultiple = maiMaMultiple + fiveStarRoom.FiveStarPlayerDic[huPaiIndex].PiaoNum + fiveStarRoom.FiveStarPlayerDic[deductIndex].PiaoNum; //不受封顶番数 影响的 买马 和两人的漂数 int effectCappingMultiple = paiTypeMultiple * fiveStarRoom.LiangDaoAddMultiple(huPaiIndex, deductIndex); //受封顶番数影响 基础倍数乘以 亮倒的倍数 if (effectCappingMultiple > fiveStarRoom.RoomConfig.FengDingFanShu) { effectCappingMultiple = fiveStarRoom.RoomConfig.FengDingFanShu;//如果 基础倍数加上亮倒倍数 超过封顶番数 则就是封顶番数 } //上面算了 打漂的 倍数 亮倒的倍数 还要赢牌的倍数 fiveStarRoom.SmallReultPlayerGetScore(huPaiIndex, deductIndex, (unwelcomeCappingMultiple + effectCappingMultiple) * fiveStarRoom.RoomConfig.BottomScore); }
//玩家进行操作 public static void PlayerOperate(this FiveStarRoom fiveStarRoom, int seatIndex, FiveStarOperateInfo fiveStarOperateInfo) { if (fiveStarRoom.CanOperatePlayerIndex.Contains(seatIndex)) { fiveStarRoom.CanOperatePlayerIndex.Remove(seatIndex); Actor_FiveStar_OperateResult actorFiveStarOperateResult = new Actor_FiveStar_OperateResult(); actorFiveStarOperateResult.SeatIndex = seatIndex; actorFiveStarOperateResult.OperateInfo = fiveStarOperateInfo; fiveStarRoom.AddOperateResults(actorFiveStarOperateResult); //添加操作消息 fiveStarRoom.BroadcastOperateResults(); //广播操作消息 } }
//记录操作信息 private static void RecordInfo(this FiveStarRoom fiveStarRoom, int opcode, Google.Protobuf.IMessage iMessage) { //只有房卡才记录 if (fiveStarRoom.RoomType != RoomType.RoomCard) { return; } MiltaryRecordData miltaryRecordData = ComponentFactory.Create <MiltaryRecordData>(); miltaryRecordData.Opcode = opcode; miltaryRecordData.Data = new ByteString(ProtobufHelper.ToBytes(iMessage));; fiveStarRoom.CurrParticularMiltaryRecordData.MiltaryRecordDatas.Add(miltaryRecordData); }
//玩家轮休 public static void PlayerRest(this FiveStarRoom fiveStarRoom) { if (fiveStarRoom.RoomNumber != 4) { return;//不是4人房直接 返回 } fiveStarRoom.FiveStarPlayerDic[fiveStarRoom.NextRestSeatIndex].IsRestIn = true; fiveStarRoom.BroadcastMssagePlayers(new Actor_FiveStar_PlayerRest() { RestSeatIndex = fiveStarRoom.NextRestSeatIndex }); fiveStarRoom.CurrRestSeatIndex = fiveStarRoom.NextRestSeatIndex; }
//玩家杠牌分数变化 和记录杠牌次数 public static void PlayerGangPaiGetScore(this FiveStarRoom fiveStarRoom, int oprateSeateIndex, int oprateType) { if (oprateType != FiveStarOperateType.AnGang && oprateType != FiveStarOperateType.CaGang && oprateType != FiveStarOperateType.MingGang) { return; } fiveStarRoom.FiveStarPlayerDic[oprateSeateIndex].GangPaiCount++;//杠牌次数加1 Actor_FiveStar_ScoreChange actorFiveStarScoreChange = new Actor_FiveStar_ScoreChange(); for (int i = 0; i < fiveStarRoom.RoomNumber; i++) { actorFiveStarScoreChange.GetScore.Add(0); } fiveStarRoom.intData = 1; //默认 不是杠上杠就是1 if (fiveStarRoom.IsGangShangCard) //如果是杠上杠 { fiveStarRoom.intData = 2; //分数在乘以2 } switch (oprateType) { case FiveStarOperateType.AnGang: fiveStarRoom.CaGangAnGangScoreChang(actorFiveStarScoreChange, oprateSeateIndex, fiveStarRoom.RoomConfig.BottomScore * 2 * fiveStarRoom.intData);//分数变化 break; case FiveStarOperateType.CaGang: fiveStarRoom.CaGangAnGangScoreChang(actorFiveStarScoreChange, oprateSeateIndex, fiveStarRoom.RoomConfig.BottomScore * fiveStarRoom.intData);//分数变化 break; case FiveStarOperateType.MingGang: actorFiveStarScoreChange.GetScore[oprateSeateIndex] += fiveStarRoom.RoomConfig.BottomScore * 2 * fiveStarRoom.intData; actorFiveStarScoreChange.GetScore[fiveStarRoom.CurrChuPaiIndex] -= fiveStarRoom.RoomConfig.BottomScore * 2 * fiveStarRoom.intData; break; default: return; } fiveStarRoom.GangHuNum = 2;//标记为 刚杠过 for (int i = 0; i < fiveStarRoom.RoomNumber; i++) { fiveStarRoom.FiveStarPlayerDic[i].SmallGangScore += actorFiveStarScoreChange.GetScore[i]; //记录杠牌得分 fiveStarRoom.FiveStarPlayerDic[i].NowScoreChange(actorFiveStarScoreChange.GetScore[i]); //现在的分数变化 actorFiveStarScoreChange.NowScore.Add(fiveStarRoom.FiveStarPlayerDic[i].NowScore); } //广播分数变化消息 fiveStarRoom.BroadcastMssagePlayers(actorFiveStarScoreChange); }
//自摸分数计算 private static void ZiMoCalculateScore(this FiveStarRoom fiveStarRoom, int huPaiIndex) { fiveStarRoom.SmallPlayerResults[huPaiIndex].PlayerResultType = FiveStarPlayerResultType.ZiMoHu; //改变胡牌人的类型 fiveStarRoom.FiveStarPlayerDic[huPaiIndex].ZiMoCount++; //自摸次数加1 for (int j = 0; j < fiveStarRoom.RoomNumber; j++) { if (j == fiveStarRoom.CurrRestSeatIndex || huPaiIndex == j) { continue; //休息玩家不参与分数计算 自己不参与分数计算 } fiveStarRoom.ResultCalculateScore(huPaiIndex, j, fiveStarRoom.intData, fiveStarRoom.intData2); //计算分数 } }
//获取大局战绩玩家信息 private static RepeatedField <MiltaryPlayerInfo> GetMiltaryPlayerInfo(this FiveStarRoom fiveStarRoom) { RepeatedField <MiltaryPlayerInfo> playerInfos = new RepeatedField <MiltaryPlayerInfo>(); for (int i = 0; i < fiveStarRoom.FiveStarPlayerDic.Count; i++) { MiltaryPlayerInfo miltaryPlayerInfo = ComponentFactory.Create <MiltaryPlayerInfo>(); miltaryPlayerInfo.Name = fiveStarRoom.FiveStarPlayerDic[i].User.Name; miltaryPlayerInfo.TotalScore = fiveStarRoom.FiveStarPlayerDic[i].NowScore; miltaryPlayerInfo.UserId = fiveStarRoom.FiveStarPlayerDic[i].User.UserId; playerInfos.Add(miltaryPlayerInfo); } return(playerInfos); }
//房间总结算 解散投票也会走这 public static async void RoomTotalResult(this FiveStarRoom fiveStarRoom) { Actor_FiveStar_TotalResult actorFiveStarTotalResult = new Actor_FiveStar_TotalResult(); for (int i = 0; i < fiveStarRoom.FiveStarPlayerDic.Count; i++) { actorFiveStarTotalResult.TotalPlayerResults.Add(FiveStarTotalPlayerResultFactory.Create(fiveStarRoom.FiveStarPlayerDic[i])); } fiveStarRoom.BroadcastMssagePlayers(actorFiveStarTotalResult); await fiveStarRoom.SaveTotalMiltary(); //房间总结算 存储大局对战记录 fiveStarRoom.SendMiltaryFriendsCircle(); //发送战绩给亲友圈服 fiveStarRoom.Dispose(); //直接销毁房间 }
//广播玩家买码 public static int BoradcastPlayerMaiMa(this FiveStarRoom fiveStarRoom) { if (fiveStarRoom.ResidueCards.Count > 0) { Actor_FiveStar_MaiMa actorFiveStarMaiMa = new Actor_FiveStar_MaiMa(); actorFiveStarMaiMa.Card = fiveStarRoom.ResidueCards[fiveStarRoom.ResidueCards.Count - 1]; fiveStarRoom.MaiMaCard = actorFiveStarMaiMa.Card;//记录买马的牌 int maiMaMulttiple = CardFiveStarHuPaiLogic.GetMaiMaMultiple(actorFiveStarMaiMa.Card); actorFiveStarMaiMa.Score = maiMaMulttiple * fiveStarRoom.RoomConfig.BottomScore; fiveStarRoom.RecordMaiMa(actorFiveStarMaiMa);//记录买马信息 fiveStarRoom.BroadcastMssagePlayers(actorFiveStarMaiMa); return(maiMaMulttiple); } return(0); }