Inheritance: MonoBehaviour
Exemple #1
0
        public void AttachToStack(CardStack s, Future IsLocalPlayer)
        {
            var c = this;

            if (c.CurrentStack != null)
            {
                c.CurrentStack.Cards.Remove(c);
            }

            c.PreviousStack = c.CurrentStack;
            c.CurrentStack = s;

            s.Cards.Add(c);

            if (this.Moved != null)
                this.Moved();

            // if the IsLocalPlayer is null then we are not meant to raise MovedByLocalPlayer
            if (IsLocalPlayer != null)
                IsLocalPlayer.Continue(
                    delegate
                    {
                        if (this.MovedByLocalPlayer != null)
                            this.MovedByLocalPlayer();
                    }
                );
        }
    void Awake()
    {
        numberOfPlayer = 4;
        currentPlayer = 0;
        currentRank = 0;

        pauseMenu.SetActive(false);
        specialMessage.gameObject.SetActive(false);
        guideMsg.gameObject.SetActive(false);

        players = new List<Player>();
        dealer = GameObject.Find("Dealer").GetComponent<CardStack>();
        for (int i = 0; i < numberOfPlayer; i++)
        {
            string playerObjectString = "Player" + (i + 1).ToString();

            Player player = GameObject.Find(playerObjectString).GetComponent<Player>();
            player.playerStack = player.GetComponent<CardStack>();
            
            player.isHuman = i == 0 ? true : false;
            player.localPlayer = i == 0 ? true : false;
            player.isPlayerTurn = false;
            player.playerTurn = player.playerIndex = i;

            player.PlayerName = playerObjectString;
            player.playerStack.cardRemoved += CardStack_cardRemoved;
            player.callDoubt += Player_callDoubt;

            if (i == 0) { player.RealName = "Neptune"; }
            if (i == 1) { player.RealName = "Noire"; }
            if (i == 2) { player.RealName = "Blanc"; }
            if (i == 3) { player.RealName = "Vert"; }
            players.Add(player);
        }
    }
Exemple #3
0
 public void TestNullValues()
 {
     var stack = new CardStack();
     Assert.IsNull(stack.TopCard);
     Assert.IsNull(stack.TopSuit);
     Assert.IsNull(stack.TopValue);
 }
    public Card TransferCard(Card card, CardStack newStack)
    {
        if (HasCard)
        {
            int position = -1;
            for (int i = 0; i < cards.Count; i++)
            {
                if (card.id == cards[i].id)
                {
                    position = i;
                    break;
                }
            }
            Card result = cards[position];

            if (cardRemoved != null)
            {
                cardRemoved(this, new CardRemovedEventArgs(result.id, newStack));
            }

            cards.RemoveAt(position);
            return result;
        }
        return null;
    }
Exemple #5
0
        private CardStack CreateCardStack()
        {
            // generate list of cards
            var cards = new LinkedList<Card>();
            foreach (var color in Enum.GetValues(typeof(CardColor)).OfType<CardColor>())
                foreach (var filling in Enum.GetValues(typeof(Filling)).OfType<Filling>())
                    foreach (var shape in Enum.GetValues(typeof(Shape)).OfType<Shape>())
                        for (byte shapeIndex = 0; shapeIndex < 3; shapeIndex++)
                                cards.AddLast(new Card()
                                           {
                                               Color = color,
                                               Filling = filling,
                                               Shape = shape,
                                               ShapeCount = (byte) (shapeIndex + 1)
                                           });

            // shake cards
            var shakedCards = new CardStack();
            Random rnd = new Random(23);
            for (int cardsIndex = cards.Count - 1; cardsIndex >= 0; cardsIndex--)
            {
                var cardIndexToMove = (int)Math.Floor(cardsIndex * rnd.NextDouble());
                var cardToMove = cards.Skip(cardIndexToMove).Take(1).Single();
                shakedCards.Push(cardToMove);
                cards.Remove(cardToMove);
            }
            return shakedCards;
        }
    // Use this for initialization
    void Start()
    {
        cardStack = GetComponent<CardStack>();

        fetchedCard = new Dictionary<int, GameObject>();
        stackLastCount = cardStack.Size;
        cardStack.cardRemoved += CardStack_cardRemoved;

        // Get the game object's position to put the cards on
        startTime = Time.time;
        startingPos = transform.position;

        scale = new Vector3(1f, 1f, 1f);

        if (cardStack.isGameStack)
        {
            scale = new Vector3(1.25f, 1.25f, 1.25f);
        }
        else if (cardStack.transform.ToString().Contains("Player1"))
        {
            scale = new Vector3(1.75f, 1.75f, 1.75f);
        }
        else
        {
            scale = new Vector3(0.75f, 0.75f, 0.75f);
        }

        ShowCards(false);
    }
	void Awake () {
		fetchedCards = new Dictionary<int, CardView> ();
		deck = GetComponent<CardStack> ();
		ShowCards ();
		lastCount = deck.cardCount;

		deck.CardRemoved += deck_CardRemoved;
		deck.CardAdded += Deck_CardAdded;
	}
Exemple #8
0
    void Start()
    {
        fetchedCards = new Dictionary<int, GameObject>();
        deck = GetComponent<CardStack>();
        ShowCards();
        lastCount = deck.CardCount;

        deck.CardRemoved += deck_CardRemoved;
    }
Exemple #9
0
        public void TestTopValue()
        {
            var card = new PlayingCard(PlayingCard.CardFace.Eight, PlayingCard.CardSuit.Hearts);
            var stack = new CardStack();

            stack.Push(card);

            Assert.AreEqual(8, stack.TopValue);
        }
Exemple #10
0
 public void MoveAllCardsToStack(CardStack cardStack, bool flat)
 {
     Stack tempStack = new Stack();
     while (!IsEmpty) {
         tempStack.Push(Pop());
     }
     while (tempStack.Count > 0) {
         cardStack.Push(tempStack.Pop() as Card, flat);
     }
 }
Exemple #11
0
 public void BuyCard(CardStack cardStack)
 {
     Card card = cardStack.Peek();
     Debug.Log("Attempting to buy card " + card.name);
     if (card.Cost <= money && buys > 0)
     {
         guiManager.ChangeMode(new BuyMode(this));
         Debug.Log("Actually buying it.");
         rubbishStack.Push(cardStack.Pop());
         buys--;
         money -= card.Cost;
     }
 }
Exemple #12
0
 public CardMoveToStackEventArgs(
     CardModel cardModel,
     CardStack cardStack,
     Vector3 position,
     bool flip,
     int indexFrom,
     int indexTo)
 {
     this.cardModel = cardModel;
     this.cardStack = cardStack;
     this.position  = position;
     this.flip      = flip;
     this.indexFrom = indexFrom;
     this.indexTo   = indexTo;
 }
