/// <summary>
        /// Returns the card object that contains the value searched for
        /// </summary>
        /// <param name="value">The value of the card</param>
        /// <returns></returns>
        public Card GetCardbyValue(CardValues value)
        {
            Card searchedCard = null;

            foreach (var player in PlayerList)
            {
                var cards = player.Cards.Where(card => card.CardValue == value);
                if (cards.Any())
                {
                    searchedCard = cards.First();
                }

                foreach (var stich in player.Stiche)
                {
                    var s = stich.Where(card => card.CardValue == value);
                    if (s.Any())
                    {
                        searchedCard = s.First();
                    }
                }
            }

            if (searchedCard == null)
            {
                throw new Exception("Card not found");
            }
            else
            {
                return(searchedCard);
            }
        }
Пример #2
0
        public IEnumerable <CardValues> PullOutBooks()
        {
            List <CardValues> books = new List <CardValues>();

            for (int i = 0; i <= 13; i++)
            {
                CardValues cardValue = (CardValues)i;
                int        howMany   = 0;
                for (int card = 0; card < cards.Count; card++)
                {
                    if (cards.Peek(card).CardValue == cardValue)
                    {
                        howMany++;
                    }
                }
                if (howMany != 4)
                {
                    continue;
                }

                books.Add(cardValue);
                cards.PullOutValues(cardValue);
            }
            return(books);
        }
Пример #3
0
        public void AskForACard(List <Player> players, int myIndex, Deck stock, CardValues cardValue)
        {
            textBoxOnForm.Text += Name + " asks if anyone has a " + cardValue + Environment.NewLine;
            int totalCardsGiven = 0;

            for (int i = 0; i < players.Count; i++)
            {
                if (i != myIndex)
                {
                    Player player     = players[i];
                    Deck   CardsGiven = player.DoYouHaveAny(cardValue);
                    totalCardsGiven += CardsGiven.Count;
                    while (CardsGiven.Count > 0)
                    {
                        cards.Add(CardsGiven.Deal());
                    }
                }
            }

            if (totalCardsGiven != 0 || stock.Count <= 0)
            {
                return;
            }

            textBoxOnForm.Text += Name + " must draw from the stock." + Environment.NewLine;
            cards.Add(stock.Deal());
        }
Пример #4
0
 public Card(CardTypes color, CardValues value, int trumpvalue, int nonTrumpvalue)
 {
     Color         = color;
     Value         = value;
     Trumpvalue    = trumpvalue;
     NonTrumpvalue = nonTrumpvalue;
 }
Пример #5
0
    public void PlayTimedSfx(CardValues currentCard)
    {
        if (currentCard.sfx == null)
        {
            GameController.gameController.SFXFadesDone();
        }
        else
        {
            if (timedSfxSource.isPlaying)
            {
                timedSfxSource.Stop();
            }
            timedSfxSource.clip   = currentCard.sfx;
            timedSfxSource.volume = 1f;
            currentTimedVolume    = 1f;

            if (currentCard.sfxPrewait == 0)
            {
                timedIsWaiting  = false;
                timedSfxPlaying = true;
                timedSfxSource.Play();
            }
            else
            {
                timedIsWaiting = true;
                timeUntilStart = currentCard.sfxPrewait;
            }

            if (currentCard.sfxFadeOutAt == 0)
            {
                timedSfxHasFadeOut = false;
            }
            else
            {
                timedSfxHasFadeOut = true;
                timeUntilFadeOut   = currentCard.sfxFadeOutAt;
                if (timeUntilFadeOut < timeUntilStart)
                {
                    timeUntilFadeOut += timeUntilStart;
                }
                if (currentCard.fadeOutSpeed == 0)
                {
                    fadeOutAmount = 1f / 30f;
                }
                else
                {
                    fadeOutAmount = currentCard.fadeOutSpeed / 60f;
                }
                if (currentCard.sfxAfterWait == 0)
                {
                    timedHasAfterWait = false;
                }
                else
                {
                    timedHasAfterWait = true;
                    afterWaitTime     = currentCard.sfxAfterWait;
                }
            }
        }
    }
Пример #6
0
 public static string Plural(CardValues cardValue)
 {
     if (cardValue == CardValues.Six)
     {
         return("Sixes");
     }
     return(cardValue + "s");
 }
