示例#1
0
        public bool PickCard(CardEntity cardToPick)
        {
            bool isCardHand     = this.CardsHand.Contains(cardToPick);
            bool isCardCemetery = this.CardsCemetery.Contains(cardToPick);

            if (isCardHand || isCardCemetery)
            {
                this.pilePicked = isCardHand ? PileFocused.HAND : PileFocused.CEMETERY;

                this.NotifyCardPicked(cardToPick, this.pilePicked);

                this.RemoveEntityFromLayer(cardToPick);

                this.CardEntityFocused = null;

                return(true);
            }
            return(false);
        }
示例#2
0
        protected override void InternalInitializeLayer(World world, ALevelNode levelNode)
        {
            int i = 0;

            this.CardsDeck.Clear();
            this.CardsHand.Clear();
            this.CardsCemetery.Clear();

            this.isCemeteryShowed = false;
            this.isHandShowed     = true;
            this.pileFocused      = PileFocused.HAND;
            this.pilePicked       = PileFocused.NONE;

            this.IsActiveTurn = false;

            this.SupportedPlayer = (levelNode as CardBoardLevel).GetPlayerFromIndex(world, out int currentPlayerIndex);
            this.IndexPlayer     = currentPlayerIndex;

            List <Card.Card> deckCards = this.SupportedPlayer.ConstructDeck(world.CardLibrary);

            foreach (Card.Card card in deckCards)
            {
                CardEntity cardEntity = new CardEntity(this, card, false);

                cardEntity.Position = this.DeckPosition;

                cardEntity.IsActive = i < TOP_DECK;

                this.CardsDeck.Add(cardEntity);
                this.AddEntityToLayer(cardEntity);

                i++;
            }

            this.nbCardsToDraw = 0;

            this.cardFocused = null;
        }
示例#3
0
        public CardEntity UnpickCard(Card.Card cardToUnpick, Vector2f startPosition)
        {
            CardEntity cardEntity = new CardEntity(this, cardToUnpick, true);

            this.AddEntityToLayer(cardEntity);

            cardEntity.Position = startPosition;

            switch (this.pilePicked)
            {
            case PileFocused.HAND:
                this.CardsHand.Add(cardEntity);
                break;

            case PileFocused.CEMETERY:
                this.CardsCemetery.Add(cardEntity);
                break;
            }

            this.NotifyCardUnpicked(cardEntity, this.pilePicked);

            switch (this.pilePicked)
            {
            case PileFocused.HAND:
                this.UpdateCardsHandPosition();
                break;

            case PileFocused.CEMETERY:
                this.UpdateCardsCimeteryPosition();
                break;
            }

            this.pilePicked = PileFocused.NONE;

            return(cardEntity);
        }
示例#4
0
 protected void NotifyCardUnpicked(CardEntity cardUnpicked, PileFocused pilePicked)
 {
     this.CardUnpicked?.Invoke(cardUnpicked, pilePicked);
 }