Exemple #13
0
    public Player(int initMoney, Client newClient)
    {
        money = initMoney;
        bet   = 0;

        busted = false;

        playerCardStack = new CardStack();

        playerClient = newClient;

        playerNum = newClient.GetClientNumber();

        isPlaying = true;
    }
Exemple #14
0
    private void Deal()
    {
        for (int i = 0; i < 4; i++)
        {
            player.Push(deck.Pop());
            botLeft.Push(deck.Pop());
            botTop.Push(deck.Pop());
            botRight.Push(deck.Pop());
        }

        player.flipCards(new RangeInt(0, 4), true);
        turnMarker.moveToPlayer(0);
        currentPlayer    = player;
        playerClickState = GameState.Ready;
    }
Exemple #15
0
        public void AddCardToPlay(CardStack cardStack, CardModel cardModel)
        {
            // TODO: RESTORE THIS
            //if (CardGameManager.Current.CardClearsBackground)
            //    CardGameManager.Instance.BannerImage.gameObject.SetActive(false);

            if (NetworkManager.singleton.isNetworkActive)
            {
                CGSNetManager.Instance.LocalPlayer.MoveCardToServer(cardStack, cardModel);
            }
            else
            {
                SetPlayActions(cardStack, cardModel);
            }
        }
        public void Show(CardStack stack)
        {
            gameObject.SetActive(true);
            transform.SetAsLastSibling();

            Resize();

            if (!EventSystem.current.alreadySelecting)
            {
                EventSystem.current.SetSelectedGameObject(gameObject);
            }

            Sync(stack);
            contentCardZone.scrollRectContainer.horizontalNormalizedPosition = 0;
        }
        public void CardStackUnitTest()
        {
            if (TestInfrastructure.IsActive(TestContext))
            {
                using (Dictionary dictionary = TestInfrastructure.GetConnection(TestContext))
                {
                    DictionaryTest.FillDictionary(dictionary);

                    CardStack target = new CardStack(new LearnLogic(MLifterTest.DAL.OpenUserProfileTests.GetUserAdmin, (MLifter.DAL.DataAccessErrorDelegate) delegate { return; }));
                    target.StackChanged += new EventHandler(CardStack_StackChanged);
                    cardstackChanged     = false;
                    target.Clear();
                    Assert.IsTrue(cardstackChanged, "CardStackChanged event did not fire for Clear.");

                    int      cardcount  = 0;
                    int      rightcount = 0;
                    TimeSpan duration   = new TimeSpan(0);

                    foreach (ICard card in dictionary.Cards.Cards)
                    {
                        for (int i = 0; i < 100; i++)
                        {
                            cardcount++;
                            bool promoted = GetRandBool();
                            if (promoted)
                            {
                                rightcount++;
                            }
                            DateTime asked    = DateTime.Now - new TimeSpan(0, 0, random.Next(1000));
                            DateTime answered = DateTime.Now;
                            duration += (answered - asked);
                            AnswerResult result    = promoted ? AnswerResult.Correct : AnswerResult.Wrong;
                            StackCard    stackCard = new StackCard(card, result, promoted, EQueryDirection.Question2Answer, LearnModes.Word, asked, answered, Thread.CurrentThread.CurrentCulture, Thread.CurrentThread.CurrentCulture, card.Answer.ToString(), 0, 0, false, dictionary, 0);

                            cardstackChanged = false;
                            target.Push(stackCard);
                            Assert.IsTrue(cardstackChanged, "CardStackChanged event did not fire for Push.");
                        }
                    }

                    Assert.AreEqual(cardcount, target.Count, "Not all cards were added to the stack.");
                    Assert.AreEqual(duration, target.SessionDuration, "Session duration sum does not match.");
                    Assert.AreEqual(rightcount, target.RightCount, "RightCount does not match.");
                    Assert.AreEqual(cardcount - rightcount, target.WrongCount, "WrongCount does not match.");
                    Assert.IsTrue(rightcount > 0 && target.VisibleStack.Count > 0, "No StackCards in VisibleStack property.");
                }
            }
        }
Exemple #18
0
 private static void PrintCardStack(CardStack deck)
 {
     Console.WriteLine($"STACK: {deck.Orientation} ({deck.Count}) =============");
     for (int i = 0; i < deck.Count; i++)
     {
         Console.Write($"{deck.Contents[i]} ");
         if (i % 13 == 12)
         {
             Console.WriteLine();
         }
     }
     if (deck.Count % 12 != 0)
     {
         Console.WriteLine();
     }
 }
Exemple #19
0
        /// <summary>
        /// Initializes a new War player with the specified initial hand.
        /// </summary>
        /// <param name="initialHand">Player's initial hand.</param>
        public Player(CardStack initialHand)
        {
            if (initialHand.Orientation != CardStackOrientation.FaceDown)
            {
                throw new ArgumentException(
                          "Orientation of player hand must be face down.");
            }

            if (initialHand.Count != 26)
            {
                throw new ArgumentException(
                          "Player hand should contain 26 cards.");
            }

            Hand = initialHand;
        }
Exemple #20
0
        /// <summary>
        /// Finds a stack that the card could play on.  Returns the stack,
        /// if no stack found, then returns null.
        /// </summary>
        /// <param name="card"></param>
        /// <returns></returns>
        public CardStack FindStack(Card card)
        {
            CardStack stackFound = null;

            foreach (CardStack stack in stacks)
            {
                if (stack.GetSuit() == card.CardSuit)
                {
                    if ((int)stack.GetTopValue() == (int)card.CardValue - 1)
                    {
                        stackFound = stack;
                    }
                }
            }
            return(stackFound);
        }
    public Card TransferCard(int position, CardStack newStack)
    {
        if (HasCard)
        {
            Card result = cards[position];

            if (cardRemoved != null)
            {
                cardRemoved(this, new CardRemovedEventArgs(result.id, newStack));
            }

            cards.RemoveAt(position);
            return result;
        }
        return null;
    }
Exemple #22
0
        /// <summary>
        /// creates a new hold em poker game
        /// </summary>
        /// <param name="userid">id of system user</param>
        /// <returns>new holdem game</returns>
        public HoldemGame CreateGame(long userid, int bet)
        {
            HoldemGame game = games[userid] = new HoldemGame
            {
                PlayerID   = userid,
                Bet        = bet,
                Pot        = bet,
                Deck       = CardStack.Fresh(),
                Muck       = new CardStack(),
                Board      = new Board(),
                PlayerHand = new Board(),
                DealerHand = new Board()
            };

            return(game);
        }