Пример #7
0
        public Card(CardSuits suit, CardValues cardVal)
        {
            cardSuit = suit;
            cardValue = cardVal;

            faceImage = ImageHelper.GetFaceImageForCard(this);
            backImage = ImageHelper.GetBackImage();
        }
Пример #8
0
        public void TestSetter()
        {
            CardValues currentCard4Value = card4.Value;

            card4.Value = CardValues.Ace;

            Assert.NotEqual(currentCard4Value, card4.Value);
        }
Пример #9
0
        public void CompareHandsTest(List <string> hand1, List <string> hand2)
        {
            var cardValues    = new CardValues();
            var handData      = new HandCalculator(cardValues, new HandValues(cardValues));
            var hand1WithData = handData.Calculate(hand1);
            var hand2WithData = handData.Calculate(hand2);

            Assert.True(hand1WithData.Value > hand2WithData.Value);
        }
Пример #10
0
 private void FillDeck()
 {
     for (int i = 0; i < cardsAsInt.Count; i++)
     {
         Suit       suit  = ((Suit)(cardsAsInt[i] % 4));
         CardValues value = (CardValues)(cardsAsInt[i] % 13 + 1);
         deckOfCards.Enqueue(new Card(suit, value));
     }
 }
Пример #11
0
        public Deck DoYouHaveAny(CardValues cardValue)
        {
            Deck ownedCards = cards.PullOutValues(cardValue);

            textBoxOnForm.Text += Name + " has " + ownedCards.Count + " " + Card.Plural(cardValue) + "\r\n";
            return(ownedCards);
            // This is where an opponent asks if I have any cards of a certain cardValue
            // Use Deck.PullOutValues() to pull out the values. Add a line to the TextBox
            // that says, "Joe has 3 sixes"—use the new Card.Plural() static method
        }
