Example #1
0
        public virtual bool UpdateCurrentPlayer()
        {
            int team;
            int index;
            int new_team;
            int new_index;

            team  = GetPlayerTeam(currentPlayer.Session);
            index = GetPlayerIndex(currentPlayer.Session);
            if (teams[team].GetPlayer(index).hasPlayed() == true)
            {
                new_team = (team == 0) ? 1 : 0;
                if ((index == 0 && team == 1) || (index == 1 && team == 0))
                {
                    new_index = 1;
                }
                else
                {
                    new_index = 0;
                }
                Console.Write("New player Team:{0:D} Index: {1:D}\n", new_team, new_index);
                currentPlayer = teams[new_team].GetPlayer(new_index);
                if (teams[new_team].GetPlayer(new_index).hasPlayed() == true)
                {
                    return(false);
                }
            }
            return(true);
        }
Example #2
0
 public virtual void StartBidding()
 {
     Console.WriteLine("---------> Bidding STARTS");
     roundState = (char)0;
     bidPass    = 0;
     teams[0].ResetPlayed();
     teams[1].ResetPlayed();
     roundBid      = 0;
     roundBidder   = null;
     roundColor    = new CardColor();
     currentPlayer = (coinchePlayer)teams[0].GetPlayer(0);
     currentPlayer.Session.Write("0020");
 }
Example #3
0
 public virtual void EndPlay()
 {
     playNumber++;
     currentPlayer = PlayWinner;
     UpdateRoundScore();
     if (playNumber == 8)
     {
         EndRound();
     }
     else
     {
         StartPlay();
     }
 }
Example #4
0
        public virtual void AcceptBid(string bid, coinchePlayer player)
        {
            string[] arr = null;

            if (!string.ReferenceEquals(bid, null))
            {
                arr = bid.Split(" ", true);
            }
            if (currentPlayer ==
                player &&
                roundState == (char)0 &&
                string.ReferenceEquals(bid, null) ||
                (arr.Length == 3))
            {
                if (!string.ReferenceEquals(bid, null))
                {
                    Console.Write("Setting round Color {0}\n", arr[1]);
                    roundColor.SetColor(arr[1]);
                    roundBid    = int.Parse(arr[2]);
                    roundBidder = player;
                    SendToAllExcept("7777 " + currentPlayer.Session.Id + " " + arr[1] + " " + arr[2]);
                    currentPlayer.Bid = true;
                }
                else
                {
                    SendToAllExcept("7778 " + currentPlayer.Session.Id);
                    bidPass++;
                }
                currentPlayer.Played = true;
                if ((roundBidder != null && bidPass == 3) || bidPass == 4)
                {
                    EndBidding();
                }
                else
                {
                    UpdateCurrentPlayer();
                    while (currentPlayer.hasBid() == false && currentPlayer.hasPlayed() == true)
                    {
                        UpdateCurrentPlayer();
                    }
                    currentPlayer.Session.Write("0020");
                }
            }
        }
Example #5
0
        public virtual void AcceptCard(string cardData, coinchePlayer player)
        {
            Card card;

            if (player == currentPlayer && roundState == (char)1)
            {
                Console.WriteLine(cardData);
                card = JsonConvert.DeserializeObject <Card>(cardData);
                roundDeck.ReceiveCard(card);
                SendToAllExcept("0088 " + currentPlayer.Session.Id + " " + cardData);
                currentPlayer.PlayedCard = card;
                currentPlayer.Played     = true;
                if (UpdateCurrentPlayer() == false)
                {
                    EndPlay();
                }
                else
                {
                    currentPlayer.Session.Write("0020");
                }
            }
        }
Example #6
0
 public virtual void EndBidding()
 {
     currentPlayer = (coinchePlayer)teams[0].GetPlayer(0);
     if (roundBidder == null)
     {
         Console.WriteLine("------> ! RE-SHUFFLING !");
         SendMessage("8888");
         teams[0].ResetDeck();
         teams[1].ResetDeck();
         roundDeck.Clear();
         roundDeck.Fill();
         roundDeck.Shuffle();
         DistributeDeck();
         StartBidding();
     }
     else
     {
         Console.Write("---------> Bidding : {0}\n", roundColor.GetColor());
         SendMessage("7000");
         StartPlay();
     }
 }