Exemple #23
0
 public CardPlayer()
 {
     hand        = new CardZone();
     discardPile = new CardStack()
     {
         isDiscardZone = true
     };
     destroyedPile = new CardStack()
     {
         isDestroyZone = true
     };
     drawPile = new CardStack()
     {
         resuplyFrom = discardPile
     };
 }
Exemple #24
0
        /// <summary>
        /// Double le pari et le joueur tire une carte
        /// </summary>
        public void DoubleDown()
        {
            Player tempP = GetHuman();

            CardStack.PlayerDrawCard(tempP);
            tempP.GetGameType <IBlackjackAction>().PlayerStand = true;
            if (Bet * 2 > tempP.Money)
            {
                Bet        += tempP.Money;
                tempP.Money = 0;
                return;
            }
            CheckBust(tempP.GetGameType <IBlackjackAction>(), GetHuman());
            tempP.Money -= Bet;
            Bet         *= 2;
        }
Exemple #25
0
        private static PatienceField Move(PatienceField field, CardStack from, CardStack to)
        {
            if (from == null || to == null)
            {
                Console.WriteLine("Invalid move: unknown stack");
                return field;
            }

            var cardToMove = from.GetMovableCards().FirstOrDefault(c => to.CanAccept(c, from));
            if (cardToMove == null)
            {
                Console.WriteLine("Invalid move: none of the cards on from can enter destination");
                return field;
            }
            return field.Move(cardToMove, from, to);
        }
    public Card TransferCard(int position, CardStack newStack)
    {
        if (HasCard)
        {
            Card result = cards[position];

            if (cardRemoved != null)
            {
                cardRemoved(this, new CardRemovedEventArgs(result.id, newStack));
            }

            cards.RemoveAt(position);
            return(result);
        }
        return(null);
    }
Exemple #27
0
 public GameManager()
 {
     cardstack = new CardStack ();
     cardStatus = new CardStatus ();
     CardAxisX = new float[12];
     CardAxisY = new float[2];
     CardExist = new bool[12,2];
     for(int i=0;i<12;i++)
         for(int j=0;j<2;j++)
             CardExist[i,j] = false;
     CardAxisY[0] = -3.75f;
     CardAxisY[1] = -5f;
     getCardAxisX ();
     turing = 0;
     takeCard = false;
 }
Exemple #28
0
    void Awake()
    {
        numberOfPlayer = 4;
        currentPlayer  = 0;
        currentRank    = 0;

        pauseMenu.SetActive(false);
        specialMessage.gameObject.SetActive(false);
        guideMsg.gameObject.SetActive(false);

        players = new List <Player>();
        dealer  = GameObject.Find("Dealer").GetComponent <CardStack>();
        for (int i = 0; i < numberOfPlayer; i++)
        {
            string playerObjectString = "Player" + (i + 1).ToString();

            Player player = GameObject.Find(playerObjectString).GetComponent <Player>();
            player.playerStack = player.GetComponent <CardStack>();

            player.isHuman      = i == 0 ? true : false;
            player.localPlayer  = i == 0 ? true : false;
            player.isPlayerTurn = false;
            player.playerTurn   = player.playerIndex = i;

            player.PlayerName = playerObjectString;
            player.playerStack.cardRemoved += CardStack_cardRemoved;
            player.callDoubt += Player_callDoubt;

            if (i == 0)
            {
                player.RealName = "Neptune";
            }
            if (i == 1)
            {
                player.RealName = "Noire";
            }
            if (i == 2)
            {
                player.RealName = "Blanc";
            }
            if (i == 3)
            {
                player.RealName = "Vert";
            }
            players.Add(player);
        }
    }
        public void GIVEN_a_card_stack_WHEN_AddRange_is_called_with_a_card_THEN_card_is_added()
        {
            // Arrange
            var fakeCard1 = new FakeCard(1, null);
            var fakeCard2 = new FakeCard(2, null);
            var fakeCards = new List <ICard> {
                fakeCard1, fakeCard2
            };
            var cardStack = new CardStack();

            // Act
            cardStack.AddRange(fakeCards);
            var result = cardStack.HasCards();

            // Assert
            Assert.IsTrue(result);
        }
Exemple #30
0
    void PlayCard()
    {
        // for bot only
        if (transform.parent.ToString().Contains("Player"))
        {
            CardStack dealer = GameObject.Find("Dealer").GetComponent <CardStack>();
            Player    player = transform.parent.GetComponent <Player>();

            if (player.isPlayerTurn &&
                !player.isHuman &&
                !player.playerStack.isGameStack)
            {
                //dealer.Add(player.playerStack.Remove(card));
                dealer.Add(player.playerStack.TransferCard(card, dealer));
            }
        }
    }
Exemple #31
0
        public void TestSort()
        {
            Card kingOfDiamonds  = new Card(CardSuit.Diamonds, CardRank.King);
            Card deuceOfDiamonds = new Card(CardSuit.Diamonds, CardRank.Deuce);
            Card fiveOfHearts    = new Card(CardSuit.Hearts, CardRank.Five);
            Card sixOfSpades     = new Card(CardSuit.Spades, CardRank.Six);

            CardStack stack =
                CardStack.GetEmptyStack(CardStackOrientation.FaceDown);

            stack.AddCard(kingOfDiamonds);
            stack.AddCard(deuceOfDiamonds);
            stack.AddCard(fiveOfHearts);
            stack.AddCard(sixOfSpades);

            //facedown sort by suit/rank
            stack.Sort(Card.COMPARE_SUIT_RANK);
            Assert.AreEqual(fiveOfHearts, stack.Contents[0]);
            Assert.AreEqual(sixOfSpades, stack.Contents[1]);
            Assert.AreEqual(deuceOfDiamonds, stack.Contents[2]);
            Assert.AreEqual(kingOfDiamonds, stack.Contents[3]);

            //face up sort by suit/rank
            stack.Flip();
            stack.Sort(Card.COMPARE_SUIT_RANK);
            Assert.AreEqual(fiveOfHearts, stack.Contents[0]);
            Assert.AreEqual(sixOfSpades, stack.Contents[1]);
            Assert.AreEqual(deuceOfDiamonds, stack.Contents[2]);
            Assert.AreEqual(kingOfDiamonds, stack.Contents[3]);

            //face down sort by rank/suit
            stack.Flip();
            stack.Sort(Card.COMPARE_RANK_SUIT);
            Assert.AreEqual(deuceOfDiamonds, stack.Contents[0]);
            Assert.AreEqual(fiveOfHearts, stack.Contents[1]);
            Assert.AreEqual(sixOfSpades, stack.Contents[2]);
            Assert.AreEqual(kingOfDiamonds, stack.Contents[3]);

            //face up sort by rank/suit
            stack.Flip();
            stack.Sort(Card.COMPARE_RANK_SUIT);
            Assert.AreEqual(deuceOfDiamonds, stack.Contents[0]);
            Assert.AreEqual(fiveOfHearts, stack.Contents[1]);
            Assert.AreEqual(sixOfSpades, stack.Contents[2]);
            Assert.AreEqual(kingOfDiamonds, stack.Contents[3]);
        }
        public void TestCardDeckGetsMaximumFourCards()
        {
            CardStack stack = new CardStack();
            CardDeck  deck  = new CardDeck();

            stack.AddPackage(_package);
            stack.AddPackage(_package);
            deck.AddCard(stack.CardCollection[0]);
            deck.AddCard(stack.CardCollection[1]);
            deck.AddCard(stack.CardCollection[2]);
            deck.AddCard(stack.CardCollection[3]);

            deck.RemoveCard(deck.CardCollection[2]);
            deck.AddCard(stack.CardCollection[4]);

            Assert.AreEqual(4, deck.CardCollection.Count);
        }
