private void AskPoigneeOfCurrentPlayer()
 {
     if (currentPlayer is CpuPlayer)
     {
         CpuPlayer cpuPlayer = (CpuPlayer)currentPlayer;
         Poignee   poignee   = cpuPlayer.DecidePoigneeToShow();
         SetPoigneeForCurrentPlayer(poignee);
     }
     else         // human player
     {
         Poignee maxPoignee = GetMaxPoignee(currentPlayer.Hand, NPlayer);
         if (maxPoignee == Poignee.None)
         {
             SetPoigneeForCurrentPlayer(Poignee.None);
         }
         else
         {
             answerTimer += Time.deltaTime;
             if (answerTimer >= answerTimeLimit)
             {
                 SetPoigneeForCurrentPlayer(Poignee.None);
             }
             if (humanPlayerPoignee.Value != Poignee.NotDecided)
             {
                 SetPoigneeForCurrentPlayer(humanPlayerPoignee.Value);
             }
         }
     }
 }
Example #2
0
    public Poignee DecidePoigneeToShow()
    {
        // TODO delegate to AI
        Poignee poignee        = Poignee.None;
        int     nPossibleCards = Hand.GetNCardOfType(CardType.Trump) + Hand.GetNCardOfType(CardType.Excuse);

        // TODO
        return(poignee);
    }
Example #3
0
 public void PrepareForNewHand()
 {
     // break into smaller pieces?
     Hand             = new CardList();
     ScoringPile      = new CardList();
     IsDealer         = false;
     HasToDoSomething = false;
     poignee          = Poignee.NotDecided;
 }
Example #4
0
    public static Poignee GetMaxPoignee(CardList hand, int nPlayer)
    {
        int     nTrump     = hand.GetNCardOfType(CardType.Trump) + hand.GetNCardOfType(CardType.Excuse);
        Poignee maxPoignee = Poignee.Triple;

        while (maxPoignee > Poignee.None)
        {
            if (nTrump >= GetNCardPoignee(maxPoignee, nPlayer))
            {
                return(maxPoignee);
            }
            maxPoignee--;
        }
        return(Poignee.None);
    }
 public void SetPoigneeForCurrentPlayer(Poignee poignee)
 {
     currentPlayer.SetPoignee(poignee);
     if (poignee >= Poignee.Single)         // update scoring data
     {
         if (!firstPoigneeShown)
         {
             scoringData.poignee1 = poignee;
             firstPoigneeShown    = true;
         }
         else             // seconde poignée (max)
         {
             scoringData.poignee2 = poignee;
         }
     }
     Debug.Log("Player " + currentPlayer.name + " decided to show the poignee: " + poignee);
     GoToNextPlayer();
 }
Example #6
0
    public static int GetNCardPoignee(Poignee poignee, int nPlayer)
    {
        Dictionary <Poignee, int> dict;

        if (nPlayer == 3)
        {
            dict = limitPoignee3Players;
        }
        else if (nPlayer == 4)
        {
            dict = limitPoignee4Players;
        }
        else if (nPlayer == 5)
        {
            dict = limitPoignee5Players;
        }
        else
        {
            Debug.LogError("Number of player incorrect: " + nPlayer);
            return(-1);
        }
        return(dict[poignee]);
    }
Example #7
0
 public void SetPoignee(Poignee poignee)
 {
     // TODO add checks
     this.poignee = poignee;
 }