public CandylandMainView(IEventAggregator aggregator, TestOptions test, IGamePackageRegister register //unless i extend the contract, will be done this way. ) { Background = Brushes.White; _aggregator = aggregator; _aggregator.Subscribe(this); StackPanel mainStack = new StackPanel(); ParentSingleUIContainer?restoreP = null; if (test.SaveOption == EnumTestSaveCategory.RestoreOnly) { restoreP = new ParentSingleUIContainer() { Name = nameof(CandylandMainViewModel.RestoreScreen) }; } StackPanel otherStack = new StackPanel(); _ourBoard = new GameboardWPF(); register.RegisterControl(_ourBoard.Element1, "main"); //register!.RegisterSingleton(_ourBoard.Element1, "main"); //i think _ourCard = new CardGraphicsWPF(); // bindings are finished _ourCard.SendSize("main", new CandylandCardData()); otherStack.Margin = new Thickness(5, 5, 5, 5); otherStack.Orientation = Orientation.Horizontal; StackPanel firstStack = new StackPanel(); otherStack.Children.Add(firstStack); firstStack.Children.Add(_ourCard); //you already subscribed. just hook up another event for this. _ourPiece = new PieceWPF(); _ourPiece.Margin = new Thickness(0, 5, 0, 0); _ourPiece.SetSizes(); BaseLabelGrid firstInfo = new BaseLabelGrid(); firstInfo.AddRow("Turn", nameof(CandylandMainViewModel.NormalTurn)); firstInfo.AddRow("Status", nameof(CandylandMainViewModel.Status)); firstStack.Children.Add(firstInfo.GetContent); firstStack.Children.Add(_ourPiece); _ourBoard.HorizontalAlignment = HorizontalAlignment.Left; _ourBoard.VerticalAlignment = VerticalAlignment.Top; _ourBoard.Margin = new Thickness(5, 0, 0, 0); otherStack.Children.Add(_ourBoard); mainStack.Children.Add(otherStack); 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 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; }