Exemple #33
0
    void Awake()
    {
        if ((Type == StackType.Boss && _bossInstance != null) || (Type == StackType.Buff && _buffInstance != null))
        {
            Destroy(gameObject);
            return;
        }

        if (Type == StackType.Buff)
        {
            _buffInstance = this;
        }

        if (Type == StackType.Boss)
        {
            _bossInstance = this;
        }
    }
Exemple #34
0
        public void Initialize()
        {
            sourceToModify       = new TestCardStack();
            sourceToCompare      = new TestCardStack();
            destinationToModify  = new TestCardStack();
            destinationToCompare = new TestCardStack();

            for (int i = 0; i < stackSize; i++)
            {
                Card rand1 = RandomCard.GetRandomCard();
                Card rand2 = RandomCard.GetRandomCard();

                sourceToCompare.CardList.Add(rand1);
                sourceToModify.CardList.Add(rand1);
                destinationToCompare.CardList.Add(rand2);
                destinationToModify.CardList.Add(rand2);
            }
        }
        public void GIVEN_a_card_stack_with_two_cards_WHEN_top_card_is_called_THEN_last_card_added_is_returned()
        {
            // Arrange
            var fakeCard1 = new FakeCard(1, null);
            var fakeCard2 = new FakeCard(2, null);
            var cardStack = new CardStack();

            cardStack.Add(fakeCard1);
            cardStack.Add(fakeCard2);

            // Act

            var result = cardStack.TopCard();

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual("Fake2", result.Name);
        }
Exemple #36
0
        private void PlayersDrawCards()
        {
            foreach (var player in ListPlayers)
            {
                player.Hand.Add(CardStack.DrawCard());
                player.Hand.Add(CardStack.DrawCard());
            }

            //if (PlayerRoles[3] > 0) // pas mal sur que ca va planter si playerroles.length <= 3
            //                        // en fait ca sert a quoi? le foreach en haut devrait pogner toute les playerroles
            //{
            //    foreach (var player in ListPlayers)
            //    {
            //        player.GetHand().Add(CardStack.DrawCard());
            //        player.GetHand().Add(CardStack.DrawCard());
            //    }
            //}
        }
Exemple #37
0
        // TODO: Abstract a lot of this out into a new SolitaireGameBuilder class.
        public SolitaireGame()
        {
            StatusMessages = new List <string>();

            deck = new DeckBuilder().BuildDeck(true);

            drawStack = new CardStack(true);
            drawer    = new SolitaireDrawer();

            columns = new List <StackColumn>();

            // Create 7 stacks of face down cards.
            for (int i = 0; i < 7; i++)
            {
                CardStack   stack  = new CardStack(false);
                StackColumn column = new StackColumn();
                column.FaceDownStack = stack;
                columns.Add(column);
            }

            // Distribute the cards across the stacks.
            for (int i = 0; i < 7; i++)
            {
                for (int ii = i; ii < 7; ii++)
                {
                    CardStack stack     = columns[ii].FaceDownStack;
                    Card      drawnCard = deck.DrawCard();
                    stack.Add(drawnCard);
                }
            }

            // Transfer top cards to their own stacks.
            for (int i = 0; i < columns.Count; i++)
            {
                StackColumn column        = columns[i];
                CardStack   faceDownStack = column.FaceDownStack;
                CardStack   faceUpStack   = new CardStack(true);
                Card        topCard       = faceDownStack.DrawCard();
                faceUpStack.Add(topCard);
                column.FaceUpStack = faceUpStack;
            }

            TransferCardToDrawStack();
        }
Exemple #38
0
        private bool canMoveCards(CardStack movingStack, CardStack destStack)
        {
            Card movingCompareCard, receivingCompareCard;

            movingCompareCard = movingStack[movingStack.Count - 1];

            if (destStack.Count > 0)
            {
                receivingCompareCard = destStack[destStack.Count - 1];
                bool isAlternatingSuit = movingCompareCard.IsRed != receivingCompareCard.IsRed;
                bool isOneValueLower   = movingCompareCard.Value == receivingCompareCard.Value - 1;

                return(isOneValueLower && isAlternatingSuit);
            }
            else
            {
                return(true);
            }
        }
        public void GIVEN_a_card_stack_that_has_cards_WHEN_clear_is_called_THEN_stack_has_no_cards()
        {
            // Arrange
            var fakeCard1 = new FakeCard(1, null);
            var fakeCard2 = new FakeCard(2, null);
            var fakeCards = new List <ICard> {
                fakeCard1, fakeCard2
            };
            var cardStack = new CardStack();

            cardStack.AddRange(fakeCards);

            // Act
            cardStack.Clear();
            var result = cardStack.HasCards();

            // Assert
            Assert.IsFalse(result);
        }
Exemple #40
0
        private void Awake()
        {
            Log("Welcome to Sumoga");
            InitPlayer();

            // create a world
            _world = new World(
                new world.Score()
                );

            // initialize game card stack
            var gameCards = card.Utils.LoadCards();

            cardStack = new CardStack(gameCards);

            var gameItems = inventory.Utils.LoadItems();

            shop = new Shop(gameItems);
        }
        public void Sync(CardStack stack)
        {
            _cardStack     = stack;
            nameLabel.text = _cardStack.Name;

            contentCardZone.transform.DestroyAllChildren();
            var cards          = _cardStack.Cards.Reverse().ToList();
            var cardModelIndex = cards.Count - 1;

            foreach (var unityCard in cards)
            {
                var cardModel = Instantiate(cardModelPrefab, contentCardZone.transform).GetOrAddComponent <CardModel>();
                cardModel.Value = unityCard;
                cardModel.Index = cardModelIndex;
                cardModelIndex--;
            }

            countLabel.text = _cardStack.Cards.Count.ToString();
        }
        // Start is called before the first frame update
        void Start()
        {
            render    = gameObject.GetComponent <RenderCard>();
            storeCard = new CardStack(true);
            cam       = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <Camera>();

            selectedDeck     = null;
            prevInteractable = null;

            if (onCardPickup == null)
            {
                onCardPickup = new UnityEvent <Interactable, Card>();
            }

            if (onCardPlace == null)
            {
                onCardPlace = new UnityEvent <Interactable, Interactable>();
            }
        }
