예제 #1
0
        public PlayerSetsView(FourSuitRummyGameContainer gameContainer)
        {
            _main = new MainRummySetsXF <EnumSuitList, EnumColorList, RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard>, SetInfo, SavedSet>();
            _main.WidthRequest = 600;

            Content        = _main;
            _gameContainer = gameContainer;
        }
        public FiveCrownsMainView(IEventAggregator aggregator,
                                  TestOptions test,
                                  FiveCrownsVMData model
                                  )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);

            _deckGPile     = new BaseDeckXF <FiveCrownsCardInformation, FiveCrownsGraphicsCP, CardGraphicsXF>();
            _discardGPile  = new BasePileXF <FiveCrownsCardInformation, FiveCrownsGraphicsCP, CardGraphicsXF>();
            _score         = new ScoreBoardXF();
            _playerHandWPF = new BaseHandXF <FiveCrownsCardInformation, FiveCrownsGraphicsCP, CardGraphicsXF>();
            _tempG         = new TempRummySetsXF <EnumSuitList, EnumColorList, FiveCrownsCardInformation, FiveCrownsGraphicsCP, CardGraphicsXF>();
            _mainG         = new MainRummySetsXF <EnumSuitList, EnumColorList, FiveCrownsCardInformation, FiveCrownsGraphicsCP, CardGraphicsXF, PhaseSet, SavedSet>();

            ParentSingleUIContainer?restoreP = null;

            if (test.SaveOption == EnumTestSaveCategory.RestoreOnly)
            {
                restoreP = new ParentSingleUIContainer(nameof(FiveCrownsMainViewModel.RestoreScreen));
            }

            StackLayout otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            otherStack.Children.Add(_deckGPile);
            otherStack.Children.Add(_discardGPile);                                         // can reposition or not even have as well.
            _score.AddColumn("Cards Left", true, nameof(FiveCrownsPlayerItem.ObjectCount)); //very common.
            _score.AddColumn("Current Score", true, nameof(FiveCrownsPlayerItem.CurrentScore));
            _score.AddColumn("Total Score", true, nameof(FiveCrownsPlayerItem.TotalScore));
            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Turn", nameof(FiveCrownsMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(FiveCrownsMainViewModel.Status));
            firstInfo.AddRow("Up To", nameof(FiveCrownsMainViewModel.UpTo));


            Grid finalGrid = new Grid();

            AddAutoRows(finalGrid, 1);
            AddLeftOverRow(finalGrid, 1);
            Grid firstGrid = new Grid();

            AddLeftOverColumn(firstGrid, 40);
            AddAutoColumns(firstGrid, 1);
            AddLeftOverColumn(firstGrid, 15);
            AddLeftOverColumn(firstGrid, 30);

            var thisBut = GetSmallerButton("Lay Down", nameof(FiveCrownsMainViewModel.LayDownSetsAsync));


            AddControlToGrid(firstGrid, otherStack, 0, 1);
            StackLayout firstStack = new StackLayout();

            firstStack.Children.Add(_playerHandWPF);
            StackLayout secondStack = new StackLayout();

            secondStack.Orientation = StackOrientation.Horizontal;
            firstStack.Children.Add(secondStack);
            firstStack.Children.Add(thisBut);
            thisBut = GetSmallerButton("Back", nameof(FiveCrownsMainViewModel.Back));
            firstStack.Children.Add(thisBut);

            AddControlToGrid(firstGrid, firstStack, 0, 0);
            AddControlToGrid(firstGrid, _score, 0, 3);
            AddControlToGrid(finalGrid, firstGrid, 0, 0);
            AddControlToGrid(firstGrid, firstInfo.GetContent, 0, 2);
            _tempG.Divider = 1.1;
            StackLayout thirdStack = new StackLayout();

            thirdStack.Orientation = StackOrientation.Horizontal;
            thirdStack.Children.Add(_tempG);
            thirdStack.Children.Add(_mainG);
            AddControlToGrid(finalGrid, thirdStack, 1, 0); // i think
            _deckGPile.Margin = new Thickness(5, 5, 5, 5);

            _discardGPile.Margin = new Thickness(5, 5, 5, 5);

            if (restoreP != null)
            {
                otherStack.Children.Add(restoreP); //default add to grid but does not have to.
            }
            Content = finalGrid;
        }
