Example #1
0
 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>();
 }
Example #2
0
 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);
 }
Example #3
0
        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;
        }