public Rummy500MainGameClass(IGamePackageResolver mainContainer, IEventAggregator aggregator, BasicData basicData, TestOptions test, Rummy500VMData currentMod, IMultiplayerSaveState state, IAsyncDelayer delay, ICardInfo <RegularRummyCard> cardInfo, CommandContainer command, Rummy500GameContainer gameContainer) : base(mainContainer, aggregator, basicData, test, currentMod, state, delay, cardInfo, command, gameContainer) { _model = currentMod; _command = command; _gameContainer = gameContainer; _rummys = new RummyProcesses <EnumSuitList, EnumColorList, RegularRummyCard>(); }
public Rummy500MainViewModel(CommandContainer commandContainer, Rummy500MainGameClass mainGame, Rummy500VMData viewModel, BasicData basicData, TestOptions test, IGamePackageResolver resolver, Rummy500GameContainer gameContainer ) : base(commandContainer, mainGame, viewModel, basicData, test, resolver) { _mainGame = mainGame; _model = viewModel; _gameContainer = gameContainer; _model.Deck1.NeverAutoDisable = true; _model.PlayerHand1.AutoSelect = HandObservable <RegularRummyCard> .EnumAutoType.SelectAsMany; _model.MainSets1.SetClickedAsync += MainSets1_SetClickedAsync; _model.DiscardList1.ObjectClickedAsync += DiscardList1_ObjectClickedAsync; if (_gameContainer.BasicData !.IsXamarinForms == false) { _model.DiscardList1.BoardClickedAsync += DiscardList1_BoardClickedAsync; //not for xamarin forms. } _model.MainSets1.SendEnableProcesses(this, () => _gameContainer !.AlreadyDrew); //_model.MainSets1.SendEnableProcesses(this, () => false); }
public Rummy500MainView(IEventAggregator aggregator, TestOptions test, Rummy500VMData model ) { _aggregator = aggregator; _model = model; _aggregator.Subscribe(this); _deckGPile = new BaseDeckWPF <RegularRummyCard, ts, DeckOfCardsWPF <RegularRummyCard> >(); _score = new ScoreBoardWPF(); _playerHandWPF = new BaseHandWPF <RegularRummyCard, ts, DeckOfCardsWPF <RegularRummyCard> >(); _playerHandWPF.Margin = new Thickness(5, 5, 5, 5); _playerHandWPF.HorizontalAlignment = HorizontalAlignment.Stretch; _discardRummy = new BaseHandWPF <RegularRummyCard, ts, DeckOfCardsWPF <RegularRummyCard> >(); _mainG = new MainRummySetsWPF <EnumSuitList, EnumColorList, RegularRummyCard, ts, DeckOfCardsWPF <RegularRummyCard>, RummySet, SavedSet>(); StackPanel mainStack = new StackPanel(); ParentSingleUIContainer?restoreP = null; if (test.SaveOption == EnumTestSaveCategory.RestoreOnly) { restoreP = new ParentSingleUIContainer() { Name = nameof(Rummy500MainViewModel.RestoreScreen) }; } Grid finalGrid = new Grid(); AddAutoColumns(finalGrid, 1); AddLeftOverColumn(finalGrid, 1); AddControlToGrid(finalGrid, mainStack, 0, 1); StackPanel otherStack = new StackPanel(); otherStack.Orientation = Orientation.Horizontal; otherStack.Children.Add(_deckGPile); SimpleLabelGrid firstInfo = new SimpleLabelGrid(); firstInfo.AddRow("Turn", nameof(Rummy500MainViewModel.NormalTurn)); firstInfo.AddRow("Status", nameof(Rummy500MainViewModel.Status)); _score.AddColumn("Cards Left", false, nameof(Rummy500PlayerItem.ObjectCount)); //very common. _score.AddColumn("Points Played", false, nameof(Rummy500PlayerItem.PointsPlayed)); _score.AddColumn("Cards Played", false, nameof(Rummy500PlayerItem.CardsPlayed)); _score.AddColumn("Score Current", false, nameof(Rummy500PlayerItem.CurrentScore)); _score.AddColumn("Score Total", false, nameof(Rummy500PlayerItem.TotalScore)); otherStack.Children.Add(_score); otherStack.Children.Add(firstInfo.GetContent); mainStack.Children.Add(_playerHandWPF); Button button; button = GetGamingButton("Discard Current", nameof(Rummy500MainViewModel.DiscardCurrentAsync)); otherStack.Children.Add(button); button = GetGamingButton("Create New Rummy Set", nameof(Rummy500MainViewModel.CreateSetAsync)); otherStack.Children.Add(button); mainStack.Children.Add(otherStack); _mainG.Divider = 1.3; _mainG.Height = 550; // i think mainStack.Children.Add(_mainG); _discardRummy.Divider = 1.7; _discardRummy.HandType = HandObservable <RegularRummyCard> .EnumHandList.Vertical; _discardRummy.HorizontalAlignment = HorizontalAlignment.Left; _discardRummy.VerticalAlignment = VerticalAlignment.Stretch; AddControlToGrid(finalGrid, _discardRummy, 0, 0); _deckGPile.Margin = new Thickness(5, 5, 5, 5); if (restoreP != null) { //todo: figure out where to place the restore ui if there is a restore option. mainStack.Children.Add(restoreP); //default add to grid but does not have to. } Content = finalGrid; }
public Rummy500MainView(IEventAggregator aggregator, TestOptions test, Rummy500VMData model ) { _aggregator = aggregator; _model = model; _aggregator.Subscribe(this); _deckGPile = new BaseDeckXF <RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >(); _score = new ScoreBoardXF(); _playerHandWPF = new BaseHandXF <RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >(); _playerHandWPF.HorizontalOptions = LayoutOptions.Fill; _discardRummy = new BaseHandXF <RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >(); _mainG = new MainRummySetsXF <EnumSuitList, EnumColorList, RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard>, RummySet, SavedSet>(); StackLayout mainStack = new StackLayout(); ParentSingleUIContainer?restoreP = null; if (test.SaveOption == EnumTestSaveCategory.RestoreOnly) { restoreP = new ParentSingleUIContainer(nameof(Rummy500MainViewModel.RestoreScreen)); } Grid finalGrid = new Grid(); AddAutoColumns(finalGrid, 1); AddLeftOverColumn(finalGrid, 1); AddControlToGrid(finalGrid, mainStack, 0, 1); StackLayout otherStack = new StackLayout(); otherStack.Orientation = StackOrientation.Horizontal; otherStack.Children.Add(_deckGPile); SimpleLabelGridXF firstInfo = new SimpleLabelGridXF(); firstInfo.AddRow("Turn", nameof(Rummy500MainViewModel.NormalTurn)); firstInfo.AddRow("Status", nameof(Rummy500MainViewModel.Status)); _score.AddColumn("Cards Left", false, nameof(Rummy500PlayerItem.ObjectCount)); //very common. _score.AddColumn("Points Played", false, nameof(Rummy500PlayerItem.PointsPlayed)); _score.AddColumn("Cards Played", false, nameof(Rummy500PlayerItem.CardsPlayed)); _score.AddColumn("Score Current", false, nameof(Rummy500PlayerItem.CurrentScore)); _score.AddColumn("Score Total", false, nameof(Rummy500PlayerItem.TotalScore)); otherStack.Children.Add(_score); otherStack.Children.Add(firstInfo.GetContent); mainStack.Children.Add(otherStack); mainStack.Children.Add(_playerHandWPF); otherStack = new StackLayout(); otherStack.Orientation = StackOrientation.Horizontal; mainStack.Children.Add(otherStack); Button button; button = GetGamingButton("Discard Current", nameof(Rummy500MainViewModel.DiscardCurrentAsync)); button.HorizontalOptions = LayoutOptions.Start; button.VerticalOptions = LayoutOptions.Start; otherStack.Children.Add(button); button = GetGamingButton("Create New Rummy Set", nameof(Rummy500MainViewModel.CreateSetAsync)); button.HorizontalOptions = LayoutOptions.Start; button.VerticalOptions = LayoutOptions.Start; otherStack.Children.Add(button); mainStack.Children.Add(otherStack); _mainG.Divider = 1.3; mainStack.Children.Add(_mainG); _discardRummy.Divider = 1.4; _discardRummy.ExtraControlSpace = 20; _discardRummy.HandType = HandObservable <RegularRummyCard> .EnumHandList.Vertical; _discardRummy.HorizontalOptions = LayoutOptions.Start; _discardRummy.VerticalOptions = LayoutOptions.FillAndExpand; AddControlToGrid(finalGrid, _discardRummy, 0, 0); _deckGPile.Margin = new Thickness(5, 5, 5, 5); if (restoreP != null) { mainStack.Children.Add(restoreP); //default add to grid but does not have to. } GamePackageViewModelBinder.ManuelElements.Clear(); //often times i have to add manually. Rummy500SaveInfo save = cons !.Resolve <Rummy500SaveInfo>(); //usually needs this part for multiplayer games. _score !.LoadLists(save.PlayerList); _playerHandWPF !.LoadList(_model.PlayerHand1 !, ts.TagUsed); // i think _deckGPile !.Init(_model.Deck1 !, ts.TagUsed); // try here. may have to do something else as well (?) _deckGPile.StartListeningMainDeck(); _mainG !.Init(_model.MainSets1 !, ts.TagUsed); Content = finalGrid; }