Exemplo n.º 1
0
 public static BeloteCard GetBestCard(BeloteCard a, BeloteCard b, Card32Family trumpFamily)
 {
     if (a.Family == b.Family)
     {
         int aCardPoint = a.GetPoint(trumpFamily);
         int bCardpoint = b.GetPoint(trumpFamily);
         if (aCardPoint > bCardpoint)
         {
             return(a);
         }
         else if (aCardPoint == bCardpoint) // Same point, value wins
         {
             if (a.Value > b.Value)
             {
                 return(a);
             }
         }
     }
     else
     {
         if (a.Family == trumpFamily)
         {
             return(a);
         }
     }
     return(b);
 }
Exemplo n.º 2
0
 //----------------------------------------------
 protected void Play(BeloteCard card, Fold fold)
 {
     if (CanPlay(card))
     {
         DoPlay(card, fold);
     }
 }
Exemplo n.º 3
0
    public void Finalize(Card32Family trumpFamily)
    {
        BeloteCard bestCard = GetBest(trumpFamily);

        if (bestCard != null)
        {
            Winner = bestCard.Owner as Player;
            Points = GetPoints(trumpFamily);
        }
    }
Exemplo n.º 4
0
 //----------------------------------------------
 public bool CanPlay(BeloteCard card)
 {
     if (m_isAllowedToPlay && Hand.Contains(card))
     {
         if (TurnPlayableCards != null && TurnPlayableCards.Contains(card))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 5
0
    public void Init(BeloteCard card)
    {
        m_card       = card;
        m_isHovered  = false;
        m_isSelected = false;

        SpriteRenderer spriteRenderer = GetComponent <SpriteRenderer>();

        if (spriteRenderer != null)
        {
            spriteRenderer.sprite = CardStaticData.Instance.GetSprite(m_card.Value, m_card.Family);
        }

        gameObject.name = m_card.Value + " of " + m_card.Family;
    }
Exemplo n.º 6
0
    public BeloteCard GetBest(Card32Family trumpFamily)
    {
        Card32Family?requested = RequestedFamily;

        if (requested != null)
        {
            BeloteCard bestCard = Deck.Cards[0];
            if (Deck.Cards.Count > 1)
            {
                for (int i = 1; i < Deck.Cards.Count; ++i)
                {
                    BeloteCard card = Deck.Cards[i];

                    bestCard = BeloteCard.GetBestCard(card, bestCard, trumpFamily);
                }
            }
            return(bestCard);
        }
        return(null);
    }
Exemplo n.º 7
0
 public void Init(BeloteCard card)
 {
     m_card = card;
 }
Exemplo n.º 8
0
 public override void Reset()
 {
     m_card = null;
 }
Exemplo n.º 9
0
 public void Init(BeloteCard card, bool selected, bool outsideofHand)
 {
     m_card          = card;
     m_selected      = selected;
     m_outsideOfHand = outsideofHand;
 }
Exemplo n.º 10
0
 public override void Reset()
 {
     m_card          = null;
     m_selected      = false;
     m_outsideOfHand = false;
 }
Exemplo n.º 11
0
    protected BeloteDeck ComputePlayableCards(Fold fold, Card32Family trumpFamily)
    {
        BeloteDeck playables = new BeloteDeck();

        m_trumpCards.Clear();
        m_trumpBetterCards.Clear();

        if (!Hand.Empty)
        {
            // No cards in the fold, all cards are valid
            if (fold.RequestedFamily == null)
            {
                playables.CopyFrom(Hand);
            }
            else
            {
                BeloteCard bestCard   = fold.GetBest(trumpFamily);
                Player     bestPlayer = bestCard.Owner as Player;

                Card32Family requestedFamily = (Card32Family)fold.RequestedFamily;

                // We look for cards of the requested families
                foreach (BeloteCard card in Hand.Cards)
                {
                    if (card.Family == requestedFamily)
                    {
                        playables.AddCard(card);
                    }

                    if (card.Family == trumpFamily)
                    {
                        m_trumpCards.Add(card);

                        if (bestCard.Family == trumpFamily)
                        {
                            if (BeloteCard.GetBestCard(card, bestCard, trumpFamily) == card)
                            {
                                m_trumpBetterCards.Add(card);
                            }
                        }
                    }
                }

                // Remove all trump cards that are too low
                if (!playables.Empty && trumpFamily == requestedFamily)
                {
                    if (m_trumpBetterCards.Count > 0)
                    {
                        playables.Clear();
                        playables.AddCards(m_trumpBetterCards);
                    }
                }


                // No card of the requested family
                if (playables.Empty)
                {
                    // Best card is partner we can play what we want
                    if (bestPlayer.Team == this.Team)
                    {
                        playables.CopyFrom(Hand);
                    }
                    else
                    {
                        if (bestCard.Family == trumpFamily)
                        {
                            if (m_trumpBetterCards.Count > 0)
                            {
                                playables.AddCards(m_trumpBetterCards);
                            }
                            else // TODO : Add "pisser" rules
                            {
                                playables.AddCards(m_trumpCards);
                            }
                        }
                        else
                        {
                            playables.AddCards(m_trumpCards);
                        }

                        if (playables.Empty)
                        {
                            playables.CopyFrom(Hand);
                        }
                    }
                }
            }
        }
        return(playables);
    }
Exemplo n.º 12
0
 //----------------------------------------------
 protected void DoPlay(BeloteCard card, Fold fold)
 {
     m_hand.MoveCardTo(card, fold.Deck);
     card.OnPlay();
 }