Пример #1
0
        public SnakesAndLaddersMainView(IEventAggregator aggregator,
                                        TestOptions test, SnakesAndLaddersMainGameClass mainGame,
                                        SnakesAndLaddersVMData model
                                        )
        {
            _aggregator = aggregator;
            _mainGame   = mainGame;
            _model      = model;
            _aggregator.Subscribe(this);
            StackLayout             mainStack = new StackLayout();
            ParentSingleUIContainer?restoreP  = null;

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

            _privateBoard                   = new GameboardXF();
            _privateBoard.Margin            = new Thickness(5, 5, 5, 5);
            _privateBoard.HorizontalOptions = LayoutOptions.Start;
            _privateBoard.VerticalOptions   = LayoutOptions.Start;
            mainStack.Children.Add(_privateBoard);
            var         thisRoll   = GetGamingButton("Roll Dice", nameof(SnakesAndLaddersMainViewModel.RollDiceAsync));
            StackLayout otherStack = new StackLayout();

            otherStack.Orientation = StackOrientation.Horizontal;
            _diceControl           = new DiceListControlXF <SimpleDice>();
            otherStack.Children.Add(thisRoll);
            _pieceTurn = new GamePieceXF();
            if (ScreenUsed == EnumScreen.SmallPhone)
            {
                _pieceTurn.WidthRequest  = 40;
                _pieceTurn.HeightRequest = 40;
            }
            else
            {
                _pieceTurn.WidthRequest  = 90;
                _pieceTurn.HeightRequest = 90;
            }
            _pieceTurn.Margin         = new Thickness(10, 0, 0, 0);
            _pieceTurn.NeedsSubscribe = false; // won't notify in this case.  just let them know when new turn.  otherwise, when this number changes, it will trigger for the gameboard (which is not good)
            _pieceTurn.Init();
            otherStack.Children.Add(_pieceTurn);
            otherStack.Children.Add(_diceControl);
            mainStack.Children.Add(otherStack);
            SimpleLabelGridXF firstInfo = new SimpleLabelGridXF();

            firstInfo.AddRow("Turn", nameof(SnakesAndLaddersMainViewModel.NormalTurn));
            firstInfo.AddRow("Status", nameof(SnakesAndLaddersMainViewModel.Status));
            mainStack.Children.Add(firstInfo.GetContent);

            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;
        }
Пример #2
0
        public MinesweeperMainView(IEventAggregator aggregator, MinesweeperMainGameClass game)
        {
            _aggregator = aggregator;
            _aggregator.Subscribe(this);

            Grid grid = new Grid();

            AddLeftOverColumn(grid, 1); //well see how this works (?)
            AddLeftOverColumn(grid, 1);
            GameboardXF gameboard = new GameboardXF(game);

            AddControlToGrid(grid, gameboard, 0, 0);
            _gameboard = gameboard;

            StackLayout       stack   = new StackLayout();
            SimpleLabelGridXF thisLab = new SimpleLabelGridXF();

            thisLab.AddRow("Mines Needed", nameof(MinesweeperMainViewModel.HowManyMinesNeeded));
            thisLab.AddRow("Mines Left", nameof(MinesweeperMainViewModel.NumberOfMinesLeft));
            thisLab.AddRow("Level Chosen", nameof(MinesweeperMainViewModel.LevelChosen)); //hopefully this simple (?)

            //i do like the buttons first.
            Button          button    = GetGamingButton("", nameof(MinesweeperMainViewModel.ChangeFlag));
            Binding         binding   = new Binding(nameof(MinesweeperMainViewModel.IsFlagging));
            IValueConverter converter = new ToggleNameConverter();

            binding.Converter = converter;
            button.SetBinding(Button.TextProperty, binding);

            binding           = new Binding(nameof(MinesweeperMainViewModel.IsFlagging));
            converter         = new ToggleColorConverter();
            binding.Converter = converter;
            button.SetBinding(BackgroundColorProperty, binding);

            stack.Children.Add(button);
            button.Margin            = new Thickness(5);
            button.HorizontalOptions = LayoutOptions.Start;
            button.VerticalOptions   = LayoutOptions.Start;
            stack.Children.Add(thisLab.GetContent);
            AddControlToGrid(grid, stack, 0, 1);
            Content = grid;
        }