Пример #1
0
        public void CreateInDeck(Entity entity, int turn)
        {
            CardEntity ce;

            if (IsLocalPlayer)
            {
                ce = new CardEntity(entity)
                {
                    Turn = turn
                };
                Deck.Add(ce);
                RevealedCards.Add(new CardEntity(entity)
                {
                    Turn = turn
                });
            }
            else
            {
                Deck.Add(new CardEntity(null));
                RevealDeckCard(entity.CardId, turn);
                ce = new CardEntity(entity.CardId, null)
                {
                    Turn = turn
                };
                RevealedCards.Add(ce);
            }
            Log("CreateInDeck", ce);
        }
Пример #2
0
        private void UpdateRevealedEntity(CardEntity entity, int turn, bool?discarded = null, CardMark?cardMark = null)
        {
            var revealed =
                RevealedCards.FirstOrDefault(
                    ce =>
                    ce.Entity == entity.Entity ||
                    (ce.CardId == entity.CardId && ce.Entity == null && ce.Turn <= entity.PrevTurn));

            if (revealed != null)
            {
                revealed.Update(entity.Entity);
            }
            else
            {
                revealed = new CardEntity(entity.Entity)
                {
                    Turn = turn, Created = entity.Created, Discarded = entity.Discarded
                };
                var cardType = entity.Entity.GetTag(GAME_TAG.CARDTYPE);
                if (cardType != (int)TAG_CARDTYPE.HERO && cardType != (int)TAG_CARDTYPE.ENCHANTMENT && cardType != (int)TAG_CARDTYPE.HERO_POWER &&
                    cardType != (int)TAG_CARDTYPE.PLAYER)
                {
                    RevealedCards.Add(revealed);
                }
            }
            if (discarded.HasValue)
            {
                revealed.Discarded = discarded.Value;
            }
            if (cardMark.HasValue)
            {
                revealed.CardMark = cardMark.Value;
            }
        }
Пример #3
0
        private void UpdateRevealedEntity(CardEntity entity, int turn, bool?discarded = null, CardMark?cardMark = null)
        {
            var revealed = RevealedCards.FirstOrDefault(ce => ce.Entity == entity.Entity || (ce.CardId == entity.CardId && ce.Entity == null && ce.Turn <= entity.PrevTurn));

            if (revealed != null)
            {
                revealed.Update(entity.Entity);
            }
            else
            {
                revealed = new CardEntity(entity.Entity)
                {
                    Turn = turn, Created = entity.Created, Discarded = entity.Discarded
                };
                RevealedCards.Add(revealed);
            }
            if (discarded.HasValue)
            {
                revealed.Discarded = discarded.Value;
            }
            if (cardMark.HasValue)
            {
                revealed.CardMark = cardMark.Value;
            }
        }
        public void CreateInDeck(Entity entity, int turn)
        {
            CardEntity ce;
            var        created = turn > 1;

            if (IsLocalPlayer)
            {
                ce = new CardEntity(entity)
                {
                    Turn = turn, Created = created
                };
                Deck.Add(ce);
                RevealedCards.Add(new CardEntity(entity)
                {
                    Turn = turn, Created = created
                });
            }
            else
            {
                Deck.Add(new CardEntity(null));
                RevealDeckCard(entity.CardId, turn, created);
                ce = new CardEntity(entity.CardId, null)
                {
                    Turn = turn, Created = created
                };
                RevealedCards.Add(ce);
            }
            Log(ce);
        }
Пример #5
0
        public void RemoveFromDeck(Entity entity, int turn)
        {
            var revealed = RevealedCards.FirstOrDefault(r => r.Entity == entity);

            if (revealed != null)
            {
                RevealedCards.Remove(revealed);
            }
            var ce = MoveCardEntity(entity, Deck, Removed, turn);

            Log("RemoveFromDeck", ce);
        }
Пример #6
0
 public void JoustReveal(Entity entity, int turn)
 {
     if (Deck.Where(ce => ce.InDeck).All(ce => ce.CardId != entity.CardId))
     {
         RevealDeckCard(entity.CardId, turn);
         var ce = new CardEntity(entity.CardId, null)
         {
             Turn = turn
         };
         RevealedCards.Add(ce);
         Log("JoustReveal", ce);
     }
 }
        public void RemoveFromDeck(Entity entity, int turn)
        {
            var revealed = RevealedCards.FirstOrDefault(r => r.Entity == entity);

            if (revealed != null)
            {
                RevealedCards.Remove(revealed);
            }
            var ce = MoveCardEntity(entity, Deck, Removed, turn);

            UpdateRevealedEntity(ce, turn, true);
            VerifyCardMatchesDeck(ce);
            Log(ce);
        }
        internal List <Card> GetPlayerCardList(bool removeNotInDeck, bool highlightCardsInHand, bool includeCreatedInHand)
        {
            var createdInHand = includeCreatedInHand ? CreatedCardsInHand : new List <Card>();

            if (DeckList.Instance.ActiveDeck == null)
            {
                return(RevealedCards.Concat(createdInHand).Concat(KnownCardsInDeck).Concat(PredictedCardsInDeck).ToSortedCardList());
            }
            var deckState = GetDeckState();
            var inDeck    = deckState.RemainingInDeck.ToList();
            var notInDeck = deckState.RemovedFromDeck.Where(x => inDeck.All(c => x.Id != c.Id)).ToList();

            if (!removeNotInDeck)
            {
                return(inDeck.Concat(notInDeck).Concat(createdInHand).ToSortedCardList());
            }
            if (highlightCardsInHand)
            {
                return(inDeck.Concat(GetHighlightedCardsInHand(inDeck)).Concat(createdInHand).ToSortedCardList());
            }
            return(inDeck.Concat(createdInHand).ToSortedCardList());
        }
Пример #9
0
        public void Reset()
        {
            Name                = "";
            Class               = "";
            Id                  = -1;
            GoingFirst          = false;
            Fatigue             = 0;
            DrawnCardsMatchDeck = true;
            Hand.Clear();
            Board.Clear();
            Deck.Clear();
            Graveyard.Clear();
            Secrets.Clear();
            DrawnCardIds.Clear();
            DrawnCardIdsTotal.Clear();
            RevealedCards.Clear();
            CreatedInHandCardIds.Clear();
            Removed.Clear();

            for (var i = 0; i < DeckSize; i++)
            {
                Deck.Add(new CardEntity(null));
            }
        }