예제 #3
0
        public CousinRummyMainView(IEventAggregator aggregator,
                                   TestOptions test,
                                   CousinRummyVMData model
                                   )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);

            _deckGPile     = new BaseDeckXF <RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >();
            _discardGPile  = new BasePileXF <RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >();
            _score         = new ScoreBoardXF();
            _playerHandWPF = new BaseHandXF <RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >();
            _tempG         = new TempRummySetsXF <EnumSuitList, EnumColorList, RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >();
            _mainG         = new MainRummySetsXF <EnumSuitList, EnumColorList, RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard>, PhaseSet, SavedSet>();

            ParentSingleUIContainer?restoreP = null;

            if (test.SaveOption == EnumTestSaveCategory.RestoreOnly)
            {
                restoreP = new ParentSingleUIContainer(nameof(CousinRummyMainViewModel.RestoreScreen));
            }

            Grid buyGrid = new Grid();

            AddAutoColumns(buyGrid, 2);
            AddAutoRows(buyGrid, 1);
            AddPixelRow(buyGrid, 100);
            var button = GetSmallerButton("Pass", nameof(CousinRummyMainViewModel.PassAsync));

            AddControlToGrid(buyGrid, button, 0, 0);
            button = GetSmallerButton("Buy", nameof(CousinRummyMainViewModel.BuyAsync));
            AddControlToGrid(buyGrid, button, 0, 1);
            AddControlToGrid(buyGrid, _deckGPile, 1, 0);
            AddControlToGrid(buyGrid, _discardGPile, 1, 1);

            Grid gameGrid = new Grid();

            AddLeftOverRow(gameGrid, 45); // try that
            AddAutoRows(gameGrid, 1);
            AddLeftOverRow(gameGrid, 30);
            var otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            otherStack.Children.Add(_tempG);
            AddControlToGrid(gameGrid, otherStack, 0, 0);

            _score.AddColumn("Cards Left", false, nameof(CousinRummyPlayerItem.ObjectCount)); //very common.
            _score.AddColumn("Tokens Left", false, nameof(CousinRummyPlayerItem.TokensLeft));
            _score.AddColumn("Current Score", false, nameof(CousinRummyPlayerItem.CurrentScore), rightMargin: 5);
            _score.AddColumn("Total Score", false, nameof(CousinRummyPlayerItem.TotalScore));
            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Normal Turn", nameof(CousinRummyMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(CousinRummyMainViewModel.Status));
            firstInfo.AddRow("Other Turn", nameof(CousinRummyMainViewModel.OtherLabel));
            firstInfo.AddRow("Phase", nameof(CousinRummyMainViewModel.PhaseData));


            otherStack.Children.Add(_score);
            Grid bottomGrid = new Grid();

            AddLeftOverColumn(bottomGrid, 30);
            AddLeftOverColumn(bottomGrid, 70);
            otherStack = new StackLayout();
            button     = GetSmallerButton("Lay Down Initial Sets", nameof(CousinRummyMainViewModel.FirstSetsAsync));
            otherStack.Children.Add(button);
            button = GetSmallerButton("Lay Down Other Sets", nameof(CousinRummyMainViewModel.OtherSetsAsync)); // i think its othersets commands (?)
            otherStack.Children.Add(button);

            if (restoreP != null)
            {
                otherStack.Children.Add(restoreP); //default add to grid but does not have to.
            }

            AddControlToGrid(bottomGrid, otherStack, 0, 0);
            AddControlToGrid(bottomGrid, _mainG, 0, 1);
            AddControlToGrid(gameGrid, bottomGrid, 2, 0);
            otherStack                       = new StackLayout();
            otherStack.Orientation           = StackOrientation.Horizontal;
            _playerHandWPF.HorizontalOptions = LayoutOptions.StartAndExpand;
            otherStack.Children.Add(buyGrid);
            StackLayout tempStack = new StackLayout();

            tempStack.Children.Add(_playerHandWPF);
            tempStack.Children.Add(firstInfo.GetContent);
            otherStack.Children.Add(tempStack);
            AddControlToGrid(gameGrid, otherStack, 1, 0);

            _deckGPile.Margin = new Thickness(5, 5, 5, 5);

            _discardGPile.Margin = new Thickness(5, 5, 5, 5);


            Content = gameGrid;
        }
        public TileRummyMainView(IEventAggregator aggregator,
                                 TileRummyVMData model,
                                 TestOptions test
                                 )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);


            _score = new ScoreBoardXF();
            _hand1 = new BaseHandXF <TileInfo, TileCP, TileXF>();
            _pool1 = new BoneYardXF <TileInfo, TileCP, TileXF, TileShuffler>();
            _tempG = new TempRummySetsXF <EnumColorType, EnumColorType, TileInfo, TileCP, TileXF>();
            _mainG = new MainRummySetsXF <EnumColorType, EnumColorType, TileInfo, TileCP, TileXF, TileSet, SavedSet>();

            var endButton = GetSmallerButton("End Turn", nameof(TileRummyMainViewModel.EndTurnAsync));

            endButton.HorizontalOptions = LayoutOptions.Start;
            var firstButton = GetSmallerButton("Create First Sets", nameof(TileRummyMainViewModel.CreateFirstSetsAsync));
            var otherButton = GetSmallerButton("Create New Set", nameof(TileRummyMainViewModel.CreateNewSetAsync));
            var undoButton  = GetSmallerButton("Reset Moves", nameof(TileRummyMainViewModel.UndoMoveAsync));

            _score.AddColumn("Tiles Left", true, nameof(TileRummyPlayerItem.ObjectCount));
            _score.AddColumn("Score", true, nameof(TileRummyPlayerItem.Score));

            if (ScreenUsed == EnumScreen.SmallTablet)
            {
                _tempG.HeightRequest = 120;
            }
            else
            {
                _tempG.HeightRequest = 200;
            }
            _pool1.WidthRequest = 250;

            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Turn", nameof(TileRummyMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(TileRummyMainViewModel.Status));
            var  firstContent = firstInfo.GetContent;
            Grid completeGrid = new Grid();

            AddLeftOverRow(completeGrid, 55);
            AddAutoRows(completeGrid, 1);
            AddLeftOverRow(completeGrid, 50);
            AddAutoRows(completeGrid, 1);
            StackLayout otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            otherStack.Children.Add(_pool1);
            StackLayout stack = new StackLayout();

            stack.Children.Add(firstButton);
            stack.Children.Add(otherButton);
            stack.Children.Add(undoButton);
            stack.Children.Add(endButton);
            otherStack.Children.Add(stack);
            stack = new StackLayout();
            stack.Children.Add(_tempG);
            stack.Children.Add(firstContent);
            stack.Children.Add(_score);
            otherStack.Children.Add(stack);
            AddControlToGrid(completeGrid, otherStack, 0, 0);
            AddControlToGrid(completeGrid, _hand1, 1, 0);
            _pool1.Margin = new Thickness(2, 2, 2, 2);
            AddControlToGrid(completeGrid, _mainG, 2, 0); // used the wrong one.

            ParentSingleUIContainer?restoreP = null;

            if (test.SaveOption == EnumTestSaveCategory.RestoreOnly)
            {
                restoreP = new ParentSingleUIContainer(nameof(TileRummyMainViewModel.RestoreScreen));
            }
            if (restoreP != null)
            {
                AddControlToGrid(completeGrid, restoreP, 3, 0); //default add to grid but does not have to.
            }


            Content = completeGrid;
        }
