/* Players discards entire hand, returning to the bottom of group's deck */ public static void DiscardAll(GameClient player) { GameClient Dealer = null; DealerDeck deck = null; if (!IsPlayer(player)) { return; } if ((Dealer = GroupDealer(player)) != null) { deck = (DealerDeck)m_dealerDecks[Dealer.Player.ObjectId]; } foreach (Card c in (m_playerHands[player.Player.ObjectId] as PlayerHand).DiscardAll()) { if (deck != null && c.Dealer == Dealer) { deck.ReturnCard(c); } } return; }
/* Makes the player the group dealer and prepares the decks */ /* A new shuffle causes all group members to discard their hands */ public static void Shuffle(GameClient player, uint numDecks) { if (player.Player.Group == null) { player.Out.SendMessage("You must have a group to play cards!", eChatType.CT_System, eChatLoc.CL_SystemWindow); return; } GameClient Dealer = GroupDealer(player); DealerDeck newDecks; /* First clear out any previous decks for the group */ if (Dealer != null) { QuitDealing(Dealer); } newDecks = new DealerDeck(); if (!newDecks.Init(player, numDecks)) { return; } try { if (player.Player.Group == null) { return; } m_dealerDecks.Add(player.Player.ObjectId, newDecks); foreach (GamePlayer Groupee in player.Player.Group.GetPlayersInTheGroup()) { DiscardAll(Groupee.Client); if (Groupee == player.Player) { player.Out.SendMessage("You shuffle " + numDecks + (numDecks > 1 ? " decks " : " deck ") + "of cards.", eChatType.CT_Emote, eChatLoc.CL_SystemWindow); } else { Groupee.Client.Out.SendMessage(player.Player.Name + " shuffles " + numDecks + (numDecks > 1 ? " decks " : " deck ") + "of cards.", eChatType.CT_Emote, eChatLoc.CL_SystemWindow); } } } catch (Exception) { return; } }
/* Makes the player the group dealer and prepares the decks */ /* A new shuffle causes all group members to discard their hands */ public static void Shuffle(GameClient player, uint numDecks) { if (player.Player.Group == null) { player.Out.SendMessage("You must have a group to play cards!", eChatType.CT_System, eChatLoc.CL_SystemWindow); return; } GameClient Dealer = GroupDealer(player); DealerDeck newDecks; /* First clear out any previous decks for the group */ if(Dealer != null) { QuitDealing(Dealer); } newDecks = new DealerDeck(); if(!newDecks.Init(player, numDecks)) { return; } try { if (player.Player.Group == null) return; m_dealerDecks.Add(player.Player.DBCharacter.ObjectId, newDecks); foreach (GamePlayer Groupee in player.Player.Group.GetPlayersInTheGroup()) { DiscardAll(Groupee.Client); if (Groupee == player.Player) player.Out.SendMessage("You shuffle " + numDecks + (numDecks > 1 ? " decks " : " deck ") + "of cards.", eChatType.CT_Emote, eChatLoc.CL_SystemWindow); else Groupee.Client.Out.SendMessage(player.Player.Name + " shuffles " + numDecks + (numDecks > 1 ? " decks " : " deck ") + "of cards.", eChatType.CT_Emote, eChatLoc.CL_SystemWindow); } } catch(Exception) { return; } }