public void RemoveFromLine(int Line, GwentCard Card, bool IsToUsed) { int Ind = GetInd(Card, Lines[Line - 1]); Lines[Line - 1].RemoveAt(Ind); if (IsUserTurn) { Net.SendSimpleCommand(this.AffectedCardID, Line, Card.CardID, Card.IsSpecialAbilitiPerformed, true, IsToUsed); } if (this.IsUserTurn) { if (IsToUsed) { UsedCards.Add(Card); UsedCardsChanged(); } } else { if (IsToUsed) { OponentUsedCards.Add(Card); OponentUsedCardsChanged(); } } LineCardsChanged(Line); }
private void BuildStation(Player player) { var stationSelection = player.SelectStation(); UsedCards.AddRange(stationSelection.Cards); player.Cards.RemoveAll(c => stationSelection.Cards.Contains(c)); MapCities.Single(c => c.City.Id == stationSelection.StationId).Owner = player; }
private void BuildConnection(Player player) { MapConnection selectedConnection; while (true) { var selectedConnectionId = player.SelectConnection(); selectedConnection = MapConnections.Single(c => c.Connection.Id == selectedConnectionId); if (selectedConnection.IsFree) { break; } } BuildSet buildSet = new BuildSet(); buildSet.Color = selectedConnection.Connection.Color == (int)CardColor.Common ? player.SelectColor() : (CardColor)selectedConnection.Connection.Color; buildSet.JokersToBuild = selectedConnection.Connection.JokersRequired.GetValueOrDefault(0); buildSet.WagonsCost = selectedConnection.Connection.Length; if (selectedConnection.Connection.IsTunnel) { var tunnelCards = new List <Card>(); for (int i = 0; i < 3; i++) { var card = Deck.Dequeue(); tunnelCards.Add(card); UsedCards.Add(card); } var toAddCards = tunnelCards.Count(c => c.Color == buildSet.Color || c.Color == CardColor.Joker); buildSet.TunnelCost = toAddCards; } var cardsToBuild = player.GetCardsToBuild(buildSet); if (cardsToBuild == null) { ProvideCards(player); return; } UsedCards.AddRange(cardsToBuild); player.Cards.RemoveAll(c => cardsToBuild.Contains(c)); MapConnections.Single(c => c.Connection.Id == selectedConnection.Connection.Id).Owner = player; }
/// <summary> /// Get random card from the current deck /// </summary> /// <returns></returns> public GameCard Take() { var random = new Random(); var index = random.Next(Cards.Count); var card = Cards[index]; Cards.Remove(card); UsedCards.Add(card); // print this message to the debug console of visual studio Debug.WriteLine($"DeckHelper.Take: Random Index: {index}"); Debug.WriteLine($"DeckHelper.Take: Card: Id {card.Id} - Suit: {card.Suit} - Value: {card.Value}"); Debug.WriteLine($"DeckHelper.Take: Cards Length: {Cards.Count}"); Debug.WriteLine($"DeckHelper.Take: Used Cards Length: {UsedCards.Count}"); return(card); }
public void EndRound() { this.UserCardsPower = 0; foreach (List <GwentCard> Cards in Lines) { foreach (GwentCard Card in Cards) { if (Card.CardLine > 3) { OponentUsedCards.Add(Card); } else { UsedCards.Add(Card); } } Cards.Clear(); } OponentUsedCardsChanged(); UsedCardsChanged(); this.UserCardsPower = 0; RoundEnded(); }
private void SelectionChanged(object obj) { IsOneCard = false; if (obj != null) { if (obj is CheckableCardModel) { var card = obj as CheckableCardModel; CheckableCardModel selectedCard = null; switch (card.Suit) { case RangeCardSuit.Clubs: selectedCard = ClubsSource.FirstOrDefault(x => x.Rank == card.Rank); break; case RangeCardSuit.Diamonds: selectedCard = DiamondsSource.FirstOrDefault(x => x.Rank == card.Rank); break; case RangeCardSuit.Hearts: selectedCard = HeartsSource.FirstOrDefault(x => x.Rank == card.Rank); break; case RangeCardSuit.Spades: selectedCard = SpadesSource.FirstOrDefault(x => x.Rank == card.Rank); break; } if (selectedCard != null) { if (selectedCard.IsChecked) { selectedCard.IsChecked = false; var c = _selectedCards .FirstOrDefault(x => x.Suit == selectedCard.Suit && x.Rank == selectedCard.Rank); if (c != null) { _selectedCards.Remove(c); } } else { if (_selectedCards.Count < this._notification.CardsContainer.ContainerSize) { if (UsedCards.Any(x => x.Rank == selectedCard.Rank && x.Suit == selectedCard.Suit)) { IsSelectError = true; } else { IsSelectError = false; selectedCard.IsChecked = true; _selectedCards.Add(new CardModel(selectedCard.Rank, selectedCard.Suit)); } } } } } } }