예제 #5
0
        public OpetongMainView(IEventAggregator aggregator,
                               TestOptions test,
                               OpetongVMData 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> >();
            _tempG         = new TempRummySetsXF <EnumSuitList, EnumColorList, RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >();
            _mainG         = new MainRummySetsXF <EnumSuitList, EnumColorList, RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard>, RummySet, SavedSet>();
            _poolG         = new CardBoardXF <RegularRummyCard, ts, DeckOfCardsXF <RegularRummyCard> >();

            StackLayout             mainStack = new StackLayout();
            ParentSingleUIContainer?restoreP  = null;

            if (test.SaveOption == EnumTestSaveCategory.RestoreOnly)
            {
                restoreP = new ParentSingleUIContainer(nameof(OpetongMainViewModel.RestoreScreen));
            }

            StackLayout otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            otherStack.Children.Add(_deckGPile);

            Grid finalGrid = new Grid();

            AddLeftOverRow(finalGrid, 50);
            AddAutoRows(finalGrid, 1);
            AddLeftOverRow(finalGrid, 50);

            otherStack.Children.Add(_deckGPile);
            otherStack.Children.Add(_poolG);
            otherStack.Children.Add(_tempG);
            Button button = GetGamingButton($"Lay Down{Constants.vbCrLf}Single Set", nameof(OpetongMainViewModel.PlaySetAsync));

            otherStack.Children.Add(button);
            StackLayout tempStack = new StackLayout();



            mainStack.Children.Add(otherStack);
            _score.AddColumn("Cards Left", true, nameof(OpetongPlayerItem.ObjectCount)); //very common.
            _score.AddColumn("Sets Played", true, nameof(OpetongPlayerItem.SetsPlayed));
            _score.AddColumn("Score", true, nameof(OpetongPlayerItem.TotalScore));



            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Turn", nameof(OpetongMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(OpetongMainViewModel.Status));
            firstInfo.AddRow("Instructions", nameof(OpetongMainViewModel.Instructions));
            tempStack.Children.Add(_score);
            tempStack.Children.Add(firstInfo.GetContent);
            otherStack.Children.Add(tempStack);
            AddControlToGrid(finalGrid, otherStack, 0, 0);
            AddControlToGrid(finalGrid, _playerHandWPF, 1, 0);
            AddControlToGrid(finalGrid, _mainG, 2, 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 Phase10MainView(IEventAggregator aggregator,
                               TestOptions test,
                               Phase10VMData model
                               )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);

            _deckGPile     = new BaseDeckXF <Phase10CardInformation, Phase10GraphicsCP, CardGraphicsXF>();
            _discardGPile  = new BasePileXF <Phase10CardInformation, Phase10GraphicsCP, CardGraphicsXF>();
            _score         = new ScoreBoardXF();
            _playerHandWPF = new BaseHandXF <Phase10CardInformation, Phase10GraphicsCP, CardGraphicsXF>();
            _tempG         = new TempRummySetsXF <EnumColorTypes, EnumColorTypes, Phase10CardInformation, Phase10GraphicsCP, CardGraphicsXF>();
            _mainG         = new MainRummySetsXF <EnumColorTypes, EnumColorTypes, Phase10CardInformation, Phase10GraphicsCP, CardGraphicsXF, PhaseSet, SavedSet>();

            Grid finalGrid = new Grid();

            AddAutoRows(finalGrid, 1); // has to be this way because of scoreboard.
            AddLeftOverRow(finalGrid, 1);


            ParentSingleUIContainer?restoreP = null;

            if (test.SaveOption == EnumTestSaveCategory.RestoreOnly)
            {
                restoreP = new ParentSingleUIContainer(nameof(Phase10MainViewModel.RestoreScreen));
            }

            StackLayout otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            otherStack.Children.Add(_deckGPile);
            otherStack.Children.Add(_discardGPile); // can reposition or not even have as well.

            _score.AddColumn("Score", true, nameof(Phase10PlayerItem.TotalScore));
            _score.AddColumn("Cards Left", true, nameof(Phase10PlayerItem.ObjectCount));
            _score.AddColumn("Phase", true, nameof(Phase10PlayerItem.Phase));
            _score.AddColumn("Skipped", true, nameof(Phase10PlayerItem.MissNextTurn), useTrueFalse: true);
            _score.AddColumn("Completed", true, nameof(Phase10PlayerItem.Completed), useTrueFalse: true);

            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Turn", nameof(Phase10MainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(Phase10MainViewModel.Status));
            firstInfo.AddRow("Phase", nameof(Phase10MainViewModel.CurrentPhase));


            Grid firstGrid = new Grid();

            AddLeftOverColumn(firstGrid, 40); // 50 was too much.  if there is scrolling, i guess okay.
            AddAutoColumns(firstGrid, 1);     // maybe 1 (well see)
            AddLeftOverColumn(firstGrid, 15); // for other details
            AddLeftOverColumn(firstGrid, 30); // for scoreboard
            AddControlToGrid(firstGrid, otherStack, 0, 1);
            StackLayout firstStack = new StackLayout();

            firstStack.Children.Add(_playerHandWPF);
            var thisBut = GetSmallerButton("Complete" + Constants.vbCrLf + "Phase", nameof(Phase10MainViewModel.CompletePhaseAsync));

            firstStack.Children.Add(thisBut);
            AddControlToGrid(firstGrid, firstStack, 0, 0);
            AddControlToGrid(firstGrid, firstInfo.GetContent, 0, 2);
            AddControlToGrid(firstGrid, _score, 0, 3);
            AddControlToGrid(finalGrid, firstGrid, 0, 0);
            _tempG.Divider = 1.1;
            StackLayout thirdStack = new StackLayout();

            thirdStack.Orientation = StackOrientation.Horizontal;
            thirdStack.Children.Add(_tempG);
            thirdStack.Children.Add(_mainG);
            AddControlToGrid(finalGrid, thirdStack, 1, 0);



            _deckGPile.Margin = new Thickness(5, 5, 5, 5);

            _discardGPile.Margin = new Thickness(5, 5, 5, 5);

            if (restoreP != null)
            {
                otherStack.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;
        }
        public ChinazoMainView(IEventAggregator aggregator,
                               TestOptions test,
                               ChinazoVMData model
                               )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);

            _deckGPile     = new BaseDeckXF <ChinazoCard, ts, DeckOfCardsXF <ChinazoCard> >();
            _discardGPile  = new BasePileXF <ChinazoCard, ts, DeckOfCardsXF <ChinazoCard> >();
            _score         = new ScoreBoardXF();
            _playerHandWPF = new BaseHandXF <ChinazoCard, ts, DeckOfCardsXF <ChinazoCard> >();
            _tempG         = new TempRummySetsXF <EnumSuitList, EnumColorList, ChinazoCard, ts, DeckOfCardsXF <ChinazoCard> >();
            _mainG         = new MainRummySetsXF <EnumSuitList, EnumColorList, ChinazoCard, ts, DeckOfCardsXF <ChinazoCard>, PhaseSet, SavedSet>();
            ParentSingleUIContainer?restoreP = null;

            if (test.SaveOption == EnumTestSaveCategory.RestoreOnly)
            {
                restoreP = new ParentSingleUIContainer(nameof(ChinazoMainViewModel.RestoreScreen));
            }

            Grid finalGrid = new Grid();

            AddAutoRows(finalGrid, 1); // has to be this way because of scoreboard.
            AddLeftOverRow(finalGrid, 1);

            Grid firstGrid = new Grid();

            AddLeftOverColumn(firstGrid, 60);
            AddAutoColumns(firstGrid, 1);
            AddLeftOverColumn(firstGrid, 30);
            AddLeftOverColumn(firstGrid, 20);


            StackLayout otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            otherStack.Children.Add(_deckGPile);
            otherStack.Children.Add(_discardGPile); // can reposition or not even have as well.
            AddControlToGrid(firstGrid, otherStack, 0, 1);
            StackLayout firstStack = new StackLayout();

            firstStack.Children.Add(_playerHandWPF);
            StackLayout secondStack = new StackLayout();

            secondStack.Orientation = StackOrientation.Horizontal;
            firstStack.Children.Add(secondStack);

            var button = GetSmallerButton("Pass", nameof(ChinazoMainViewModel.PassAsync));

            secondStack.Children.Add(button);
            button = GetSmallerButton("Take", nameof(ChinazoMainViewModel.TakeAsync));
            secondStack.Children.Add(button);
            button = GetSmallerButton("Lay Down Sets", nameof(ChinazoMainViewModel.FirstSetsAsync));
            firstStack.Children.Add(button);
            AddControlToGrid(firstGrid, firstStack, 0, 0);

            _score.AddColumn("Cards Left", false, nameof(ChinazoPlayerItem.ObjectCount)); //very common.
            _score.AddColumn("Current Score", false, nameof(ChinazoPlayerItem.CurrentScore), rightMargin: 5);
            _score.AddColumn("Total Score", false, nameof(ChinazoPlayerItem.TotalScore));
            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Turn", nameof(ChinazoMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(ChinazoMainViewModel.Status));
            firstInfo.AddRow("Other Turn", nameof(ChinazoMainViewModel.OtherLabel));
            firstInfo.AddRow("Phase", nameof(ChinazoMainViewModel.PhaseData));


            AddControlToGrid(firstGrid, firstInfo.GetContent, 0, 2);
            AddControlToGrid(firstGrid, _score, 0, 3);
            AddControlToGrid(finalGrid, firstGrid, 0, 0);
            StackLayout thirdStack = new StackLayout();

            thirdStack.Orientation = StackOrientation.Horizontal;
            thirdStack.Children.Add(_tempG);
            thirdStack.Children.Add(_mainG);
            AddControlToGrid(finalGrid, thirdStack, 1, 0);

            _deckGPile.Margin = new Thickness(5, 5, 5, 5);

            _discardGPile.Margin = new Thickness(5, 5, 5, 5);
            if (restoreP != null)
            {
                otherStack.Children.Add(restoreP); //default add to grid but does not have to.
            }
            Content = finalGrid;
        }
        public MonasteryCardGameMainView(IEventAggregator aggregator,
                                         TestOptions test,
                                         MonasteryCardGameVMData model
                                         )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);

            _deckGPile     = new BaseDeckXF <MonasteryCardInfo, ts, DeckOfCardsXF <MonasteryCardInfo> >();
            _discardGPile  = new BasePileXF <MonasteryCardInfo, ts, DeckOfCardsXF <MonasteryCardInfo> >();
            _score         = new ScoreBoardXF();
            _playerHandWPF = new BaseHandXF <MonasteryCardInfo, ts, DeckOfCardsXF <MonasteryCardInfo> >();
            _tempG         = new TempRummySetsXF <EnumSuitList, EnumColorList, MonasteryCardInfo, ts, DeckOfCardsXF <MonasteryCardInfo> >();
            _mainG         = new MainRummySetsXF <EnumSuitList, EnumColorList, MonasteryCardInfo, ts, DeckOfCardsXF <MonasteryCardInfo>, RummySet, SavedSet>();
            _missionXF     = new MissionUI();
            Grid finalGrid = new Grid();

            AddAutoRows(finalGrid, 1);
            AddLeftOverRow(finalGrid, 1);
            ParentSingleUIContainer?restoreP = null;

            if (test.SaveOption == EnumTestSaveCategory.RestoreOnly)
            {
                restoreP = new ParentSingleUIContainer(nameof(MonasteryCardGameMainViewModel.RestoreScreen));
            }

            StackLayout otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            otherStack.Children.Add(_deckGPile);
            otherStack.Children.Add(_discardGPile); // can reposition or not even have as well.
            _score.UseAbbreviationForTrueFalse = true;
            _score.AddColumn("Cards", false, nameof(MonasteryCardGamePlayerItem.ObjectCount));
            _score.AddColumn("Done", false, nameof(MonasteryCardGamePlayerItem.FinishedCurrentMission), useTrueFalse: true);
            int x;

            for (x = 1; x <= 9; x++)
            {
                _score.AddColumn("M" + x, false, "Mission" + x + "Completed", useTrueFalse: true);
            }
            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Turn", nameof(MonasteryCardGameMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(MonasteryCardGameMainViewModel.Status));


            Grid firstGrid = new Grid();

            AddLeftOverColumn(firstGrid, 35);
            AddAutoColumns(firstGrid, 1);
            AddLeftOverColumn(firstGrid, 15);
            AddLeftOverColumn(firstGrid, 30);
            AddControlToGrid(firstGrid, _score, 0, 3); // use 3 instead of 4 here.
            AddControlToGrid(firstGrid, otherStack, 0, 1);
            AddControlToGrid(firstGrid, _playerHandWPF, 0, 0);

            AddControlToGrid(firstGrid, firstInfo.GetContent, 0, 2);
            AddControlToGrid(finalGrid, firstGrid, 0, 0);
            _tempG.Divider = 1.1;
            Grid bottomGrid = new Grid();

            AddAutoColumns(bottomGrid, 1);
            AddLeftOverColumn(bottomGrid, 35);
            AddLeftOverColumn(bottomGrid, 65);
            AddControlToGrid(bottomGrid, _tempG, 0, 0);
            AddControlToGrid(bottomGrid, _mainG, 0, 1);
            AddControlToGrid(bottomGrid, _missionXF, 0, 2);
            AddControlToGrid(finalGrid, bottomGrid, 1, 0);


            _deckGPile.Margin = new Thickness(5, 5, 5, 5);

            _discardGPile.Margin = new Thickness(5, 5, 5, 5);

            if (restoreP != null)
            {
                otherStack.Children.Add(restoreP); //default add to grid but does not have to.
            }
            Content = finalGrid;
        }
