public HorseshoeCardGameMainGameClass(IGamePackageResolver mainContainer,
                                       IEventAggregator aggregator,
                                       BasicData basicData,
                                       TestOptions test,
                                       HorseshoeCardGameVMData currentMod,
                                       IMultiplayerSaveState state,
                                       IAsyncDelayer delay,
                                       ICardInfo <HorseshoeCardGameCardInformation> cardInfo,
                                       CommandContainer command,
                                       HorseshoeCardGameGameContainer 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;
 }
        public HorseshoeCardGameMainView(IEventAggregator aggregator,
                                         TestOptions test,
                                         HorseshoeCardGameVMData model,
                                         HorseshoeCardGameGameContainer gameContainer
                                         )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);
            _gameContainer = gameContainer;
            _score         = new ScoreBoardXF();
            _playerHandWPF = new BaseHandXF <HorseshoeCardGameCardInformation, ts, DeckOfCardsXF <HorseshoeCardGameCardInformation> >();
            _trick1        = new SeveralPlayersTrickXF <EnumSuitList, HorseshoeCardGameCardInformation, ts, DeckOfCardsXF <HorseshoeCardGameCardInformation>, HorseshoeCardGamePlayerItem>();
            ParentSingleUIContainer?restoreP = null;

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

            mainStack.Children.Add(_trick1);

            _score.AddColumn("Cards", false, nameof(HorseshoeCardGamePlayerItem.ObjectCount)); //very common.
            _score.AddColumn("T Won", true, nameof(HorseshoeCardGamePlayerItem.TricksWon), rightMargin: 10);
            _score.AddColumn("P Score", false, nameof(HorseshoeCardGamePlayerItem.PreviousScore));
            _score.AddColumn("T Score", false, nameof(HorseshoeCardGamePlayerItem.TotalScore));
            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

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

            mainStack.Children.Add(_playerHandWPF);
            mainStack.Children.Add(firstInfo.GetContent);

            mainStack.Children.Add(_score);

            Grid finalGrid = new Grid();
            Grid tempGrid  = new Grid();

            AddLeftOverRow(tempGrid, 1);
            AddLeftOverRow(tempGrid, 1);
            AddLeftOverColumn(finalGrid, 1);
            AddAutoColumns(finalGrid, 1);
            AddControlToGrid(finalGrid, mainStack, 0, 0);
            AddControlToGrid(finalGrid, tempGrid, 0, 1);
            AddControlToGrid(tempGrid, _temp1, 0, 0);
            AddControlToGrid(tempGrid, _temp2, 1, 0);

            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.
            }

            GamePackageViewModelBinder.ManuelElements.Clear();                             //often times i have to add manually.

            HorseshoeCardGameSaveInfo save = cons !.Resolve <HorseshoeCardGameSaveInfo>(); //usually needs this part for multiplayer games.

            _score !.LoadLists(save.PlayerList);
            _playerHandWPF !.LoadList(_model.PlayerHand1 !, ts.TagUsed); // i think
            _trick1 !.Init(_model.TrickArea1 !, _model.TrickArea1, ts.TagUsed);

            _gameContainer.SingleInfo = _gameContainer.PlayerList !.GetSelf();
            HorseshoeCardGamePlayerItem thisPlayer;

            if (_gameContainer.SingleInfo.Id == 1)
            {
                thisPlayer = _gameContainer.PlayerList[2];
            }
            else
            {
                thisPlayer = _gameContainer.PlayerList[1];
            }
            _temp1.LoadList(_gameContainer.SingleInfo.TempHand !);
            _temp2.LoadList(thisPlayer.TempHand !);

            Content = finalGrid;
        }
 public HorseshoeTrickAreaCP(HorseshoeCardGameGameContainer gameContainer) : base(gameContainer)
 {
     _gameContainer = gameContainer;
 }
        public HorseshoeCardGameMainView(IEventAggregator aggregator,
                                         TestOptions test,
                                         HorseshoeCardGameVMData model,
                                         HorseshoeCardGameGameContainer gameContainer
                                         )
        {
            _aggregator    = aggregator;
            _model         = model;
            _gameContainer = gameContainer;
            _aggregator.Subscribe(this);

            _score         = new ScoreBoardWPF();
            _playerHandWPF = new BaseHandWPF <HorseshoeCardGameCardInformation, ts, DeckOfCardsWPF <HorseshoeCardGameCardInformation> >();

            _trick1 = new SeveralPlayersTrickWPF <EnumSuitList, HorseshoeCardGameCardInformation, ts, DeckOfCardsWPF <HorseshoeCardGameCardInformation>, HorseshoeCardGamePlayerItem>();



            StackPanel mainStack = new StackPanel();

            mainStack.Children.Add(_trick1);

            _score.AddColumn("Cards Left", false, nameof(HorseshoeCardGamePlayerItem.ObjectCount)); //very common.
            _score.AddColumn("Tricks Won", true, nameof(HorseshoeCardGamePlayerItem.TricksWon), rightMargin: 10);
            _score.AddColumn("Previous Score", false, nameof(HorseshoeCardGamePlayerItem.PreviousScore));
            _score.AddColumn("Total Score", false, nameof(HorseshoeCardGamePlayerItem.TotalScore));
            SimpleLabelGrid firstInfo = new SimpleLabelGrid();

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


            ParentSingleUIContainer?restoreP = null;

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


            mainStack.Children.Add(_playerHandWPF);
            mainStack.Children.Add(firstInfo.GetContent);

            mainStack.Children.Add(_score);

            Grid finalGrid = new Grid();
            Grid tempGrid  = new Grid();

            AddLeftOverRow(tempGrid, 1);
            AddLeftOverRow(tempGrid, 1);
            AddLeftOverColumn(finalGrid, 1);
            AddAutoColumns(finalGrid, 1);
            AddControlToGrid(finalGrid, mainStack, 0, 0);
            AddControlToGrid(finalGrid, tempGrid, 0, 1);
            AddControlToGrid(tempGrid, _temp1, 0, 0);
            AddControlToGrid(tempGrid, _temp2, 1, 0);



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