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; }
private readonly SnakesAndLaddersMainGameClass _mainGame; //if we don't need, delete. public SnakesAndLaddersMainViewModel(CommandContainer commandContainer, SnakesAndLaddersMainGameClass mainGame, IViewModelData viewModel, BasicData basicData, TestOptions test, IGamePackageResolver resolver ) : base(commandContainer, mainGame, viewModel, basicData, test, resolver) { _mainGame = mainGame; }
public SnakesAndLaddersMainView(IEventAggregator aggregator, TestOptions test, SnakesAndLaddersMainGameClass mainGame, SnakesAndLaddersVMData model ) { _aggregator = aggregator; _mainGame = mainGame; _model = model; _aggregator.Subscribe(this); StackPanel mainStack = new StackPanel(); ParentSingleUIContainer?restoreP = null; if (test.SaveOption == EnumTestSaveCategory.RestoreOnly) { restoreP = new ParentSingleUIContainer() { Name = nameof(SnakesAndLaddersMainViewModel.RestoreScreen) }; } _privateBoard = new GameboardWPF(); _privateBoard.Margin = new Thickness(5, 5, 5, 5); _privateBoard.HorizontalAlignment = HorizontalAlignment.Left; _privateBoard.VerticalAlignment = VerticalAlignment.Top; mainStack.Children.Add(_privateBoard); var thisRoll = GetGamingButton("Roll Dice", nameof(SnakesAndLaddersMainViewModel.RollDiceAsync)); StackPanel otherStack = new StackPanel(); otherStack.Orientation = Orientation.Horizontal; _diceControl = new DiceListControlWPF <SimpleDice>(); otherStack.Children.Add(thisRoll); _pieceTurn = new GamePieceWPF(); _pieceTurn.Width = 80; _pieceTurn.Height = 80; // try this way. _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); SimpleLabelGrid firstInfo = new SimpleLabelGrid(); firstInfo.AddRow("Turn", nameof(SnakesAndLaddersMainViewModel.NormalTurn)); firstInfo.AddRow("Status", nameof(SnakesAndLaddersMainViewModel.Status)); mainStack.Children.Add(firstInfo.GetContent); if (restoreP != null) { mainStack.Children.Add(restoreP); //default add to grid but does not have to. } Content = mainStack; }