From 7543d491aee30545d76e25a71a894bf4b86aa32f Mon Sep 17 00:00:00 2001
From: Huo Yaoyuan <huoyaoyuan@hotmail.com>
Date: Fri, 28 Oct 2016 21:21:47 +0800
Subject: [PATCH] Add music controller into game.

---
 osu.Game/OsuGame.cs                  |  3 +++
 osu.Game/Overlays/MusicController.cs | 12 +++++++-----
 osu.Game/Overlays/Toolbar.cs         |  6 ++++++
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs
index 2515ace38e..936f7c3017 100644
--- a/osu.Game/OsuGame.cs
+++ b/osu.Game/OsuGame.cs
@@ -25,6 +25,7 @@ namespace osu.Game
     {
         public Toolbar Toolbar;
         public ChatConsole Chat;
+        public MusicController MusicController;
         public MainMenu MainMenu => intro?.ChildGameMode as MainMenu;
         private Intro intro;
 
@@ -74,11 +75,13 @@ namespace osu.Game
                 {
                     Beatmap = Beatmap
                 },
+                MusicController = new MusicController(),
                 Toolbar = new Toolbar
                 {
                     OnHome = delegate { MainMenu?.MakeCurrent(); },
                     OnSettings = Options.ToggleVisibility,
                     OnPlayModeChange = delegate (PlayMode m) { PlayMode.Value = m; },
+                    OnMusicController = MusicController.ToggleVisibility,
                 },
                 Chat = new ChatConsole(API),
                 volume = new VolumeControl
diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs
index e9ee3d2918..f2bb7d83dc 100644
--- a/osu.Game/Overlays/MusicController.cs
+++ b/osu.Game/Overlays/MusicController.cs
@@ -35,6 +35,13 @@ namespace osu.Game.Overlays
         public MusicController(BeatmapDatabase db = null)
         {
             database = db;
+            Width = 400;
+            Height = 130;
+            CornerRadius = 5;
+            Masking = true;
+            Anchor = Anchor.TopRight;//placeholder
+            Origin = Anchor.TopRight;
+            Position = new Vector2(10, 50);
         }
 
         public override void Load(BaseGame game)
@@ -53,11 +60,6 @@ namespace osu.Game.Overlays
             workingChanged();
             playList = database.GetAllWithChildren<BeatmapSetInfo>();
 
-            Width = 400;
-            Height = 130;
-            CornerRadius = 5;
-            Masking = true;
-
             Children = new Drawable[]
             {
                 backgroundSprite = getScaledSprite(game.Textures.Get(@"Backgrounds/bg4")),//placeholder
diff --git a/osu.Game/Overlays/Toolbar.cs b/osu.Game/Overlays/Toolbar.cs
index 5e85dd832e..90c73da1e0 100644
--- a/osu.Game/Overlays/Toolbar.cs
+++ b/osu.Game/Overlays/Toolbar.cs
@@ -22,6 +22,7 @@ namespace osu.Game.Overlays
         public Action OnSettings;
         public Action OnHome;
         public Action<PlayMode> OnPlayModeChange;
+        public Action OnMusicController;
 
         private ToolbarModeSelector modeSelector;
 
@@ -89,6 +90,11 @@ namespace osu.Game.Overlays
                     AutoSizeAxes = Axes.X,
                     Children = new []
                     {
+                        new ToolbarButton
+                        {
+                            Icon = FontAwesome.music,
+                            Action = OnMusicController
+                        },
                         new ToolbarButton
                         {
                             Icon = FontAwesome.search