Пример #12
0
 public bool ContainsValue(CardValues cardValue)
 {
     foreach (Card card in _cards)
     {
         if (card.CardValue == cardValue)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #13
0
 public void AskForACard(List <Player> players, int myIndex, Deck stock)
 {
     if (stock.Count > 0)
     {
         if (cards.Count == 0)
         {
             cards.Add(stock.Deal());
         }
         CardValues randomCardValue = GetRandomValue();
         AskForACard(players, myIndex, stock, randomCardValue);
     }
 }
Пример #14
0
 private static Card SearchCard(SchafkopfGame game, CardValues cardValue)
 {
     foreach (var player in game.PlayerList)
     {
         var searchCard = player.Cards.Where(k => k.CardValue == cardValue);
         if (searchCard.Count() != 0)
         {
             return(searchCard.First());
         }
     }
     throw new InvalidOperationException("Card not Found");
 }
Пример #15
0
        public Card GetCard(CardValues cardValue, CardSuits suit)
        {
            foreach (Card c in this.Cards)
            {
                if (c.Value == cardValue && c.Suit == suit)
                {
                    this.Cards.Remove(c);
                    return c;
                }
            }

            return null;
        }
Пример #16
0
 public void StartTextCoroutine()
 {
     if (typeTextRunning)                                        // Failsafe, incase two typetexts were called at the sametime.
     {
         StopCoroutine(typeTextCoroutine);                       // Stop currently running typetext..
         cardText.text   = "";                                   // ..replace the text with blank
         typeTextRunning = false;
     }
     currentCard         = GameController.gameController.currentCard; // Get reference to the new card from gamecontroller
     typeTextNewTextDone = false;                                     // trigger the donetyping boolean to false
     typeTextCoroutine   = TypeText(currentCard.cardText);            // Update the text from new card
     StartCoroutine(typeTextCoroutine);                               // Start printing the new text
 }
Пример #17
0
        public Deck PullOutValues(CardValues cardValue)
        {
            Deck deckToReturn = new Deck(new Card[] { });

            for (int i = _cards.Count - 1; i >= 0; i--)
            {
                if (_cards[i].CardValue == cardValue)
                {
                    deckToReturn.Add(Deal(i));
                }
            }
            return(deckToReturn);
        }
    private GameObject InstantiateCard(Player player, CardValues cardvalue, GameObject CardPrefab, Transform fieldPos, float xOffset, float zOffset)
    {
        var card = GameObject.Instantiate(
            CardPrefab,
            new Vector3(fieldPos.position.x + xOffset, fieldPos.position.y, fieldPos.position.z - zOffset),
            Quaternion.identity,
            fieldPos
            );

        card.GetComponent <UnityCard>().Owner               = player;
        card.GetComponent <UnityCard>().CardValue           = cardvalue;
        card.GetComponent <UnityCard>().SchafKopfController = this;
        return(card);
    }
Пример #19
0
        public bool HasBook(CardValues cardValue)
        {
            int numberOfCards = 0;

            foreach (Card card in _cards)
            {
                if (card.CardValue == cardValue)
                {
                    numberOfCards++;
                }
            }

            return(numberOfCards == 4);
        }
Пример #20
0
        public Card(string valueSuitString)
        {
            try
            {
                var splited = valueSuitString.Split(" ");

                Value = splited[0].ToEnum <CardValues>();
                Suit  = splited[1].ToEnum <CardSuits>();
            }
            catch
            {
                throw new Exception("Value or suit is not correct");
            }
        }
Пример #21
0
 private static bool IsCardOnTable(List <Hand> hands, CardSuits suit, CardValues value)
 {
     foreach (var hand in hands)
     {
         foreach (var card in hand.Cards)
         {
             if (card.Suit == suit && card.Value == value)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Пример #22
0
        public static string GenerateCardKey(CardValues value)
        {
            string tickStr = DateTime.UtcNow.Ticks.ToString();

            byte[] tickBytes = Encoding.UTF8.GetBytes(tickStr.Substring(tickStr.Length - 16));

            string displayStr = GetDisplayTick(tickBytes);

            byte[] key = GetKey(tickBytes);
            byte[] vi  = GetVi(key);

            string encrypted = FormatEncryptedPayload(EncryptionHelper.Encrypt($"{(int)value}", key, vi));

            return(displayStr + encrypted);
        }
 // constructor 1 - this code is excuted when a CardDeck object is created from this class
 public Cards()
 {
     DeckOfCards = new List <Card>();
     for (Suits suitsEnum = 0; suitsEnum < Suits.OverTheMaxValue; suitsEnum++)
     {
         for (CardValues cardValuesEnum = CardValues.Ace; cardValuesEnum < CardValues.OverTheMaxValue; cardValuesEnum++)
         {
             Card card = new Card()
             {
                 SuitsEnum = suitsEnum, CardValuesEnum = cardValuesEnum
             };
             this.DeckOfCards.Add(card);
         }
     }
 }
Пример #24
0
    public void AddCard(string str)
    {
        GameObject temp = Instantiate(card, new Vector3(0, 0, 0), quaternion);

        temp.transform.SetParent(this.gameObject.transform);
        temp.gameObject.GetComponent <Image>().sprite = CardSprites.sprites[str];
        CardValues cardValues = temp.GetComponent <CardValues>();

        if (str != "back")
        {
            cardValues.setValues(str);
        }
        cardValues.owner = this;
        cards.Add(temp);
    }
Пример #25
0
 public Card this[CardColor color, CardValues value]
 {
     get
     {
         Card c = null;
         for (int i = 0; i < _cards.Count && c is null; i++)
         {
             if (_cards[i].Color == color && _cards[i].Value == value)
             {
                 c = _cards[i];
             }
         }
         _cards.Remove(c);
         return(c);
     }
 }
Пример #26
0
        private static Schlag Schlag(CardValues card)
        {
            var cardString = card.ToString();

            char[]   cardList = { '7', '8', '9', 'U', 'O', 'K', '1', 'A' };
            Schlag[] schlaege = Enum.GetValues(typeof(Schlag)).Cast <Schlag>().ToArray();

            for (int c = 0; c < cardList.Length; c++)
            {
                if (cardString[1] == cardList[c])
                {
                    return(schlaege[c]);
                }
            }
            throw new InvalidOperationException("Schlag nicht gefunden");
        }
Пример #27
0
    public void UpdateCardDisplay()
    {
        UpdatePopUpField();                                             // Update the previouscard text pop up field.

        if (currentCard != previousCard)
        {
            previousCard = currentCard;
            currentCard  = GameController.gameController.currentCard;   // Update the current to a new one
            UpdateImages();                                             // Update to new images, hide the field if there is no image.
        }
        SiblingIndexSwitch();                                           // Switches foreground images if needed.
        RefreshButtonTextFields();                                      // Update the textfield to current ones, does NOT affect cardText.
        UpdateButtonFunctions();                                        // Update the CardDisplay button listeners.
        RefreshOptions();                                               // Refresh options, if options are off, enable option 5.
        SkipScene();                                                    //Asks if you want to skip if there is skipcard
    }
Пример #28
0
        private static CardValues SelectSau(SchafkopfGame spiel)
        {
            Console.Write("Sau auf die gespielt werden soll: (E/G/H/S): ");
            string sauFarbeInputLetter = Console.ReadLine();

            CardValues[] kartenWerte     = new CardValues[] { CardValues.EA, CardValues.GA, CardValues.HA, CardValues.SA };
            string[]     buchStabenWerte = new string[] { "E", "G", "H", "S" };

            for (int i = 0; i < buchStabenWerte.Length; i++)
            {
                if (sauFarbeInputLetter == buchStabenWerte[i])
                {
                    return(kartenWerte[i]);
                }
            }

            throw new KeyNotFoundException("Sau nicht gefunden");
        }
Пример #29
0
    public bool StoryEvent(int nextCardtTime, int nextCardDay)
    {
        CardValues next    = null;
        bool       isEvent = false;

        if (nextCardDay == 2 && nextCardtTime == 0)
        {
            next    = day2MorningCard;
            isEvent = true;
        }
        else if (nextCardDay == 2 && nextCardtTime == 3)
        {
            next    = day2EveningCard;
            isEvent = true;
        }
        else if (nextCardDay == 3 && nextCardtTime == 0)
        {
            next    = day3MorningCard;
            isEvent = true;
        }
        else if (nextCardDay == 3 && nextCardtTime == 3)
        {
            next    = day3EveningCard;
            isEvent = true;
        }
        else if (nextCardDay == 4 && nextCardtTime == 0)
        {
            if (allSwitches[7])
            {
                next = day4MorKowGone;
            }
            else
            {
                next = day4MorKowHere;
            }
            isEvent = true;
        }
        if (isEvent)
        {
            SetCurrentCard(next);
            cardDisplay.typeTextNewTextDone = false;
        }
        return(isEvent);
    }
Пример #30
0
    public void DoFadeOut(CardValues card)
    {
        fadingOut = true;
        if (card.ppsFadeMode == 1)
        {
            leftToRight = true;
        }
        else
        {
            leftToRight = false;
        }

        if (card.fadeOutSpeed == 0)
        {
            fadeOutAmount = 1f / 60f;
        }
        else
        {
            fadeOutAmount = 1f / (60f * card.fadeOutSpeed);
        }
    }
Пример #31
0
        public CardValues GetRandomValue()
        {
            List <CardValues> valuesInTheDeck = new List <CardValues>();

            for (int i = 1; i <= 13; i++)
            {
                CardValues cardValue = (CardValues)i;
                for (int card = 0; card < cards.Count; card++)
                {
                    if (cards.Peek(card).CardValue == cardValue && !valuesInTheDeck.Contains(cardValue))
                    {
                        valuesInTheDeck.Add(cardValue);
                    }
                }
            }

            int        randomValueInt  = random.Next(valuesInTheDeck.Count);
            CardValues randomCardValue = valuesInTheDeck[randomValueInt];

            return(randomCardValue);
            // This method gets a random cardValue—but it has to be a cardValue that's in the deck!
        }
Пример #32
0
        private Color Farben(CardValues card)
        {
            var cardId = card.ToString();

            if (cardId[0] == 'E')
            {
                return(Color.Eichel);
            }
            if (cardId[0] == 'G')
            {
                return(Color.Gras);
            }
            if (cardId[0] == 'H')
            {
                return(Color.Herz);
            }
            if (cardId[0] == 'S')
            {
                return(Color.Schellen);
            }

            throw new ArgumentException("Wrong Card");
        }
Пример #33
0
 public Card(CardValues value, CardSuit suit)
 {
     this.value = value;
     this.suit = suit;
 }
Пример #34
0
 public void setCard(CardSuits suit, CardValues values)
 {
     this.card = new CardLib.Card(suit, values);
     card.Flip();
     pictureBox1.Image = card.FacingImage;
 }
Пример #35
0
        private byte[] OnGetAccountInfo(GameSession session, byte[] body)
        {
            GetAccountInfo request = new GetAccountInfo();
            using(Stream stream = new MemoryStream(body)) {
                request.Deserialize(stream);
            }

            Debug.WriteLine("LOG " + request.Request_);

            if(request.Request_ == GetAccountInfo.Request.CAMPAIGN_INFO) {
                ProfileProgress response = new ProfileProgress() {
                    Progress = 6,
                    BestForge = 0
                };

                return response.EncodeResponse(233);
            }

            if(request.Request_ == GetAccountInfo.Request.BOOSTERS) {
                BoosterList response = new BoosterList();

                response.List.Add(new BoosterInfo() {
                    Type = (int)BoosterType.Classic,
                    Count = 10
                });

                response.List.Add(new BoosterInfo() {
                    Type = (int)BoosterType.GvG,
                    Count = 10
                });

                response.List.Add(new BoosterInfo() {
                    Type = (int)BoosterType.TGT,
                    Count = 10
                });

                return response.EncodeResponse(224);
            }

            if(request.Request_ == GetAccountInfo.Request.FEATURES) {
                GuardianVars response = new GuardianVars() {
                    ShowUserUI = 1
                };

                return response.EncodeResponse(264);
            }

            if(request.Request_ == GetAccountInfo.Request.MEDAL_INFO) {
                MedalInfo response = new MedalInfo() {
                    SeasonWins = 0,
                    Stars = 0,
                    Streak = 0,
                    StarLevel = 1,
                    LevelStart = 1,
                    LevelEnd = 3,
                    CanLose = false
                };

                return response.EncodeResponse(232);
            }

            if(request.Request_ == GetAccountInfo.Request.NOTICES) {
                ProfileNotices response = new ProfileNotices();
                return response.EncodeResponse(212);
            }

            if(request.Request_ == GetAccountInfo.Request.DECK_LIST) {
                DeckList response = new DeckList();

                foreach(Deck deck in session.Server.Database.Table<Deck>().Where(d => d.DeckType == DeckType.PRECON_DECK)) {
                    response.Decks.Add(deck.ToDeckInfo());
                }

                foreach(Deck deck in session.Server.Database.Table<Deck>().Where(d => d.DeckType == DeckType.NORMAL_DECK && d.AccountID == session.Account.ID)) {
                    response.Decks.Add(deck.ToDeckInfo());
                }

                return response.EncodeResponse(202);
            }

            if(request.Request_ == GetAccountInfo.Request.COLLECTION) {
                Collection response = new Collection();

                foreach(DbfCard card in session.Server.Database.Table<DbfCard>().Where(c => c.Collectible)) {
                    response.Stacks.Add(new CardStack() {
                        LatestInsertDate = DateTime.Now.ToPegasusDate(),
                        NumSeen = 2,
                        Count = 2,
                        CardDef = new PegasusShared.CardDef() {
                            Asset = card.ID,
                            Premium = 0
                        }
                    });
                }

                return response.EncodeResponse(207);
            }

            if(request.Request_ == GetAccountInfo.Request.DECK_LIMIT) {
                ProfileDeckLimit response = new ProfileDeckLimit() {
                    DeckLimit = 9
                };

                return response.EncodeResponse(231);
            }

            if(request.Request_ == GetAccountInfo.Request.CARD_VALUES) {
                CardValues response = new CardValues() {
                    CardNerfIndex = 0
                };

                return response.EncodeResponse(260);
            }

            if(request.Request_ == GetAccountInfo.Request.ARCANE_DUST_BALANCE) {
                ArcaneDustBalance response = new ArcaneDustBalance() {
                    Balance = 10000
                };

                return response.EncodeResponse(262);
            }

            if(request.Request_ == GetAccountInfo.Request.NOT_SO_MASSIVE_LOGIN) {
                NotSoMassiveLoginReply response = new NotSoMassiveLoginReply();
                return response.EncodeResponse(300);
            }

            if(request.Request_ == GetAccountInfo.Request.REWARD_PROGRESS) {
                RewardProgress response = new RewardProgress() {
                    SeasonEnd = new DateTime(DateTime.UtcNow.AddMonths(1).Year, DateTime.UtcNow.AddMonths(1).Month, 1, 7, 0, 0).ToPegasusDate(),
                    WinsPerGold = 3,
                    GoldPerReward = 10,
                    MaxGoldPerDay = 100,
                    SeasonNumber = 1,
                    XpSoloLimit = 60,
                    MaxHeroLevel = 60,
                    NextQuestCancel = DateTime.UtcNow.ToPegasusDate(),
                    EventTimingMod = 0.291667f
                };

                return response.EncodeResponse(271);
            }

            if(request.Request_ == GetAccountInfo.Request.GOLD_BALANCE) {
                GoldBalance response = new GoldBalance() {
                    Cap = 999999,
                    CapWarning = 2000,
                    CappedBalance = 9999,
                    BonusBalance = 0
                };

                return response.EncodeResponse(278);
            }

            if(request.Request_ == GetAccountInfo.Request.HERO_XP) {
                HeroXP response = new HeroXP();

                for(int i = 2; i < 11; i++) {
                    response.XpInfos.Add(new HeroXPInfo() {
                        ClassId = i,
                        Level = 30,
                        CurrXp = 420,
                        MaxXp = 840
                    });
                }

                return response.EncodeResponse(283);
            }

            if(request.Request_ == GetAccountInfo.Request.PLAYER_RECORD) {
                PlayerRecords response = new PlayerRecords();
                return response.EncodeResponse(270);
            }

            if(request.Request_ == GetAccountInfo.Request.CARD_BACKS) {
                CardBacks response = new CardBacks() {
                    DefaultCardBack = 0
                };

                foreach(DbfCardBack cardBack in session.Server.Database.Table<DbfCardBack>()) {
                    response.CardBacks_.Add(cardBack.ID);
                }

                return response.EncodeResponse(236);
            }

            if(request.Request_ == GetAccountInfo.Request.FAVORITE_HEROES) {
                FavoriteHeroesResponse response = new FavoriteHeroesResponse();

                foreach(FavoriteHero hero in session.Server.Database.Table<FavoriteHero>().Where(h => h.AccountID == session.Account.ID)) {
                    response.FavoriteHeroes.Add(new PegasusShared.FavoriteHero() {
                        ClassId = hero.ClassID,
                        Hero = new PegasusShared.CardDef() {
                            Asset = hero.CardID,
                            Premium = hero.Premium,
                        }
                    });
                }

                return response.EncodeResponse(318);
            }

            if(request.Request_ == GetAccountInfo.Request.ACCOUNT_LICENSES) {
                AccountLicensesInfoResponse response = new AccountLicensesInfoResponse();
                return response.EncodeResponse(325);
            }

            if(request.Request_ == GetAccountInfo.Request.BOOSTER_TALLY) {
                BoosterTallyList response = new BoosterTallyList();
                return response.EncodeResponse(313);
            }

            if(request.Request_ == GetAccountInfo.Request.MEDAL_HISTORY) {
                MedalHistory response = new MedalHistory();

                response.Medals.Add(new MedalHistoryInfo() {
                    LegendRank = 1,
                    LevelEnd = 0,
                    LevelStart = 0,
                    Season = 1,
                    StarLevel = 0,
                    Stars = 0,
                    When = new DateTime(DateTime.UtcNow.AddMonths(-1).Year, DateTime.UtcNow.AddMonths(-1).Month, 1, 7, 0, 0).ToPegasusDate()
                });

                return response.EncodeResponse(234);
            }

            if(request.Request_ == GetAccountInfo.Request.PVP_QUEUE) {
                PlayQueue response = new PlayQueue() {
                    Queue = new PlayQueueInfo() {
                        GameType = BnetGameType.BGT_NORMAL
                    }
                };

                return response.EncodeResponse(286);
            }

            Debug.WriteLine("ERR AccountHandler.OnGetAccountInfo missing " + request.Request_);
            return null;
        }