예제 #1
0
        private void SetContainer(DeckName newDeck, int cardsCount)
        {
            _openDecks[newDeck] = new List <ContainerViewModel>();

            for (int i = 1; i <= cardsCount; i++)
            {
                var randomCard = _closedDecks[DeckName.MainDeckCard].Last();
                randomCard.CurrentDeck = newDeck;
                string cardPath = Properties.Resources.BackCardPath;
                if (i == cardsCount)
                {
                    cardPath = randomCard.CardPath;
                }
                var container = new ContainerViewModel()
                {
                    CardPath              = cardPath,
                    FrontCardPath         = randomCard.CardPath,
                    CardName              = randomCard.CardName.Value,
                    CardShape             = randomCard.CardShape.Value,
                    CardValue             = randomCard.CardValue,
                    DeckName              = newDeck,
                    TakeCardEventResource = TakeCardEventResource,
                };
                _openDecks[newDeck].Add(container);
                _closedDecks[DeckName.MainDeckCard].Remove(randomCard);
            }
        }
예제 #2
0
        private List <ContainerViewModel> SetDeckCards(List <ContainerViewModel> deckCards, DeckName targetDeck, IMoveable moveableItem)
        {
            deckCards.Add(new ContainerViewModel()
            {
                CardPath              = moveableItem.CardPath,
                FrontCardPath         = moveableItem.CardPath,
                CardName              = moveableItem.CardName.Value,
                CardShape             = moveableItem.CardShape.Value,
                CardValue             = moveableItem.CardValue,
                DeckName              = targetDeck,
                TakeCardEventResource = TakeCardEventResource,
            });

            if (moveableItem is CardViewModel)
            {
                _moveableCard = null;
            }
            else if (moveableItem is ContainerViewModel)
            {
                if ((moveableItem as ContainerViewModel).SubContainer != null)
                {
                    deckCards = SetDeckCards(deckCards, targetDeck, (moveableItem as ContainerViewModel).SubContainer);
                }
                _moveableContainer = null;
            }

            return(deckCards);
        }
예제 #3
0
        public GameViewModel(MainViewModel mainViewModel, MenuViewModel menuViewModel, RuleSetViewModel ruleSet)
        {
            _mainViewModel = mainViewModel;
            _menuViewModel = menuViewModel;
            _ruleSet       = ruleSet;

            _transparentCard = new CardViewModel()
            {
                CardPath = Properties.Resources.EmptyCardPath
            };
            _transparentContainer = new ContainerViewModel()
            {
                CardPath = _transparentCard.CardPath
            };
            _backCard = new CardViewModel()
            {
                CardPath = Properties.Resources.BackCardPath
            };

            TakeCardEventResource = new EventResource(EventName.MouseLeftButtonDownEvent);

            CreateClosedDecks();
            CreateOpenDecks();

            Deal  = new RelayCommand(DealCard);
            Reset = new RelayCommand(ResetGame);
            Back  = new RelayCommand(BackToMenu);
            Undo  = new RelayCommand(UndoLastCard);

            if (_ruleSet.TimerEnabled)
            {
                _timer          = new Timer(1000);
                _timer.Elapsed += _timer_Elapsed;
                _timeSpan       = TimeSpan.FromSeconds(1);
                _timer.Start();
                _timer_Elapsed(this, null);
            }

            UndoBtnEnabled = false;
            if (!_ruleSet.UndoEnabled)
            {
                UndoBtnVisibility = Visibility.Hidden;
            }
        }
예제 #4
0
        public void SetMoveableContainerBinding(List <ContainerViewModel> moveableCardsSet)
        {
            DeckName?currentDeck = null;

            foreach (var container in moveableCardsSet)
            {
                _openDecks[container.DeckName].RemoveAll(c => c.CardName == container.CardName && c.CardShape == container.CardShape);
                currentDeck = container.DeckName;
            }

            if (!currentDeck.HasValue)
            {
                throw new Exception();
            }
            if (_openDecks[currentDeck.Value].LastOrDefault() != null)
            {
                _openDecks[currentDeck.Value].Last().SubContainer = null;
            }
            _moveableContainer = moveableCardsSet.First();
        }