Exemple #43
0
 public void ResetCardStacks()
 {
     Clear();
     layoutContent.DestroyAllChildren();
     CardStacks.Clear();
     for (int i = 0; i < CardStackCount; i++)
     {
         CardStack newCardStack = Instantiate(cardStackPrefab, layoutContent).GetOrAddComponent <CardStack>();
         newCardStack.type = CardStackType.Vertical;
         newCardStack.scrollRectContainer    = scrollRect;
         newCardStack.DoesImmediatelyRelease = true;
         newCardStack.OnAddCardActions.Add(OnAddCardModel);
         newCardStack.OnRemoveCardActions.Add(OnRemoveCardModel);
         CardStacks.Add(newCardStack);
         newCardStack.GetComponent <VerticalLayoutGroup>().spacing = cardStackPrefab.GetComponent <VerticalLayoutGroup>().spacing
                                                                     *(CardGameManager.PixelsPerInch * CardGameManager.Current.CardSize.y / PreHeight);
     }
     layoutContent.sizeDelta = new Vector2(cardStackPrefab.GetComponent <RectTransform>().rect.width *CardStacks.Count,
                                           layoutContent.sizeDelta.y);
 }
Exemple #44
0
 public GameManager()
 {
     cardstack  = new CardStack();
     cardStatus = new CardStatus();
     CardAxisX  = new float[12];
     CardAxisY  = new float[2];
     CardExist  = new bool[12, 2];
     for (int i = 0; i < 12; i++)
     {
         for (int j = 0; j < 2; j++)
         {
             CardExist[i, j] = false;
         }
     }
     CardAxisY[0] = -3.75f;
     CardAxisY[1] = -5f;
     getCardAxisX();
     turing   = 0;
     takeCard = false;
 }