예제 #10
0
        private void LoadSinglePlayer(GalaxyCardGamePlayerItem thisPlayer)
        {
            BaseHandXF <GalaxyCardGameCardInformation, ts, DeckOfCardsXF <GalaxyCardGameCardInformation> > thisPlanet = new BaseHandXF <GalaxyCardGameCardInformation, ts, DeckOfCardsXF <GalaxyCardGameCardInformation> >();

            thisPlanet.LoadList(thisPlayer.PlanetHand !, ts.TagUsed);
            thisPlanet.Margin = new Thickness(5, 5, 5, 5);
            _planetStack !.Children.Add(thisPlanet);
            MainRummySetsXF <EnumSuitList, EnumColorList, GalaxyCardGameCardInformation, ts, DeckOfCardsXF <GalaxyCardGameCardInformation>, MoonClass, SavedSet> thisMoon = new MainRummySetsXF <EnumSuitList, EnumColorList, GalaxyCardGameCardInformation, ts, DeckOfCardsXF <GalaxyCardGameCardInformation>, MoonClass, SavedSet>();

            thisMoon.Divider = 2;
            thisMoon.Init(thisPlayer.Moons !, ts.TagUsed);
            thisMoon.Margin            = new Thickness(5, 5, 5, 5);
            thisMoon.HorizontalOptions = LayoutOptions.Fill; //lots of options here.
            if (ScreenUsed == EnumScreen.LargeTablet)
            {
                thisMoon.HeightRequest = 300; //bad news is on tablets, no source code to go by.
            }
            else
            {
                thisMoon.HeightRequest = 150;                                       //well see.
            }
            AddControlToGrid(_moonGrid !, thisMoon, 0, _moonGrid !.Children.Count); //hopefully this works.
        }