public Battleground CreateBattle(List <OneMatch> matchList) { lock (BattlegroundPoolLock) { Battleground bg = new Model.Battleground(1, 1); BattlegroundPool.Add(bg); int sideOrder = 1; foreach (var m in matchList) { OneSide oneSide = new OneSide() { AccountID = m.AccountID, NickName = m.NickName, Face = m.Face, Step = BattleCommand.JoinBattle, Order = sideOrder++ }; bg.Battle.Sides.Add(oneSide); } bg.NoticeJoinBattle(); bg.Battle.BattleType = matchList.FirstOrDefault().MatchType; return(bg); } }
public void OutCard(OneSide oneSide, CardType cardType, int cardNum, int cardid) { LogHelper.DebugLog(oneSide.AccountID + " outcard:" + cardType.ToString() + cardNum); lock (BattleLock) { Card card = oneSide.Cards.FirstOrDefault(c => c.Type == cardType && c.Num == cardNum && c.ID == cardid); if (card == null) { return;//操作无效,长时间会被超时处理 } Battle.Step = BattleCommand.HandOutCardBack; if (oneSide.Step == BattleCommand.HandOutCardBack) { return; } oneSide.Step = Battle.Step; oneSide.Cards.Remove(card); oneSide.OutCards.Add(card); oneSide.TakeOutCard = card; foreach (var s in Battle.Sides) { if (s == oneSide) { continue; } s.TakeOutCard = null; } NoticeOutCard(); } }
public Battleground CreateBattle(List <EAccount> userList, BattleType battleType) { lock (BattlegroundPoolLock) { Battleground bg = new Model.Battleground(1, 1); BattlegroundPool.Add(bg); int sideOrder = 1; foreach (var m in userList) { OneSide oneSide = new OneSide() { AccountID = m.ID.ToString(), NickName = m.NickName, Face = m.Face, Step = BattleCommand.JoinBattle, Order = sideOrder++ }; bg.Battle.Sides.Add(oneSide); } bg.NoticeJoinBattle(); bg.Battle.BattleType = battleType; return(bg); } }
void AllInStepDo(string accountid, BattleCommand command, Action <string> doAction, Action notDoAction = null) { OneSide oneSide = Battle.Sides.FirstOrDefault(c => c.AccountID == accountid); if (oneSide == null) { return;//操作无效,长时间会被超时处理 } oneSide.Step = command; if (IsAllInStep(command)) { Battle.Step = command; if (doAction != null) { doAction(accountid); } } else { if (notDoAction != null) { notDoAction(); } } }
public void HandOutCard(Battle battle) { Debug.Log("HandOutCard"); OneSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID); BattleRoomCtr.Instance.DownNum.Begin(mySide.Order); if (IsRealClient) { if (Sender.UserID == battle.CurrentSide.AccountID) { BattleRoomCtr.Instance.IsCanOutCard = true; } BattleRoomCtr.Instance.SynchronousData(battle); if (Sender.UserID == battle.CurrentSide.AccountID) { BattleRoomCtr.Instance.CanOutCard(battle); } } else { //测试,随便出一张牌 if (Sender.UserID == battle.CurrentSide.AccountID) { OneSide oneSide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID); Card card = oneSide.Cards.FirstOrDefault(c => !c.IsFront); Sender.HandOutCardBack(true, card.Type, card.Num, card.ID); Debug.Log("test HandOutCardBack......" + Sender.UserID); } } }
/// <summary> /// 出牌结束 /// </summary> /// <param name="accountid"></param> /// <param name="outCardOrWin"></param> /// <param name="cardType"></param> /// <param name="cardNum"></param> public void HandOutCardBack(string accountid, bool outCardOrWin, CardType cardType, int cardNum, int cardid) { lock (BattleLock) { if (Battle.Step != BattleCommand.HandOutCard) { return; } OneSide oneSide = Battle.Sides.FirstOrDefault(c => c.AccountID == accountid); if (oneSide == null) { return;//操作无效,长时间会被超时处理 } if (outCardOrWin) { OutCard(oneSide, cardType, cardNum, cardid); } else { BattleCommand preStep = Battle.Step; if (IsWin(oneSide, preStep == BattleCommand.TakeCardBack, null)) { Battle.Step = BattleCommand.HandOutCardBack; oneSide.Step = Battle.Step; FlipCard(); } else { return;//操作无效,长时间会被超时处理 } } } }
/// <summary> /// 询问碰牌结束 /// </summary> /// <param name="accountid"></param> /// <param name="backType"></param> public void AskTouchCardBack(string accountid, AskTouchCardBackType backType) { lock (BattleLock) { if (Battle.Step != BattleCommand.AskTouchCard) { return; } OneSide oneSide = Battle.Sides.FirstOrDefault(c => c.AccountID == accountid); if (oneSide == null) { return;//操作无效,长时间会被超时处理 } if (backType == AskTouchCardBackType.Pass) { Battle.Step = BattleCommand.AskTouchCardBack; oneSide.Step = Battle.Step; TakeCard(); } else if (backType == AskTouchCardBackType.Touch) { Battle.Step = BattleCommand.AskTouchCardBack; oneSide.Step = Battle.Step; oneSide.Cards.Add(Battle.CurrentSide.TakeOutCard); //翻牌 int num = 0; foreach (var card in oneSide.Cards) { if (Battle.CurrentSide.TakeOutCard == card) { card.IsFront = true; num++; if (num >= 3) { break; } } } Battle.CurrentSide.OutCards.Remove(Battle.CurrentSide.TakeOutCard); NoticeTouchCard(); } else if (backType == AskTouchCardBackType.Win) { if (IsWin(oneSide, false, Battle.CurrentSide.TakeOutCard)) { Battle.Step = BattleCommand.AskTouchCardBack; oneSide.Step = Battle.Step; FlipCard(); } else { return;//操作无效,长时间会被超时处理 } } } }
private void LicensingToOneSide(OneSide oneSide, int num) { for (int i = 0; i < num; i++) { Card card = CardLibrary.FirstOrDefault(); oneSide.Cards.Add(card); CardLibrary.Remove(card); oneSide.GetACard = card; } }
public void AutoOutCard() { OneSide oneSide = Battle.CurrentSide; bool isWin = IsWin(Battle.CurrentSide, true, null); if (isWin) { FlipCard(); } else { Card card = ChessHelper.GetRecommendOutCard(oneSide.Cards); OutCard(oneSide, card.Type, card.Num, card.ID); } }
public void SendSoundMsg(string battleCode, string accountID, string soundData) { LogHelper.DebugLog("收到:" + accountID + " 发来的SendSoundMsg"); Battleground bg = BattlegroundManager.Instance.Find(battleCode); SocketServer socketServer = FightServer.Instance.GetServer(); LemonMessage msg = new LemonMessage(); Battle soundBattle = new Battle(); OneSide currentSide = bg.Battle.Sides.FirstOrDefault(c => c.AccountID == accountID); soundBattle.CurrentSide = currentSide; soundBattle.Sides = bg.Battle.Sides; soundBattle.Step = BattleCommand.SendSoundMsg; soundBattle.Msg = soundData; msg.Body = new JsonSerialize().SerializeToString(soundBattle); ToCleintCommand.SendMsgToAllClient(BattleCommand.SendSoundMsg, soundBattle, msg); }
/// <summary> /// 询问碰牌 /// </summary> public void AskTouchCard(string accountid) { LogHelper.DebugLog("begin AskTouchCard..."); Battle.Step = BattleCommand.AskTouchCard; Card outCard = Battle.CurrentSide.TakeOutCard; OneSide winSide = null; foreach (var s in Battle.Sides) { if (IsWin(s, false, outCard)) { winSide = s; break; } } if (winSide != null) { //Battle.Step = BattleCommand.HandOutCardBack; //FlipCard(); //这个地方也是发的碰牌询问 LogHelper.DebugLog("AskTouchCard AskTouchCard..."); Battle.TouchSide = winSide; SendToClient(BattleCommand.AskTouchCard, winSide.AccountID); } else { //除自己外,还有没有人手里有大于两个的,而且是没碰的 OneSide outSide = Battle.Sides.FirstOrDefault(s => s.AccountID != Battle.CurrentSide.AccountID && s.Cards.Count(c => !c.IsFront && c == outCard) >= 2); if (outSide == null) { LogHelper.DebugLog("AskTouchCard TakeCard..."); TakeCard(); } else { LogHelper.DebugLog("AskTouchCard AskTouchCard..."); Battle.TouchSide = outSide; SendToClient(BattleCommand.AskTouchCard, outSide.AccountID); } } }
public void SendFaceMsg(Battle battle) { if (IsRealClient) { OneSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID); int orderOffset = mySide.Order - 1; foreach (var p in BattleRoomCtr.Instance.BattleUI.PlayerUIList) { int newOrder = p.Order + orderOffset; if (newOrder > 4) { newOrder = newOrder % 4; } if (newOrder == battle.CurrentSide.Order) { p.ShowFace(battle.Msg); } } } }
/// <summary> /// 加入 /// </summary> /// <param name="accountid"></param> /// <param name="face"></param> /// <param name="score"></param> public void Join(string accountid, string nickName, string face, int vip) { lock (BattleLock) { if (Battle.Step != BattleCommand.CreateBattleBack && Battle.Step != BattleCommand.JoinBattle && Battle.Step != BattleCommand.NoticeJoinBattle && Battle.Step != BattleCommand.NoticeReady) { return; } Battle.Step = BattleCommand.JoinBattle; if (Battle.Sides.Any(c => c.AccountID == accountid)) { return;//操作无效 } //查找空桌 int nullDesktop = 1; for (int i = 1; i < 5; i++) { if (!Battle.Sides.Any(c => c.Order == i)) { nullDesktop = i; break; } } OneSide oneSide = new OneSide() { AccountID = accountid, NickName = nickName, Face = face, Step = BattleCommand.JoinBattle, Order = nullDesktop, Vip = vip }; Battle.Sides.Add(oneSide); NoticeJoinBattle(); } }
public void Show(bool isOutCardOrTouchCard, Battle battle) { IsOutCardOrTouchCard = isOutCardOrTouchCard; OneSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == BattleRoomCtr.Instance.SendCommand.UserID); if (IsOutCardOrTouchCard) { BtnPeng.gameObject.SetActive(false); List <WinCardModel> winCardModels = WinALG.Win(mySide.Cards, true); if (winCardModels.Count > 0) { BtnHu.gameObject.SetActive(true); BtnHu.transform.localScale = Vector3.zero; BtnHu.transform.DOScale(1, 0.3f); } BtnGuo.gameObject.SetActive(false); } else { //当前是碰牌指令,检测释放可以胡牌(杠牌胡) List <Card> cardList = new List <Card>(mySide.Cards); cardList.Add(battle.CurrentSide.TakeOutCard); List <WinCardModel> winCardModels = WinALG.Win(cardList, false); if (winCardModels.Count > 0) { BtnHu.gameObject.SetActive(true); BtnHu.transform.localScale = Vector3.zero; BtnHu.transform.DOScale(1, 0.3f); } else { BtnPeng.gameObject.SetActive(true); BtnPeng.transform.localScale = Vector3.zero; BtnPeng.transform.DOScale(1, 0.3f); } BtnGuo.gameObject.SetActive(true); BtnGuo.transform.localScale = Vector3.zero; BtnGuo.transform.DOScale(1, 0.3f); } }
protected override OneNRelationList <INSide> CreateCollection(List <INSide> items) { _parent = new OneSide(items.ToList()); for (int i = 0; i < items.Count; i++) { var item = (NSide)items[i]; item.OneSide = _parent; item.OneSide_pos = i * 10; } _hasCollectionChanged = false; Wrapper.CollectionChanged += (sender, args) => { _hasCollectionChanged = true; }; _hasParentChanged = false; _parent.PropertyChanged += (sender, args) => { if (args.PropertyName == "NSide") { _hasParentChanged = true; } }; return(Wrapper); }
public Battleground CreateBattle(string accountID, string nickName, string face, int vip, int gameNum, BattleType battleType) { lock (BattlegroundPoolLock) { Battleground bg = new Model.Battleground(gameNum, 1); BattlegroundPool.Add(bg); OneSide oneSide = new OneSide() { AccountID = accountID, NickName = nickName, Face = face, Step = BattleCommand.JoinBattle, Vip = vip, Order = 1 }; bg.Battle.Sides.Add(oneSide); bg.Battle.CratorID = accountID; bg.Battle.BattleType = battleType; bg.NoticeJoinBattle(); return(bg); } }
public void HandOutCard(Battle battle) { SynchronousData(battle); if (BattleAIClient.SendServerCommand.UserID != battle.CurrentSide.AccountID) { return; } LogHelper.DebugLog("随机时间回调:" + BattleAIClient.SendServerCommand.UserID); Task.Factory.StartNew(() => { Sleep(); OneSide oneSide = battle.Sides.FirstOrDefault(c => c.AccountID == BattleAIClient.SendServerCommand.UserID); List <WinCardModel> winCardModels = WinALG.Win(oneSide.Cards, true); if (winCardModels.Count > 0) { BattleAIClient.SendServerCommand.HandOutCardBack(false, CardType.Tiao, 0, 0); } else { Card card = ChessHelper.GetRecommendOutCard(oneSide.Cards); BattleAIClient.SendServerCommand.HandOutCardBack(true, card.Type, card.Num, card.ID); } }); }
public static void Main(string[] args) { //Casado myBasicCasado = new BasicCasado(); //Casado myBasicCasado2 = new BasicCasado(); //Casado myCompleteCasado = new CompleteCasado(); //Casado myCompleteCasado2 = new CompleteCasado(); //myBasicCasado2 = new Starter(myBasicCasado2); //myBasicCasado2 = new ThreeSides(myBasicCasado2); //myBasicCasado2 = new Dessert(myBasicCasado2); //myCompleteCasado2 = new Starter(myBasicCasado2); //myCompleteCasado2 = new TwoSides(myBasicCasado2); //myCompleteCasado2 = new Dessert(myBasicCasado2); //Console.WriteLine(myBasicCasado.GetDescription()); //Console.Write("Total: "); //Console.WriteLine($"{myBasicCasado.GetCost():C2}"); //Console.WriteLine(); //Console.WriteLine(myBasicCasado2.GetDescription()); //Console.Write("Total: "); //Console.WriteLine($"{myBasicCasado2.GetCost():C2}"); //Console.WriteLine(); //Console.WriteLine(myCompleteCasado.GetDescription()); //Console.Write("Total: "); //Console.WriteLine($"{myCompleteCasado.GetCost():C2}"); //Console.WriteLine(); //Console.WriteLine(myCompleteCasado2.GetDescription()); //Console.Write("Total: "); //Console.WriteLine($"{myCompleteCasado2.GetCost():C2}"); //Console.WriteLine(); Console.WriteLine("*** LA DOÑA RESTAURANT ***"); Console.WriteLine("\n>> Place your casado order: "); Console.WriteLine(); LinkedList <Casado> order = new LinkedList <Casado>(); Casado myCasado = null; int size = 0; bool isNumber = true; bool validInput = true; Console.Write("First thing first > "); bool addAnotherCasadoToOrder = false; do { addAnotherCasadoToOrder = false; do { Console.WriteLine("What casado size do you want?\n\nChoose:\n\n\t1 >> for regular or\n\t2 >> for big size"); isNumber = Int32.TryParse(Console.ReadLine(), out size); if (size == 1) { myCasado = new BasicCasado(); validInput = true; } else if (size == 2) { myCasado = new CompleteCasado(); validInput = true; } else { validInput = false; Console.WriteLine("\nWrong input, please try again\n"); } //Console.WriteLine("isNumber: " + isNumber + "\nvalidInput: " + validInput); } while (!isNumber || !validInput); if (myCasado != null) { int sidesOption = 0; bool correctValue = false; bool addMoreItems = false; do { do { addMoreItems = false; Console.WriteLine("\nExtras:\n\t* 1 side\n\t* 2 sides\n\t* 3 sides\n\t* 4 Starter\n\t* 5 Dessert\n\t* 6 NO EXTRAS\n"); correctValue = Int32.TryParse(Console.ReadLine(), out sidesOption); switch (sidesOption) { case 1: myCasado = new OneSide(myCasado); break; case 2: myCasado = new TwoSides(myCasado); break; case 3: myCasado = new ThreeSides(myCasado); break; case 4: myCasado = new Starter(myCasado); break; case 5: myCasado = new Dessert(myCasado); break; case 6: break; default: Console.WriteLine("\nIncorrect input. Please try again\n"); correctValue = false; break; } } while (!correctValue); Console.WriteLine("\nWould you like to add anything else?\n\tY > yes\n\tN > no"); int key2 = Console.Read(); //Console.WriteLine("Key: " + key); if (key2 == 89 || key2 == 121) // yes { addMoreItems = true; Console.Clear(); Console.WriteLine("*** LA DOÑA RESTAURANT ***"); Console.WriteLine(); } else if (key2 == 78 || key2 == 110) //no { Console.Clear(); } else { Console.WriteLine("\nIncorrect input. Please try again.\n"); } } while (addMoreItems); } order.AddLast(myCasado); Console.WriteLine("\nWould you like to add another casado to your order?\n\tY > yes\n\tN > no"); int key = Console.Read(); //Console.WriteLine("Key: " + key); if (key == 89 || key == 121) // yes { addAnotherCasadoToOrder = true; Console.Clear(); Console.WriteLine("*** LA DOÑA RESTAURANT ***"); Console.WriteLine(); } else if (key == 78 || key == 110) //no { Console.Clear(); } else { Console.WriteLine("\nIncorrect input. Please try again.\n"); } } while (addAnotherCasadoToOrder); Console.WriteLine("*** LA DOÑA RESTAURANT ***"); Console.WriteLine(); Console.WriteLine("Please review your order: \n"); foreach (var casado in order) { Console.WriteLine(casado.GetDescription()); Console.Write("Total: "); Console.WriteLine($"{casado.GetCost():C2}"); Console.WriteLine(); } Console.ReadKey(); }
/// <summary> /// 同步数据,玩家在网络不好,或是断线重连时会直接显示当前数据 /// </summary> /// <param name="battle"></param> public void SynchronousData(Battle battle) { SendCommand.BattleCode = battle.Code; //if (battle.CratorID == SendCommand.UserID) //{ // BattleUI.BtnJSRoom.gameObject.SetActive(true); //} //else //{ // BattleUI.BtnJSRoom.gameObject.SetActive(false); //} if (battle.Step != BattleCommand.CreateBattleBack && (int)battle.Step > (int)BattleCommand.RollDice) { IsBattleing = true; } BattleUI.MatchLoading.gameObject.SetActive(false); BattleUI.EnableOperation(); //同步玩家信息 OneSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == SendCommand.UserID); if (mySide == null) { return; } if (GlobalVariable.IsBattleRecordPlay && battle.CurrentSide != null) { mySide = battle.CurrentSide; } SetCurrentPlayer(mySide.Order); int orderOffset = mySide.Order - 1; BattleUI.BattleCode.text = battle.Code; BattleUI.LeaveCardNum.text = battle.LibraryCardNum.ToString(); if (ZhuoXinRenderer != null && battle.CurrentSide != null) { if (battle.CurrentSide.Order == 1) { ZhuoXinRenderer.sharedMaterial.SetTexture("_MainTex", MJZhuoTextureN); } else if (battle.CurrentSide.Order == 2) { ZhuoXinRenderer.sharedMaterial.SetTexture("_MainTex", MJZhuoTextureX); } else if (battle.CurrentSide.Order == 3) { ZhuoXinRenderer.sharedMaterial.SetTexture("_MainTex", MJZhuoTextureB); } else if (battle.CurrentSide.Order == 4) { ZhuoXinRenderer.sharedMaterial.SetTexture("_MainTex", MJZhuoTextureD); } } foreach (var p in BattleUI.PlayerUIList) { int newOrder = p.Order + orderOffset; if (newOrder > 4) { newOrder = newOrder % 4; } OneSide side = battle.Sides.FirstOrDefault(c => c.Order == newOrder); if (side != null) { p.Show(side.NickName, side.Face, side.TotalScore, side.Vip, System.Convert.ToInt32(side.AccountID), battle); } else { p.gameObject.SetActive(false); } if (IsBattleing) { p.GoOut.gameObject.SetActive(false); } } //同步卡牌信息 foreach (var p in PlayerList) { if (battle.Sides == null) { continue; } OneSide oneSide = battle.Sides.FirstOrDefault(c => c.Order == p.Order); if (oneSide == null) { continue; } p.UserID = oneSide.AccountID; //同步手牌区 foreach (var c in oneSide.Cards) { CardCtr cardCtr = p.HandCards.GetCard(c.ID); if (cardCtr == null) { CardCtr newCard = CardLibrary.GetOrCreateCard(c.ID, c.Type, c.Num); newCard.IsFront = c.IsFront; newCard.PlayerCtr = p; p.AddCardToHandCards(newCard, newCard.IsNew); } else { cardCtr.IsFront = c.IsFront; } } List <CardCtr> handCards = new List <CardCtr>(p.HandCards.ListCards()); foreach (var cc in handCards) { if (!oneSide.Cards.Any(c => c.ID == cc.ID)) { p.HandCards.RemoveCard(cc); } } //同步出牌区 foreach (var c in oneSide.OutCards) { CardCtr cardCtr = p.OutCards1.GetCard(c.ID); if (cardCtr == null) { cardCtr = p.OutCards2.GetCard(c.ID); } if (cardCtr == null) { cardCtr = p.OutCards3.GetCard(c.ID); } if (cardCtr == null) { CardCtr newCard = CardLibrary.GetOrCreateCard(c.ID, c.Type, c.Num); p.AddCardToOutCards(newCard); } else { cardCtr.IsFront = c.IsFront; } } List <CardCtr> outCards = new List <CardCtr>(p.OutCards1.ListCards()); outCards.AddRange(p.OutCards2.ListCards()); outCards.AddRange(p.OutCards3.ListCards()); foreach (var cc in outCards) { if (!oneSide.OutCards.Any(c => c.ID == cc.ID)) { p.OutCards1.RemoveCard(cc); p.OutCards2.RemoveCard(cc); } } } //获取听牌列表 List <Card> listenCards = ChessHelper.CanListenCardList(mySide.Cards); PlayerCtr myPlayerCtr = PlayerList.FirstOrDefault(c => c.UserID == mySide.AccountID); foreach (var c in myPlayerCtr.HandCards.CardList) { if (IsCanOutCard && listenCards.Any(b => b.ID == c.ID)) { ShowTing(c); } else { HideTing(c); } } //重新计算位置 if ((battle.Step != BattleCommand.TakeCard && battle.Step != BattleCommand.HandOutCard) || GlobalVariable.IsBattleRecordPlay) { foreach (var p in PlayerList) { p.HandCards.AutoSettleCards(); } } //排除可能要播动画的,其它的直接设置位置 if (battle.Step == BattleCommand.Licensing) { } else if (battle.Step == BattleCommand.TakeCard) { foreach (var c in CardLibrary.ListAllShowCards()) { if (c.ID == battle.CurrentSide.GetACard.ID) { continue; } c.transform.localPosition = c.TargetLocalPosition; } } else if (battle.Step == BattleCommand.HandOutCard) { foreach (var c in CardLibrary.ListAllShowCards()) { if (battle.CurrentSide.GetACard != null && c.ID == battle.CurrentSide.GetACard.ID) { continue; } c.transform.localPosition = c.TargetLocalPosition; } } else if (battle.Step == BattleCommand.NoticeOutCard) { foreach (var c in CardLibrary.ListAllShowCards()) { if (c.ID == battle.CurrentSide.TakeOutCard.ID) { continue; } c.transform.localPosition = c.TargetLocalPosition; } } else if (battle.Step == BattleCommand.NoticeTouchCard) { foreach (var c in CardLibrary.ListAllShowCards()) { if (battle.CurrentSide.TakeOutCard == null) { continue; } if (c.IsFront && c.CardType == battle.CurrentSide.TakeOutCard.Type && c.Num == battle.CurrentSide.TakeOutCard.Num) { continue; } c.transform.localPosition = c.TargetLocalPosition; } } else { foreach (var c in CardLibrary.ListAllShowCards()) { c.transform.localPosition = c.TargetLocalPosition; } } }
private bool IsWin(OneSide oneSide, bool isZiMo, Card touchCard) { List <Card> cards = new List <Card>(oneSide.Cards); if (touchCard != null) { cards.Add(touchCard); } List <WinCardModel> winCardModelList = WinALG.Win(cards, isZiMo); WinCardModel maxTrunWinCardModel = null; int maxTrun = 0; foreach (var m in winCardModelList) { if (touchCard != null) { if (m.IsDaDui() == 0) { continue; } } if (maxTrunWinCardModel == null) { maxTrunWinCardModel = m; maxTrun = m.GetTurnNum(); } else { int mTrun = m.GetTurnNum(); if (mTrun > maxTrun) { maxTrunWinCardModel = m; maxTrun = mTrun; } } } if (maxTrunWinCardModel == null) { return(false); } Battle.WinCardModel = maxTrunWinCardModel.CardSectionList; Battle.WinTrun = maxTrun; if (oneSide.OutCards.Count == 0)//起手抓14张牌就胡牌 { Battle.WinTrun = 4; } //分数计算 int score = (int)Math.Pow(2, Battle.WinTrun); //包炮 bool oneBaoThree = false; if (!isZiMo && oneSide != Battle.CurrentSide) { if (CardLibrary.Count <= 8) { oneBaoThree = true; } } oneSide.GetScore = score * 3; if (oneBaoThree) { foreach (var s in Battle.Sides) { if (s == Battle.CurrentSide) { s.GetScore = -score * 3; } } } else { foreach (var s in Battle.Sides) { if (s != oneSide) { s.GetScore = -score; } } } return(true); }
public void SendTextMsg(Battle battle) { if (IsRealClient) { string[] msgData = battle.Msg.Split('|'); string msgName = msgData[0]; string soundSex = msgData[1]; string msgContent = msgData[2]; OneSide mySide = battle.Sides.FirstOrDefault(c => c.AccountID == Sender.UserID); int orderOffset = mySide.Order - 1; foreach (var p in BattleRoomCtr.Instance.BattleUI.PlayerUIList) { int newOrder = p.Order + orderOffset; if (newOrder > 4) { newOrder = newOrder % 4; } if (newOrder == battle.CurrentSide.Order) { p.ShowText(msgContent); } } if (soundSex == "Man") { if (msgName == "ChatMoreUsed01") { SoundManager.Instance.PlaySound("语音/男1"); } else if (msgName == "ChatMoreUsed03") { SoundManager.Instance.PlaySound("语音/男2"); } else if (msgName == "ChatMoreUsed05") { SoundManager.Instance.PlaySound("语音/男3"); } else if (msgName == "ChatMoreUsed07") { SoundManager.Instance.PlaySound("语音/男4"); } else if (msgName == "ChatMoreUsed09") { SoundManager.Instance.PlaySound("语音/男5"); } } else { if (msgName == "ChatMoreUsed01") { SoundManager.Instance.PlaySound("语音/女1"); } else if (msgName == "ChatMoreUsed03") { SoundManager.Instance.PlaySound("语音/女2"); } else if (msgName == "ChatMoreUsed05") { SoundManager.Instance.PlaySound("语音/女3"); } else if (msgName == "ChatMoreUsed07") { SoundManager.Instance.PlaySound("语音/女4"); } else if (msgName == "ChatMoreUsed09") { SoundManager.Instance.PlaySound("语音/女5"); } else if (msgName == "ChatMoreUsed11") { SoundManager.Instance.PlaySound("语音/女6"); } } } }
public void Show(Battle battle) { ClearChildren(); if (battle.CurGameNum >= battle.GameNum) { BtnContinue.gameObject.SetActive(false); BtnExit2.gameObject.SetActive(true); } else { BtnContinue.gameObject.SetActive(true); BtnExit2.gameObject.SetActive(false); } if (battle.GameNum > 1) { BtnOnceAgain.gameObject.SetActive(false); } else { BtnOnceAgain.gameObject.SetActive(true); } if (BattleRoomCtr.Instance.SendCommand.IsPlayMode) { BtnContinue.gameObject.SetActive(false); BtnOnceAgain.gameObject.SetActive(false); BtnExit2.gameObject.SetActive(true); } this.gameObject.SetActive(true); this.gameObject.transform.localScale = Vector3.zero; this.gameObject.transform.DOScale(1, 0.3f); foreach (var s in battle.Sides) { GameObject side = GameObject.Instantiate(PlayerTemplated.gameObject); side.transform.parent = PlayerTemplated.transform.parent; Vector3 p3d = side.GetComponent <RectTransform>().anchoredPosition3D; side.GetComponent <RectTransform>().anchoredPosition3D = new Vector3(p3d.x, p3d.y, 0); side.GetComponent <RectTransform>().localEulerAngles = new Vector3(0, 0, 0); side.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1); side.SetActive(true); side.GetComponent <BattleResultPlayerCtr>().InitData(s.NickName, s.AccountID, s.Face, s.TotalScore.ToString(), s.GetMoney.ToString(), battle.BattleType); } OneSide oneSide = battle.Sides.FirstOrDefault(c => c.AccountID == BattleRoomCtr.Instance.SendCommand.UserID); if (oneSide.GetScore == 0) { SoundManager.Instance.PlaySound("音效/黄庄"); } else if (oneSide.GetScore > 0) { SoundManager.Instance.PlaySound("音效/赢音效"); } else { SoundManager.Instance.PlaySound("音效/输音效"); } }