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); } }
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); }
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; } }
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(); }