Exemple #45
0
 private void MoveSelectedCardsToStack(ArrayList cardList, CardStack stack)
 {
     foreach (Card card in cardList)
     {
         stack.Push(card);
     }
     ReorderCards();
 }
 public void doFlyCardsFromStackToStack(CardStack start, CardStack destination, int noCards)
 {
     if (onFlyCardsFromStackToStack != null)
         onFlyCardsFromStackToStack(start, destination, noCards);
 }
        public SpiderGame(CardInfo.SuitEnum[] level)
        {
            Width = DefaultWidth;
            Height = DefaultHeight;

            //this.ClipTo(0, 0, DefaultWidth, DefaultHeight);

            var GameOverBox = new TextBox
            {
                Width = DefaultWidth,
                TextAlignment = System.Windows.TextAlignment.Center,
                Foreground = Brushes.White,
                Background = Brushes.Transparent,
                BorderThickness = new Thickness(0),
                IsReadOnly = true,
                FontSize = 24,
            }.MoveTo(0, DefaultHeight / 2).AttachTo(this);

            GameOver += delegate
            {
                GameOverBox.Text = "Congratulations! You Won!";
            };


            // add autoscroll ?
            this.MyDeck.SizeTo(DefaultWidth, DefaultHeight);
            this.MyDeck.AttachContainerTo(this);
            this.MyDeck.GetRank = e => (int)RankMapping[e];
            this.MyDeck.CardCustomBackgroundSource = new Abstractatech.Avalon.Cards.Avalon.Images.spider().Source;


            //this.MyDeck.Overlay.Opacity = 0.6;

            MyStatus = new StatusControl().AttachContainerTo(this).MoveContainerTo(
                (DefaultWidth - StatusControl.Width) / 2,
                (DefaultHeight - StatusControl.Height)
            );
            MyStatus.Container.Hide();

            System.Console.WriteLine("--- spider ---");






            System.Console.WriteLine("adding card infos... ");

            MyDeck.UnusedCards.AddRange(CardInfo.By(2, level));




            System.Console.WriteLine("creating stacklists... ");

            DealStacks = MyDeck.CreateStackList();
            PlayStacks = MyDeck.CreateStackList();
            DeadStacks = MyDeck.CreateStackList();

            PlayStacks.ListChanged +=
                (sender, args) =>
                {
                    if (args.ListChangedType == ListChangedType.ItemAdded)
                    {
                        var s = PlayStacks[args.NewIndex];


                    }

                };



            DeadStacks.ListChanged +=
                (sender, args) =>
                {
                    if (args.ListChangedType == ListChangedType.ItemAdded)
                    {
                        var s = DeadStacks[args.NewIndex];

                        //s.Control.Hide();

                        s.CardMargin = new Vector { X = 2, Y = 0 };

                        s.Cards.ListChanged +=
                            (sender2, args2) =>
                            {
                                if (args2.ListChangedType == ListChangedType.ItemAdded)
                                {
                                    //s[args2.NewIndex].Enabled = false;
                                }

                            };

                    }
                };


            #region drag rules
            MyDeck.ApplyCardRules += delegate(Card c)
            {
                c.Moved +=
                     delegate
                     {
                         if (c.StackedCards.Length == 0)
                         {
                             CheckForGoodSuit(c.CurrentStack);

                             MyStatus.Moves++;
                             MyStatus.Score--;

                             MyStatus.Update();
                         }

                         CheckForWin();
                     };

                c.ValidateDragStart +=
                    delegate
                    {
                        if (Cheat)
                            return true;

                        return c.SelectedCards.AllWithPrevious(
                            (Previous, Current) =>
                            {
                                if (Previous.Info.Suit != Current.Info.Suit)
                                    return false;

                                return Previous.Rank + 1 == Current.Rank;
                            }
                        );
                    };

                c.ValidateDragStop +=
                    CandidateStack =>
                    {
                        if (Cheat)
                            return true;


                        if (PlayStacks.Contains(CandidateStack))
                        {
                            if (CandidateStack.Cards.Count == 0)
                                return true;

                            var Candidate = CandidateStack.Last();

                            // we do not care about the suit

                            if (c.Rank == Candidate.Rank + 1)
                                //if (c.Info.Suit == Candidate.Info.Suit)
                                return true;

                            return false;
                        }

                        return false;
                    };
            };

            #endregion

            System.Console.WriteLine("creating playstack... ");

            var Margin = (DefaultWidth - CardInfo.Width * 10) / 11;


            PlayStacks.AddRange(
                Enumerable.Range(0, 10).ToArray(
                i =>
                    new CardStack
                    {
                        Name = "PlayStack " + i,
                        CardMargin = new Vector { Y = 20 }
                    }.MoveTo(
                        Margin + i * (CardInfo.Width + Margin),
                        Margin + 40
                    ).Apply(
                        s =>
                        {
                            if (i < 4)
                                s.Cards.AddRange(MyDeck.FetchCards(5));
                            else
                                s.Cards.AddRange(MyDeck.FetchCards(4));

                            if (Cheat)
                                s.Cards.ForEach(k => k.VisibleSide = Card.SideEnum.TopSide);

                        }
                    )
                )
            );


            PlayStacks.ForEach(
                delegate(CardStack s)
                {

                    s.Cards.ListChanged +=
                        (sender, args) =>
                        {
                            if (args.ListChangedType == ListChangedType.ItemDeleted)
                                //if (MyStatus.Ready)
                                s.RevealLastCard();
                        };

                }
            );


            DealStacks.ListChanged +=
                (sender, args) =>
                {
                    if (args.ListChangedType == ListChangedType.ItemAdded)
                    {
                        var s = DealStacks[args.NewIndex];

                        s.CardMargin = new Vector { Y = 0, X = 0 };
                        s.Update();

                        s.Click +=
                            delegate
                            {
                                if (DealStacks.Contains(s))
                                {
                                    //if (MyStatus.Ready)
                                    DealRow(null);
                                }
                                else
                                {
                                    System.Console.WriteLine("whoops wrong stack click - " + args.NewIndex);

                                }
                            };
                    }
                };


            System.Console.WriteLine("creating dealstack... ");

            var dealpoint = new Point
            {
                X = DefaultWidth - CardInfo.Width - Margin,
                Y = DefaultHeight - CardInfo.Height - Margin - 17 - Margin
            };


            while (MyDeck.UnusedCards.Count > 0)
            {
                var s = new CardStack { MyDeck.FetchCards(10) };
                //s.Overlay.Opacity = 1;
                s.Name = "DealStack";

                DealStacks.Add(
                    s.MoveTo(Convert.ToInt32(dealpoint.X), Convert.ToInt32(dealpoint.Y))
                );

                dealpoint.X -= 10;
            }

            // we will collect cards here
            DeadStacks.Add(new CardStack().MoveTo(Margin, Convert.ToInt32(dealpoint.Y)));



            DealRow(
                delegate
                {

                    MyStatus.Score = 500;
                    MyStatus.Moves = 0;
                    MyStatus.Update();
                    MyStatus.Container.Show();
                }
            );



        }
        public SolitaireGame()
        {
            Width = DefaultWidth;
            Height = DefaultHeight;

            System.Console.WriteLine("--- solitare ---");

            this.MyStatus = new StatusControl().AttachContainerTo(this).MoveContainerTo(
                (DefaultWidth - StatusControl.Width) / 2,
                (DefaultHeight - StatusControl.Height)
            );


            var GameOverBox = new TextBox
            {
                Width = DefaultWidth,
                TextAlignment = System.Windows.TextAlignment.Center,
                Foreground = Brushes.White,
                Background = Brushes.Transparent,
                BorderThickness = new Thickness(0),
                IsReadOnly = true,
                FontSize = 24,
            }.MoveTo(0, DefaultHeight / 2).AttachTo(this);


            // add autoscroll ?
            this.MyDeck.SizeTo(DefaultWidth, DefaultHeight);
            this.MyDeck.AttachContainerTo(this);
            this.MyDeck.GetRank = e => (int)RankMapping[e];


            System.Console.WriteLine("adding card infos... ");

            MyDeck.UnusedCards.AddRange(CardInfo.FullDeck());

            this.MyStatus.Score = -1;
            this.MyStatus.CardsLeft = this.MyDeck.UnusedCards.Count;
            this.MyStatus.Update();


            MyDeck.Stacks.ListChanged +=
                (sender, args) =>
                {
                    if (args.ListChangedType == ListChangedType.ItemAdded)
                    {
                        // fixme: dynamically set backside for this card

                        //var s = MyDeck.Stacks[args.NewIndex];
                        //s.SetBackground(MyDeck.GfxPath + "/spider.empty.png");
                    }
                };


            System.Console.WriteLine("creating stacklists... ");

            PlayStacks = MyDeck.CreateStackList();
            TempStacks = MyDeck.CreateStackList();
            GoalStacks = MyDeck.CreateStackList();

            PlayStacks.ForEachNewItem(
                delegate(CardStack s)
                {
                    s.CardMargin = new Vector { Y = 20 };
                    s.Update();

                    s.Cards.ListChanged +=
                        (sender, args) =>
                        {
                            if (args.ListChangedType == ListChangedType.ItemDeleted)
                                s.RevealLastCard();
                        };

                }
            );



            GameOver += delegate
            {
                GameOverBox.Text = "Congratulations! You Won!";
            };


            System.Console.WriteLine("creating goalstack... ");

            var Margin = (DefaultWidth - CardInfo.Width * 7) / 8;

            var ReserveStack = new CardStack().MoveTo(Margin, Margin);
            var UsedChoiceStack = new CardStack().MoveTo(Margin + CardInfo.Width + Margin, Margin);
            var ChoiceStack = new CardStack().MoveTo(Margin + CardInfo.Width + Margin, Margin);


            TempStacks.AddRange(
                ReserveStack,
                UsedChoiceStack,
                ChoiceStack
            );


            ReserveStack.CardMargin.X = 0;
            ReserveStack.CardMargin.Y = 0;

            UsedChoiceStack.CardMargin.X = 0;
            UsedChoiceStack.CardMargin.Y = 0;

            ChoiceStack.CardMargin.X = 20;
            ChoiceStack.CardMargin.Y = 0;



            #region rules
            Func<bool> Rule_WinConditionMet =
                delegate
                {
                    if (PlayStacks.All(s => s.Cards.Count > 0))
                        return false;

                    if (TempStacks.All(s => s.Cards.Count == 0))
                        return false;

                    return true;
                };

            Func<Card, Card, bool> RuleForStackingCardsInGoalStack =
                (Previous, Current) =>
                {
                    if (Cheat)
                        return true;

                    if (Previous == null)
                        return Current.Info.Rank == CardInfo.RankEnum.RankAce;

                    if (Previous.Info.Suit != Current.Info.Suit)
                        return false;

                    if (Previous.Rank != Current.Rank + 1)
                        return false;

                    return true;
                };

            Func<Card, Card, bool> RuleForStackingCardsInPlayStack =
                (Previous, Current) =>
                {
                    if (Cheat)
                        return true;

                    if (Previous.Info.SuitColor == Current.Info.SuitColor)
                        return false;

                    if (Previous.Rank + 1 != Current.Rank)
                        return false;

                    return true;
                };

            #endregion

            MyDeck.ApplyCardRules += delegate(Card card)
            {
                card.MovedByLocalPlayer +=
                    delegate
                    {
                        MyStatus.Moves++;
                        MyStatus.Update();

                    };

                card.ValidateDragStart =
                    delegate
                    {
                        if (Cheat)
                            return true;

                        // cannot remove cards from goal stack
                        if (GoalStacks.Contains(card))
                            return false;

                        if (TempStacks.Contains(card))
                        {
                            return (card == ChoiceStack.LastOrDefault());
                        }

                        // cannot drag a pile of cards unless alternate colors and descending numbers
                        return card.SelectedCards.AllWithPrevious(RuleForStackingCardsInPlayStack);
                    };


                card.ValidateDragStop =
                    CandidateStack =>
                    {
                        if (Cheat)
                            return true;

                        if (TempStacks.Contains(CandidateStack))
                        {
                            return false;
                        }

                        if (PlayStacks.Contains(CandidateStack))
                        {
                            if (CandidateStack.Cards.Count == 0)
                                return card.Info.Rank == CardInfo.RankEnum.RankKing;


                            return (RuleForStackingCardsInPlayStack(CandidateStack.Cards.Last(), card));
                        }

                        if (GoalStacks.Contains(CandidateStack))
                        {
                            if (card.StackedCards.Length > 0)
                                return false;

                            return (RuleForStackingCardsInGoalStack(CandidateStack.Cards.LastOrDefault(), card));

                        }

                        return false;
                    };
            };



            GoalStacks.ForEachNewItem(
                s =>
                {
                    s.CardMargin.X = 0;
                    s.CardMargin.Y = 0;

                    s.Cards.ForEachNewItem(
                        card =>
                        {
                            this.MyStatus.CardsLeft--;
                            this.MyStatus.Update();

                            if (card.Info.Rank == CardInfo.RankEnum.RankKing)
                            {

                                card.VisibleSide = Card.SideEnum.BackSide;


                                if (Rule_WinConditionMet())
                                {
                                    // winner!
                                    MyDeck.Sounds.win();

                                    if (this.GameOver != null)
                                        this.GameOver();
                                }
                            }
                        }
                    );
                }
            );
            GoalStacks.AddRange(
                Enumerable.Range(0, 4).ToArray(
                    i => new CardStack().MoveTo(DefaultWidth - ((CardInfo.Width + Margin) * 4) + i * (CardInfo.Width + Margin), Margin)
                )
            );

            System.Console.WriteLine("creating playstack... ");

            PlayStacks.AddRange(
                Enumerable.Range(0, 7).ToArray(
                    i => new CardStack().MoveTo(Margin + i * (CardInfo.Width + Margin), Margin * 3 + CardInfo.Height).Apply(s => s.Cards.AddRange(MyDeck.FetchCards(i + 1)))
                )
            );

            ReserveStack.Cards.AddRange(MyDeck.FetchCards(MyDeck.UnusedCards.Count));
            ReserveStack.Update();

            PlayStacks.ForEach(k => k.Last().VisibleSide = Card.SideEnum.TopSide);


            UsedChoiceStack.Cards.ForEachNewItem(
                card => card.VisibleSide = Card.SideEnum.BackSide
            );

            ChoiceStack.Cards.ForEachNewItem(
                card => card.VisibleSide = Card.SideEnum.TopSide
            );

            ChoiceStack.Click +=
                delegate
                {
                    ChoiceStack.Update();
                }
            ;

            ReserveStack.Overlay.Cursor = Cursors.Hand;
            ReserveStack.Cards.ForEachNewItem(
                card => card.VisibleSide = Card.SideEnum.BackSide
            );





            var ReserveStackEnabled = true;

            ReserveStack.Click +=
                delegate
                {
                    if (!ReserveStackEnabled)
                        return;

                    if (ReserveStack.Cards.Count == 0)
                    {
                        MyDeck.Sounds.deal();

                        ChoiceStack.FirstOrDefault().Apply(
                            card =>
                            {

                                card.AnimatedMoveToStack(ReserveStack, null, null);
                            }
                        );

                        UsedChoiceStack.FirstOrDefault().Apply(
                            card =>
                            {

                                card.AnimatedMoveToStack(ReserveStack, null, null);
                            }
                        );
                    }
                    else
                    {
                        ReserveStackEnabled = false;


                        ChoiceStack.Cards.ToArray().ForEach(
                            card =>
                            {
                                card.AttachToStack(UsedChoiceStack);
                            }
                        );
                        UsedChoiceStack.Update();

                        3.Times(
                            SignalNext =>
                                ReserveStack.LastOrDefault().Apply(
                                    card =>
                                    {
                                        card.BringToFront();

                                        Console.WriteLine(card.ToString());

                                        card.AnimatedMoveToStack(ChoiceStack, null, null);

                                        MyDeck.Sounds.deal();

                                        200.AtDelay(SignalNext);
                                    }
                                )
                        );

                    }


                    // a timepoint when movements are done.. this should ba an event actually
                    2000.AtDelay(() => ReserveStackEnabled = true);

                };
        }
