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); }
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"); }
public virtual void EndPlay() { playNumber++; currentPlayer = PlayWinner; UpdateRoundScore(); if (playNumber == 8) { EndRound(); } else { StartPlay(); } }
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"); } } }
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"); } } }
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(); } }