public MonasteryCardGameMainViewModel(CommandContainer commandContainer,
                                              MonasteryCardGameMainGameClass mainGame,
                                              MonasteryCardGameVMData viewModel,
                                              BasicData basicData,
                                              TestOptions test,
                                              IGamePackageResolver resolver,
                                              MonasteryCardGameGameContainer gameContainer
                                              )
            : base(commandContainer, mainGame, viewModel, basicData, test, resolver)
        {
            _mainGame      = mainGame;
            _model         = viewModel;
            _basicData     = basicData;
            _gameContainer = gameContainer;
            _model.Deck1.NeverAutoDisable = true;
            var player = _mainGame.PlayerList.GetSelf();

            mainGame.Aggregator.Subscribe(player); //hopefully this works now.

            _model.TempSets.Init(this);
            _model.TempSets.ClearBoard();
            _model.TempSets.SetClickedAsync += TempSets_SetClickedAsync;
            _model.MainSets.SetClickedAsync += MainSets_SetClickedAsync;
            _model.PlayerHand1 !.AutoSelect  = HandObservable <MonasteryCardInfo> .EnumAutoType.SelectAsMany;
            _model.MainSets.SendEnableProcesses(this, () =>
            {
                if (_gameContainer !.AlreadyDrew == false)
                {
                    return(false);
                }
                return(_mainGame.SingleInfo !.FinishedCurrentMission);
            });
 public MonasteryCardGameMainGameClass(IGamePackageResolver mainContainer,
                                       IEventAggregator aggregator,
                                       BasicData basicData,
                                       TestOptions test,
                                       MonasteryCardGameVMData currentMod,
                                       IMultiplayerSaveState state,
                                       IAsyncDelayer delay,
                                       ICardInfo <MonasteryCardInfo> cardInfo,
                                       CommandContainer command,
                                       MonasteryCardGameGameContainer gameContainer)
     : base(mainContainer, aggregator, basicData, test, currentMod, state, delay, cardInfo, command, gameContainer)
 {
     _model         = currentMod;
     _command       = command;
     _gameContainer = gameContainer;
 }
Beispiel #3
0
        public async Task InitAsync(MonasteryCardGameVMData model, IUIView view, IEventAggregator aggregator)
        {
            _view       = view;
            _aggregator = aggregator;
            Text        = "Mission List";
            _thisList   = model.CompleteMissions;
            Grid mainGrid = new Grid();
            var  thisRect = ThisFrame.GetControlArea();

            _thisGrid        = new Grid();
            _thisGrid.Margin = new Thickness(thisRect.Left + 3, thisRect.Top + 10, 3, 3);
            AddAutoRows(_thisGrid, 6);
            AddLeftOverColumn(_thisGrid, 50);
            AddLeftOverColumn(_thisGrid, 50);
            mainGrid.Children.Add(ThisDraw);
            mainGrid.Children.Add(_thisGrid);
            await PopulateListAsync();

            _thisList.CollectionChanged += ListChange;
            Content = mainGrid;
        }
        public MonasteryCardGameMainView(IEventAggregator aggregator,
                                         TestOptions test,
                                         MonasteryCardGameVMData model
                                         )
        {
            _aggregator = aggregator;
            _model      = model;
            _aggregator.Subscribe(this);

            _deckGPile     = new BaseDeckWPF <MonasteryCardInfo, ts, DeckOfCardsWPF <MonasteryCardInfo> >();
            _discardGPile  = new BasePileWPF <MonasteryCardInfo, ts, DeckOfCardsWPF <MonasteryCardInfo> >();
            _score         = new ScoreBoardWPF();
            _playerHandWPF = new BaseHandWPF <MonasteryCardInfo, ts, DeckOfCardsWPF <MonasteryCardInfo> >();

            _tempG      = new TempRummySetsWPF <EnumSuitList, EnumColorList, MonasteryCardInfo, ts, DeckOfCardsWPF <MonasteryCardInfo> >();
            _mainG      = new MainRummySetsWPF <EnumSuitList, EnumColorList, MonasteryCardInfo, ts, DeckOfCardsWPF <MonasteryCardInfo>, RummySet, SavedSet>();
            _missionWPF = new MissionUI();


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

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

            AddLeftOverRow(finalGrid, 20); // has to be this way because of scoreboard.
            AddLeftOverRow(finalGrid, 80);
            mainStack.Children.Add(finalGrid);
            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
            _deckGPile.HorizontalAlignment    = HorizontalAlignment.Left;
            _deckGPile.VerticalAlignment      = VerticalAlignment.Top;
            _discardGPile.HorizontalAlignment = HorizontalAlignment.Left;
            _discardGPile.VerticalAlignment   = VerticalAlignment.Top;
            StackPanel otherStack = new StackPanel();

            otherStack.Orientation = Orientation.Horizontal;
            otherStack.Children.Add(_deckGPile);
            otherStack.Children.Add(_discardGPile); // can reposition or not even have as well.
            AddControlToGrid(firstGrid, otherStack, 0, 1);
            AddControlToGrid(firstGrid, _playerHandWPF, 0, 0);
            _score.UseAbbreviationForTrueFalse = true;
            _score.AddColumn("Cards Left", false, nameof(MonasteryCardGamePlayerItem.ObjectCount));
            _score.AddColumn("Finished Mission", false, nameof(MonasteryCardGamePlayerItem.FinishedCurrentMission), useTrueFalse: true);
            int x;

            for (x = 1; x <= 9; x++)
            {
                _score.AddColumn("Mission" + x, false, "Mission" + x + "Completed", useTrueFalse: true);
            }
            AddControlToGrid(firstGrid, _score, 0, 3); // use 3 instead of 4 here.
            SimpleLabelGrid firstInfo = new SimpleLabelGrid();

            firstInfo.AddRow("Turn", nameof(MonasteryCardGameMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(MonasteryCardGameMainViewModel.Status));
            AddControlToGrid(firstGrid, firstInfo.GetContent, 0, 2);
            AddControlToGrid(finalGrid, firstGrid, 0, 0);
            _tempG.Height = 700;
            _mainG.Height = 700; //i think.
            Grid bottomGrid = new Grid();

            AddAutoColumns(bottomGrid, 1);
            AddLeftOverColumn(bottomGrid, 40);
            AddLeftOverColumn(bottomGrid, 60); // most important is the last one.  can adjust as needed though.   especially on tablets
            AddControlToGrid(bottomGrid, _tempG, 0, 0);
            AddControlToGrid(bottomGrid, _mainG, 0, 1);
            AddControlToGrid(bottomGrid, _missionWPF, 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)
            {
                //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 = mainStack;
        }
        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;
        }