Exemple #49
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LearnLogic"/> class.
        /// </summary>
        /// <remarks>Documented by Dev02, 2008-04-22</remarks>
        public LearnLogic(GetLoginInformation getLoginDelegate, DataAccessErrorDelegate dataAccessErrorDelegate)
        {
            GetLoginDelegate = getLoginDelegate;
            DataAccessErrorDelegate = dataAccessErrorDelegate;

            cardStack = new CardStack(this);
            this.LearningModuleOpened += new EventHandler(LearnLogic_LearningModuleOpened);
            this.user = new User(this);
            this.CardStack.StackChanged += new EventHandler(CardStack_StackChanged);
        }
 public override void Move(Card c, CardStack s)
 {
     throw new NotImplementedException();
 }
        public void CardStackUnitTest()
        {
            if (TestInfrastructure.IsActive(TestContext))
            {
                using (Dictionary dictionary = TestInfrastructure.GetConnection(TestContext))
                {
                    DictionaryTest.FillDictionary(dictionary);

                    CardStack target = new CardStack(new LearnLogic(MLifterTest.DAL.OpenUserProfileTests.GetUserAdmin, (MLifter.DAL.DataAccessErrorDelegate)delegate { return; }));
                    target.StackChanged += new EventHandler(CardStack_StackChanged);
                    cardstackChanged = false;
                    target.Clear();
                    Assert.IsTrue(cardstackChanged, "CardStackChanged event did not fire for Clear.");

                    int cardcount = 0;
                    int rightcount = 0;
                    TimeSpan duration = new TimeSpan(0);

                    foreach (ICard card in dictionary.Cards.Cards)
                    {
                        for (int i = 0; i < 100; i++)
                        {
                            cardcount++;
                            bool promoted = GetRandBool();
                            if (promoted)
                                rightcount++;
                            DateTime asked = DateTime.Now - new TimeSpan(0, 0, random.Next(1000));
                            DateTime answered = DateTime.Now;
                            duration += (answered - asked);
                            AnswerResult result = promoted ? AnswerResult.Correct : AnswerResult.Wrong;
                            StackCard stackCard = new StackCard(card, result, promoted, EQueryDirection.Question2Answer, LearnModes.Word, asked, answered, Thread.CurrentThread.CurrentCulture, Thread.CurrentThread.CurrentCulture, card.Answer.ToString(), 0, 0, false, dictionary, 0);

                            cardstackChanged = false;
                            target.Push(stackCard);
                            Assert.IsTrue(cardstackChanged, "CardStackChanged event did not fire for Push.");
                        }
                    }

                    Assert.AreEqual(cardcount, target.Count, "Not all cards were added to the stack.");
                    Assert.AreEqual(duration, target.SessionDuration, "Session duration sum does not match.");
                    Assert.AreEqual(rightcount, target.RightCount, "RightCount does not match.");
                    Assert.AreEqual(cardcount - rightcount, target.WrongCount, "WrongCount does not match.");
                    Assert.IsTrue(rightcount > 0 && target.VisibleStack.Count > 0, "No StackCards in VisibleStack property.");
                }
            }
        }
