Beispiel #1
0
        private void load()
        {
            AddRangeInternal(new Drawable[]
            {
                mainContent = new GridContainer
                {
                    RelativeSizeAxes = Axes.Both,
                    Content          = new[]
                    {
                        new Drawable[]
                        {
                            new Container
                            {
                                RelativeSizeAxes = Axes.Both,
                                Padding          = new MarginPadding
                                {
                                    Horizontal = HORIZONTAL_OVERFLOW_PADDING + 55,
                                    Vertical   = 20
                                },
                                Child = new GridContainer
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    RowDimensions    = new[]
                                    {
                                        new Dimension(GridSizeMode.AutoSize),
                                        new Dimension(),
                                    },
                                    Content = new[]
                                    {
                                        new Drawable[]
                                        {
                                            new MultiplayerMatchHeader
                                            {
                                                OpenSettings = () => settingsOverlay.Show()
                                            }
                                        },
                                        new Drawable[]
                                        {
                                            new Container
                                            {
                                                RelativeSizeAxes = Axes.Both,
                                                Padding          = new MarginPadding {
                                                    Horizontal = 5, Vertical = 10
                                                },
                                                Child = new GridContainer
                                                {
                                                    RelativeSizeAxes = Axes.Both,
                                                    ColumnDimensions = new[]
                                                    {
                                                        new Dimension(GridSizeMode.Relative, size: 0.5f, maxSize: 400),
                                                        new Dimension(),
                                                        new Dimension(GridSizeMode.Relative, size: 0.5f, maxSize: 600),
                                                    },
                                                    Content = new[]
                                                    {
                                                        new Drawable[]
                                                        {
                                                            // Main left column
                                                            new GridContainer
                                                            {
                                                                RelativeSizeAxes = Axes.Both,
                                                                RowDimensions    = new[]
                                                                {
                                                                    new Dimension(GridSizeMode.AutoSize)
                                                                },
                                                                Content = new[]
                                                                {
                                                                    new Drawable[] { new ParticipantsListHeader() },
                                                                    new Drawable[]
                                                                    {
                                                                        new ParticipantsList
                                                                        {
                                                                            RelativeSizeAxes = Axes.Both
                                                                        },
                                                                    }
                                                                }
                                                            },
                                                            // Spacer
                                                            null,
                                                            // Main right column
                                                            new FillFlowContainer
                                                            {
                                                                RelativeSizeAxes = Axes.X,
                                                                AutoSizeAxes     = Axes.Y,
                                                                Children         = new[]
                                                                {
                                                                    new FillFlowContainer
                                                                    {
                                                                        RelativeSizeAxes = Axes.X,
                                                                        AutoSizeAxes     = Axes.Y,
                                                                        Children         = new Drawable[]
                                                                        {
                                                                            new OverlinedHeader("Beatmap"),
                                                                            new BeatmapSelectionControl {
                                                                                RelativeSizeAxes = Axes.X
                                                                            }
                                                                        }
                                                                    },
                                                                    userModsSection = new FillFlowContainer
                                                                    {
                                                                        RelativeSizeAxes = Axes.X,
                                                                        AutoSizeAxes     = Axes.Y,
                                                                        Margin           = new MarginPadding {
                                                                            Top = 10
                                                                        },
                                                                        Children = new Drawable[]
                                                                        {
                                                                            new OverlinedHeader("Extra mods"),
                                                                            new FillFlowContainer
                                                                            {
                                                                                AutoSizeAxes = Axes.Both,
                                                                                Direction    = FillDirection.Horizontal,
                                                                                Spacing      = new Vector2(10, 0),
                                                                                Children     = new Drawable[]
                                                                                {
                                                                                    new PurpleTriangleButton
                                                                                    {
                                                                                        Anchor = Anchor.CentreLeft,
                                                                                        Origin = Anchor.CentreLeft,
                                                                                        Width  = 90,
                                                                                        Text   = "Select",
                                                                                        Action = () => userModsSelectOverlay.Show()
                                                                                    },
                                                                                    new ModDisplay
                                                                                    {
                                                                                        Anchor = Anchor.CentreLeft,
                                                                                        Origin = Anchor.CentreLeft,
                                                                                        DisplayUnrankedText = false,
                                                                                        Current             = UserMods,
                                                                                        Scale = new Vector2(0.8f),
                                                                                    },
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        new Drawable[]
                                        {
                                            new GridContainer
                                            {
                                                RelativeSizeAxes = Axes.Both,
                                                RowDimensions    = new[]
                                                {
                                                    new Dimension(GridSizeMode.AutoSize)
                                                },
                                                Content = new[]
                                                {
                                                    new Drawable[] { new OverlinedHeader("Chat") },
                                                    new Drawable[] { new MatchChatDisplay {
                                                                         RelativeSizeAxes = Axes.Both
                                                                     } }
                                                }
                                            }
                                        }
                                    },
                                }
                            }
                        },
                        new Drawable[]
                        {
                            new MultiplayerMatchFooter
                            {
                                OnReadyClick = onReadyClick
                            }
                        }
                    },
                    RowDimensions = new[]
                    {
                        new Dimension(),
                        new Dimension(GridSizeMode.AutoSize),
                    }
                },
                new Container
                {
                    Anchor           = Anchor.BottomLeft,
                    Origin           = Anchor.BottomLeft,
                    RelativeSizeAxes = Axes.Both,
                    Height           = 0.5f,
                    Padding          = new MarginPadding {
                        Horizontal = HORIZONTAL_OVERFLOW_PADDING
                    },
                    Child = userModsSelectOverlay = new UserModSelectOverlay
                    {
                        SelectedMods = { BindTarget = UserMods },
                        IsValidMod   = _ => false
                    }
                },
                settingsOverlay = new MultiplayerMatchSettingsOverlay
                {
                    RelativeSizeAxes = Axes.Both,
                    State            = { Value = client.Room == null ? Visibility.Visible : Visibility.Hidden }
                }
            });

            if (client.Room == null)
            {
                // A new room is being created.
                // The main content should be hidden until the settings overlay is hidden, signaling the room is ready to be displayed.
                mainContent.Hide();

                settingsOverlay.State.BindValueChanged(visibility =>
                {
                    if (visibility.NewValue == Visibility.Hidden)
                    {
                        mainContent.Show();
                    }
                }, true);
            }
        }
Beispiel #2
0
 private void load()
 {
     InternalChildren = new Drawable[]
     {
         new GridContainer
         {
             RelativeSizeAxes = Axes.Both,
             Content          = new[]
             {
                 new Drawable[]
                 {
                     new Container
                     {
                         RelativeSizeAxes = Axes.Both,
                         Padding          = new MarginPadding
                         {
                             Horizontal = 105,
                             Vertical   = 20
                         },
                         Child = new GridContainer
                         {
                             RelativeSizeAxes = Axes.Both,
                             RowDimensions    = new[]
                             {
                                 new Dimension(GridSizeMode.AutoSize),
                                 new Dimension(),
                             },
                             Content = new[]
                             {
                                 new Drawable[]
                                 {
                                     new MultiplayerMatchHeader
                                     {
                                         OpenSettings = () => settingsOverlay.Show()
                                     }
                                 },
                                 new Drawable[]
                                 {
                                     new GridContainer
                                     {
                                         RelativeSizeAxes = Axes.Both,
                                         Content          = new[]
                                         {
                                             new Drawable[]
                                             {
                                                 new Container
                                                 {
                                                     RelativeSizeAxes = Axes.Both,
                                                     Padding          = new MarginPadding {
                                                         Horizontal = 5, Vertical = 10
                                                     },
                                                     Child = new GridContainer
                                                     {
                                                         RelativeSizeAxes = Axes.Both,
                                                         RowDimensions    = new[]
                                                         {
                                                             new Dimension(GridSizeMode.AutoSize)
                                                         },
                                                         Content = new[]
                                                         {
                                                             new Drawable[] { new ParticipantsListHeader() },
                                                             new Drawable[]
                                                             {
                                                                 new ParticipantsList
                                                                 {
                                                                     RelativeSizeAxes = Axes.Both
                                                                 },
                                                             }
                                                         }
                                                     }
                                                 },
                                                 new FillFlowContainer
                                                 {
                                                     Anchor           = Anchor.Centre,
                                                     Origin           = Anchor.Centre,
                                                     RelativeSizeAxes = Axes.X,
                                                     AutoSizeAxes     = Axes.Y,
                                                     Padding          = new MarginPadding {
                                                         Horizontal = 5
                                                     },
                                                     Children = new Drawable[]
                                                     {
                                                         new OverlinedHeader("Beatmap"),
                                                         new BeatmapSelectionControl {
                                                             RelativeSizeAxes = Axes.X
                                                         }
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 },
                                 new Drawable[]
                                 {
                                     new GridContainer
                                     {
                                         RelativeSizeAxes = Axes.Both,
                                         RowDimensions    = new[]
                                         {
                                             new Dimension(GridSizeMode.AutoSize)
                                         },
                                         Content = new[]
                                         {
                                             new Drawable[] { new OverlinedHeader("Chat") },
                                             new Drawable[] { new MatchChatDisplay {
                                                                  RelativeSizeAxes = Axes.Both
                                                              } }
                                         }
                                     }
                                 }
                             },
                         }
                     }
                 },
                 new Drawable[]
                 {
                     new MultiplayerMatchFooter {
                         SelectedItem = { BindTarget = SelectedItem }
                     }
                 }
             },
             RowDimensions = new[]
             {
                 new Dimension(),
                 new Dimension(GridSizeMode.AutoSize),
             }
         },
         settingsOverlay = new MultiplayerMatchSettingsOverlay
         {
             RelativeSizeAxes = Axes.Both,
             State            = { Value = client.Room == null ? Visibility.Visible : Visibility.Hidden }
         }
     };
 }