Exemple #1
0
        private void EventSource_DealingStarted(object sender, GameLogic.PlayerPairEventArgs e)
        {
            var ruleSettings = this.currentStateStack.CreationInfo.RuleSettings;

            this.cardsPerPlayer = new List <IEnumerable <Common.Card> >();

            // four players, no sevens: 40 cards, 4 dabb, 9 per player
            // three players, no sevens: 40 cards, 4 dabb, 12 per player
            // four players, sevens: 48 cards, 4 dabb, 11 per player
            // three players, sevens: 48 cards, 6 dabb, 14 per player
            var numberOfPlayers        = ruleSettings.GameType == GameLogic.GameType.ThreePlayerGame ? 3 : 4;
            var amountOfCards          = ruleSettings.SevensAreIncluded ? 48 : 40;
            var numberOfCardsInDabb    = ruleSettings.GameType == GameLogic.GameType.ThreePlayerGame && ruleSettings.SevensAreIncluded ? 6 : 4;
            var numberOfCardsPerPlayer = (amountOfCards - numberOfCardsInDabb) / numberOfPlayers;
            var numberOfCardsPerSuit   = amountOfCards / 8; // four suits, two decks


            // TODO: generate and remember cards. Mind the possible inclusion of sevens and the number of players
            // For now, cards will be distributed according to the enum order
            var counter = 0;

            for (int player = 0; player < numberOfPlayers; player++)
            {
                var playerCards = new List <Common.Card>();
                for (int cardIndex = 0; cardIndex < numberOfCardsPerPlayer; cardIndex++)
                {
                    playerCards.Add(GetCard(amountOfCards, numberOfCardsPerSuit, counter));

                    counter++;
                }
                this.cardsPerPlayer.Add(playerCards);
            }
            for (; counter < amountOfCards; counter++)
            {
                this.cardsInDabb.Add(GetCard(amountOfCards, numberOfCardsPerSuit, counter));
            }

            this.userInterface.PlayDealingAnimation(this.currentDealer, this.cardsPerPlayer, this.cardsInDabb);
            this.userInterface.UncoverCardsForUser(this.cardsPerPlayer.First());
            this.stateBridge.TriggerSink.SendTrigger(Common.GameTrigger.DealingFinished);
        }
Exemple #2
0
 private void EventSource_SwitchingCurrentBidPlayerStarted(object sender, GameLogic.PlayerPairEventArgs e)
 {
     // Nothing to do here at the moment
     this.stateBridge.TriggerSink.SendTrigger(Common.GameTrigger.PlayerSwitched);
 }