Exemple #52
0
 private static void CompareSlots(CardStack cardStack1, CardStack cardStack2)
 {
     if (cardStack1.TopSuit == cardStack2.TopSuit)
     {
         if (cardStack1.TopValue.HasValue && cardStack2.TopValue.HasValue)
         {
             if (cardStack1.TopValue > cardStack2.TopValue)
             {
                 cardStack2.Pop();
             }
             else
             {
                 cardStack1.Pop();
             }
         }
     }
 }
Exemple #53
0
        public void AnimatedMoveToStack(CardStack CandidateStack, Future GroupMovedByLocalPlayer, FutureStream Chain)
        {

            Chain.Continue(
                SignalNext =>
                {
                    var SelectedCards = this.SelectedCards.ToArray();

                    var SignalNextDelayed = SignalNext.WhereCounter(i => i == SelectedCards.Length - 1);


                    using (GroupMovedByLocalPlayer)
                        SelectedCards.ForEach(
                            (Card k, int index) =>
                            {
                                k.BringToFront();
                                k.BringOverlayToFront();

                                if (index == 0)
                                    k.AttachToStack(CandidateStack, GroupMovedByLocalPlayer);
                                else
                                    k.AttachToStack(CandidateStack);

                                k.AnimatedMoveTo(
                                     k.LocationInStack,
                                    SignalNextDelayed
                                );

                                k.AnimatedOpacity = 1;
                            }
                        );
                }
            );
        }
 private void SetupMove(CardStack cardStack)
 {
     if (_origin == null)
         SetOrigin(cardStack);
     else
         SetDestination(cardStack);
 }
 private void SetDestination(CardStack destination)
 {
     if (destination == _origin) return;
     var origin = _origin;
     _origin = null;
     if (origin == null || !origin.Any()) return;
     var cardToMove = origin.GetMovableCards().FirstOrDefault(destination.CanAccept);
     if (cardToMove == null)
     {
         return;
     }
     origin.Move(cardToMove, destination);
 }
Exemple #56
0
 public void AnimatedMoveToStack(CardStack CandidateStack, Future GroupMovedByLocalPlayer)
 {
     AnimatedMoveToStack(CandidateStack, GroupMovedByLocalPlayer, this.CurrentDeck.AnimatedMoveToChain);
 }
 private void SetOrigin(CardStack cardStack)
 {
     _origin = cardStack;
 }
Exemple #58
0
 public void AttachToStack(CardStack s)
 {
     AttachToStack(s, null);
 }
Exemple #59
0
 private void InitializeSlots()
 {
     this.Slot1 = new CardStack();
     this.Slot2 = new CardStack();
     this.Slot3 = new CardStack();
     this.Slot4 = new CardStack();
 }
		public OrcasAvalonApplicationCanvas()
		{
			Width = DefaultWidth;
			Height = DefaultHeight;

			new[] {
				Colors.Black,
				Colors.Green,
				Colors.Black
			}.ToGradient(DefaultHeight / 4).Select(
				(c, i) =>
					new Rectangle
					{
						Fill = new SolidColorBrush(c),
						Width = DefaultWidth,
						Height = 4,
					}.MoveTo(0, i * 4).AttachTo(this)
			).ToArray();


			// step 1 - can we show a card?
			// step 2 drag the cards around

			var deck = new CardDeck().AttachContainerTo(this);

			deck.SizeTo(DefaultWidth, DefaultHeight);

			deck.UnusedCards.AddRange(CardInfo.FullDeck());


			var PlayStack = deck.CreateStackList();

			{
				PlayStack.Add(
					new CardStack
					{

					}.MoveTo(64, 64)
				);

				PlayStack.Add(
					new CardStack
					{

					}.MoveTo(64 + CardInfo.Width, 64)
				);

				var s3 =
					new CardStack
					{
						deck.FetchCard,
						deck.FetchCard,
						deck.FetchCard,
					}.MoveTo(64 + CardInfo.Width * 2, 64);

				PlayStack.Add(s3);

				s3.ForEach(k => k.VisibleSide = Card.SideEnum.TopSide);
			}


			{
				PlayStack.Add(
					new CardStack
					{

					}.MoveTo(64, 264)
				);

				PlayStack.Add(
					new CardStack
					{

					}.MoveTo(64 + CardInfo.Width, 264)
				);

				var s3 =
					new CardStack
					{
						deck.FetchCard,
						deck.FetchCard,
						deck.FetchCard,
					}.MoveTo(64 + CardInfo.Width * 2, 264);

				PlayStack.Add(s3);

				s3.RevealLastCard();
			}

			// step 3 drag cards from stack to stack
		}