public SnagCardGameMainViewModel(CommandContainer commandContainer, SnagCardGameMainGameClass mainGame, SnagCardGameVMData viewModel, BasicData basicData, TestOptions test, IGamePackageResolver resolver ) : base(commandContainer, mainGame, viewModel, basicData, test, resolver) { _mainGame = mainGame; _model = viewModel; _model.Deck1.NeverAutoDisable = true; _model.Bar1.SendEnableProcesses(this, () => { if (_mainGame !.SaveRoot !.GameStatus != EnumStatusList.Normal) { return(false); } return(!_mainGame.SaveRoot.FirstCardPlayed); });
public SnagCardGameMainGameClass(IGamePackageResolver mainContainer, IEventAggregator aggregator, BasicData basicData, TestOptions test, SnagCardGameVMData currentMod, IMultiplayerSaveState state, IAsyncDelayer delay, ICardInfo <SnagCardGameCardInformation> cardInfo, CommandContainer command, SnagCardGameGameContainer gameContainer, ITrickData trickData, ITrickPlay trickPlay, IAdvancedTrickProcesses aTrick ) : base(mainContainer, aggregator, basicData, test, currentMod, state, delay, cardInfo, command, gameContainer, trickData, trickPlay) { _model = currentMod; _command = command; _gameContainer = gameContainer; _aTrick = aTrick; _gameContainer.TakeCardAsync = TakeCardAsync; }
public static int CardToPlay(SnagCardGameMainGameClass mainGame, SnagCardGameVMData model) { if (mainGame.SaveRoot !.FirstCardPlayed == false) { var thisCol = model.Bar1.PossibleList; if (thisCol.Count == 0) { throw new BasicBlankException("No cards left from bar"); } if (thisCol.Count > 2) { throw new BasicBlankException("There cannot be more than 2 cards to choose from for bar for computer player"); } return(thisCol.GetRandomItem().Deck); } var possibleList = mainGame.SingleInfo !.MainHandList.Where(Items => mainGame.IsValidMove(Items.Deck)).ToRegularDeckDict(); if (possibleList.Count == 0) { throw new BasicBlankException("There cannot be 0 cards left"); } return(possibleList.GetRandomItem().Deck); }
public static int CardToTake(SnagCardGameVMData model) { var thisList = model.TrickArea1 !.ListCardsLeft(); return(thisList.GetRandomItem().Deck); }
public SnagCardGameMainView(IEventAggregator aggregator, TestOptions test, SnagCardGameVMData model ) { _aggregator = aggregator; _model = model; _aggregator.Subscribe(this); _score = new ScoreBoardXF(); _playerHandWPF = new BaseHandXF <SnagCardGameCardInformation, ts, DeckOfCardsXF <SnagCardGameCardInformation> >(); _trick1 = new SeveralPlayersTrickXF <EnumSuitList, SnagCardGameCardInformation, ts, DeckOfCardsXF <SnagCardGameCardInformation>, SnagCardGamePlayerItem>(); _bar1 = new BaseHandXF <SnagCardGameCardInformation, ts, DeckOfCardsXF <SnagCardGameCardInformation> >(); _human1 = new BaseHandXF <SnagCardGameCardInformation, ts, DeckOfCardsXF <SnagCardGameCardInformation> >(); _opponent1 = new BaseHandXF <SnagCardGameCardInformation, ts, DeckOfCardsXF <SnagCardGameCardInformation> >(); _bar1.HandType = HandObservable <SnagCardGameCardInformation> .EnumHandList.Vertical; _bar1.HasAngles = true; //this is needed. StackLayout mainStack = new StackLayout(); ParentSingleUIContainer?restoreP = null; if (test.SaveOption == EnumTestSaveCategory.RestoreOnly) { restoreP = new ParentSingleUIContainer(nameof(SnagCardGameMainViewModel.RestoreScreen)); } StackLayout otherStack = new StackLayout(); otherStack.Orientation = StackOrientation.Horizontal; _score.AddColumn("Cards Won", true, nameof(SnagCardGamePlayerItem.CardsWon)); _score.AddColumn("Current Points", true, nameof(SnagCardGamePlayerItem.CurrentPoints)); _score.AddColumn("Total Points", true, nameof(SnagCardGamePlayerItem.TotalPoints)); SimpleLabelGridXF firstInfo = new SimpleLabelGridXF(); firstInfo.AddRow("Turn", nameof(SnagCardGameMainViewModel.NormalTurn)); firstInfo.AddRow("Status", nameof(SnagCardGameMainViewModel.Status)); firstInfo.AddRow("Instructions", nameof(SnagCardGameMainViewModel.Instructions)); StackLayout tempStack = new StackLayout(); otherStack.Children.Add(_trick1); tempStack.Children.Add(_human1); tempStack.Children.Add(_opponent1); otherStack.Children.Add(tempStack); mainStack.Children.Add(otherStack); mainStack.Children.Add(_playerHandWPF); mainStack.Children.Add(firstInfo.GetContent); mainStack.Children.Add(_score); Grid otherGrid = new Grid(); AddLeftOverColumn(otherGrid, 30); AddLeftOverColumn(otherGrid, 70); // can always be adjusted AddControlToGrid(otherGrid, _bar1, 0, 0); AddControlToGrid(otherGrid, mainStack, 0, 1); if (restoreP != null) { mainStack.Children.Add(restoreP); //default add to grid but does not have to. } Content = otherGrid; }