void ProcessClickForCardAction(Player player, Game game) { // if the game is not in the right phase log error and return if (game.GamePhase != GamePhase.LOGISTICS_PLANNING) { ServerLogError("Received a click for card message in the wrong game phase Player=" + player.Name); return; } // does the player have a click remaining if (player.Clicks < 1) { ServerLogError("Received a click for card message from a player with no clicks remaining Player=" + player.Name); return; } // spend the click ChangeClicks(player, -1); // draw card for player PlayableCard card = player.Deck.Draw(); player.Hand.Add(card); // send it to the client var cardMsg = new MessageTypes.DrawnCardMessage(); cardMsg.CardCodename = card.CardCodename.ToString(); cardMsg.cardId = card.CardId; NetworkServer.SendToClient(player.ConnectionId, (short)MessageTypes.MessageType.DRAWN_CARD, cardMsg); ServerLog(string.Format("{0} clicks for a card", player.Name), game); // send the action to the opponent for their game log //SendGameLogToPlayer(game.GetOpponent(player), string.Format("{0} clicks to draw", player.Name)); }
private void DrawAndSendStartingHand(Game game, Player player) { player.DrawStartingHand(); // send starting hand for (int i = 0; i < player.Hand.Count; i++) { var cardMsg = new MessageTypes.DrawnCardMessage(); var card = player.Hand[i]; ServerLog(string.Format("{0} card{1}:{2}", player.Name, i, card.CardName), game); cardMsg.CardCodename = card.CardCodename.ToString(); cardMsg.cardId = card.CardId; NetworkServer.SendToClient(player.ConnectionId, (short)MessageTypes.MessageType.DRAWN_CARD, cardMsg); } }