Example #1
0
 public GamePage()
 {
     _controller = new GamePageController(this);
 }
        private void InitializeWizardComponentProvider()
        {
            animationQueue               = new List <DoubleAnimation>();
            _gamePageController          = new GamePageController(this, this.Dispatcher);
            _animationsCompletedHandlers = new Queue <Action>();

            // card groups
            CenterShuffleCardGroup    = new StackCardGroup(this, new NormalizedPosition(50, 50), 0);
            LeftShuffleCardGroup      = new StackCardGroup(this, new NormalizedPosition(40, 50), 0);
            RightShuffleCardGroup     = new StackCardGroup(this, new NormalizedPosition(60, 50), 0);
            DiscardCardGroup          = new AdjacentCardGroup(this, new NormalizedPosition(62, 50), 0);
            Player1CardGroup          = new InteractiveAdjacentCardGroup(this, new NormalizedPosition(50, 90), Common.Orientation.DEGREES_0);
            Player2CardGroup          = new AdjacentCardGroup(this, new NormalizedPosition(4, 50), Common.Orientation.DEGREES_90);
            Player3CardGroup          = new AdjacentCardGroup(this, new NormalizedPosition(50, 3), Common.Orientation.DEGREES_180);
            Player4CardGroup          = new AdjacentCardGroup(this, new NormalizedPosition(96, 50), Common.Orientation.DEGREES_270);
            DeckCardGroup             = new StackCardGroup(this, new NormalizedPosition(29, 50), 0);
            TrumpCardGroup            = new StackCardGroup(this, new NormalizedPosition(37, 50), 0);
            CollapsedDiscardCardGroup = new StackCardGroup(this, GetRelativeNormalizedPosition(DiscardCardGroup.Origin, 0, 0), 0);
            OffScreenPlayer1CardGroup = new StackCardGroup(this, GetRelativeNormalizedPosition(Player1CardGroup.Origin, 0, 20), 0);
            OffScreenPlayer2CardGroup = new StackCardGroup(this, GetRelativeNormalizedPosition(Player2CardGroup.Origin, -20, 0), Common.Orientation.DEGREES_90);
            OffScreenPlayer3CardGroup = new StackCardGroup(this, GetRelativeNormalizedPosition(Player3CardGroup.Origin, 0, -20), Common.Orientation.DEGREES_180);
            OffScreenPlayer4CardGroup = new StackCardGroup(this, GetRelativeNormalizedPosition(Player4CardGroup.Origin, 20, 0), Common.Orientation.DEGREES_270);

            // button positions
            Player1ButtonPosition = new DealerButtonPosition(this, new NormalizedPosition(55, 70));
            Player2ButtonPosition = new DealerButtonPosition(this, new NormalizedPosition(15, 59));
            Player3ButtonPosition = new DealerButtonPosition(this, new NormalizedPosition(58, 17));
            Player4ButtonPosition = new DealerButtonPosition(this, new NormalizedPosition(82, 53));

            // bind callbacks to UI elements
            player_creation_input.KeyDown    += this.OnPlayerCreationInputKeyDown;
            player_bid_input.KeyDown         += this.OnPlayerBidInputKeyDown;
            game_canvas_storyboard.Completed += OnAnimationsCompleted;
            pause_button.Click       += (object sender, RoutedEventArgs args) => _pauseButtonClickedHandler();
            scores_button.Click      += (object sender, RoutedEventArgs args) => _scoresButtonClickedHandler();
            quit_button.Click        += (object sender, RoutedEventArgs args) => _quitButtonClickedHandler();
            short_game_button.Click  += (object sender, RoutedEventArgs args) => OnGameLengthButtonClicked(5);
            medium_game_button.Click += (object sender, RoutedEventArgs args) => OnGameLengthButtonClicked(10);
            full_game_button.Click   += (object sender, RoutedEventArgs args) => OnGameLengthButtonClicked(15);


            // set position of UI elements using method that binds them to a responsive canvas position
            SetUiElementNormalizedCanvasPosition(player_creation_input, new NormalizedPosition(50, 50), true);
            SetUiElementNormalizedCanvasPosition(short_game_button, new NormalizedPosition(50, 60), true);
            SetUiElementNormalizedCanvasPosition(medium_game_button, new NormalizedPosition(50, 68), true);
            SetUiElementNormalizedCanvasPosition(full_game_button, new NormalizedPosition(50, 76), true);
            SetUiElementNormalizedCanvasPosition(player_bid_input, new NormalizedPosition(62, 50));
            SetUiElementNormalizedCanvasPosition(player_bid_error_message, new NormalizedPosition(62, 58));

            // scoreboard
            SetUiElementNormalizedCanvasPosition(scoreboard_container, new NormalizedPosition(7, 7));

            // player personas
            SetUiElementNormalizedCanvasPosition(player1_name_container, GetRelativeNormalizedPosition(Player1CardGroup.Origin, -5, -20));
            SetUiElementNormalizedCanvasPosition(player1_status, GetRelativeNormalizedPosition(Player1CardGroup.Origin, -5, -15.5));
            SetUiElementNormalizedCanvasPosition(player2_name_container, GetRelativeNormalizedPosition(Player2CardGroup.Origin, 10, 0));
            SetUiElementNormalizedCanvasPosition(player2_status, GetRelativeNormalizedPosition(Player2CardGroup.Origin, 10, 4.5));
            SetUiElementNormalizedCanvasPosition(player3_name_container, GetRelativeNormalizedPosition(Player3CardGroup.Origin, -2, 15));
            SetUiElementNormalizedCanvasPosition(player3_status, GetRelativeNormalizedPosition(Player3CardGroup.Origin, -2, 19.5));
            SetUiElementNormalizedCanvasPosition(player4_name_container, GetRelativeNormalizedPosition(Player4CardGroup.Origin, -15, -6));
            SetUiElementNormalizedCanvasPosition(player4_status, GetRelativeNormalizedPosition(Player4CardGroup.Origin, -15, -1.5));
            SetUiElementNormalizedCanvasPosition(game_message_box, GetRelativeNormalizedPosition(CenterShuffleCardGroup.Origin, 0, -17), true);

            // player avatars
            SetUiElementNormalizedCanvasPosition(player2_avatar, GetRelativeNormalizedPosition(Player2CardGroup.Origin, 8, -3));
            SetUiElementNormalizedCanvasPosition(player3_avatar, GetRelativeNormalizedPosition(Player3CardGroup.Origin, -4, 12));
            SetUiElementNormalizedCanvasPosition(player4_avatar, GetRelativeNormalizedPosition(Player4CardGroup.Origin, -17, -9));
            DoAsyncInitialization().ContinueWith(task =>
            {
                SetUiElementNormalizedCanvasPosition(player1_avatar, GetRelativeNormalizedPosition(Player1CardGroup.Origin, -7, -23));
            }, TaskScheduler.FromCurrentSynchronizationContext());

            // top menu buttons
            SetUiElementNormalizedCanvasPosition(pause_button, new NormalizedPosition(2, 2));
            SetUiElementNormalizedCanvasPosition(scores_button, new NormalizedPosition(6, 2));
            SetUiElementNormalizedCanvasPosition(quit_button, new NormalizedPosition(10.2, 2));
        }