void UpdateAIPlay() { if (m_whosTurn.isAI && !m_isThisTrunPlayedCard && m_whosTurnCounter <= WHOS_TURN_TIME - m_aiThinkTime && m_whosTurn.handCards.Count > 0) { CBPlayCard msg = new CBPlayCard(); msg.CardID = RandPlayerCardID(m_whosTurn); if (GetCard(msg.CardID).type == CardType.ForOneTarget) { msg.TargetID = RandTargetID(m_whosTurn); } if (msg.CardID == 5) //猜测 { List <Card> rnds = new List <Card>(m_cardMgr.leftCards); foreach (var p in alivePlayers) { rnds.AddRange(p.handCards); } int rndIndex = rand.Next(0, rnds.Count); msg.Extend = rnds[rndIndex].tableID; } OnPlayCard(m_whosTurn, msg); m_aiThinkTime = rand.Next(8, 20); } }
void OnPlayCard(Player player, CBPlayCard msg) { if (m_whosTurn != player) { Logger.LogError("{0}\t出牌,但不是他的回合,已禁止!", player.name); return; } if (m_isThisTrunPlayedCard) { return; } m_isThisTrunPlayedCard = true; var card = GetCard(msg.CardID); player.RemoveCard(card); var target = GetPlayer(msg.TargetID); if (msg.Extend > 0) { if (target != null) { Logger.Log("{0}\t出牌\t{1}\t指向\t{2}\tExt\t{3}", player.name, card.table.effect, target.name, msg.Extend); } else { Logger.Log("{0}\t出牌\t{1}\tExt\t{2}", player.name, card.table.effect, msg.Extend); } } else { if (target != null) { Logger.Log("{0}\t出牌\t{1}\t指向\t{2}", player.name, card.table.effect, target.name); } else { Logger.Log("{0}\t出牌\t{1}", player.name, card.table.effect); } } CBPlayCardSync sync = new CBPlayCardSync(); sync.FromID = player.id; sync.TargetID = msg.TargetID; sync.CardID = card.id; sync.Extend = msg.Extend; SendToAll(sync); float waitFor = CardEffectLogic(player, target, card, msg.Extend); Task.WaitFor(waitFor, () => { TurnNextAndSendCard(); }); }
public void PlayCard(int cardId, int target = 0, int extend = 0) { CBPlayCard msg = new CBPlayCard(); msg.CardID = cardId; msg.TargetID = target; msg.Extend = extend; SendMessage(msg); }
private void RandomPlayCard() { CBPlayCard msg = new CBPlayCard(); msg.CardID = RandomPlayerCardID(m_whosTurn); var card = GetCard(msg.CardID); if (card.type == CardType.ForOneTarget) { msg.TargetID = RandomTargetID(m_whosTurn); } if (card.tableID == 5) //猜测 { List <Card> rnds = new List <Card>(m_cardMgr.leftCards); foreach (var p in alivePlayers) { rnds.AddRange(p.handCards); } int rndIndex = rand.Next(0, rnds.Count); msg.Extend = rnds[rndIndex].tableID; } OnPlayCard(m_whosTurn, msg); }