Browse Source

ScoreSaber Data reloaded after level finishes.

Stephen Damm 5 years ago
parent
commit
c860b2da78

+ 19 - 0
SongBrowserPlugin/SongBrowserApplication.cs

@@ -45,6 +45,7 @@ namespace SongBrowserPlugin
 
             _songBrowserUI = gameObject.AddComponent<SongBrowserUI>();
             _ppDownloader = gameObject.AddComponent<ScoreSaberDatabaseDownloader>();
+            _ppDownloader.onScoreSaberDataDownloaded += OnScoreSaberDataDownloaded;
         }
 
         /// <summary>
@@ -104,6 +105,24 @@ namespace SongBrowserPlugin
         }
 
         /// <summary>
+        /// Inform browser score saber data is available.
+        /// </summary>
+        /// <param name="loader"></param>
+        /// <param name="levels"></param>
+        private void OnScoreSaberDataDownloaded()
+        {
+            _log.Trace("OnScoreSaberDataDownloaded");
+            try
+            {
+                _songBrowserUI.UpdateSongList();
+            }
+            catch (Exception e)
+            {
+                _log.Exception("Exception during OnSongLoaderLoadedSongs: ", e);
+            }
+        }
+
+        /// <summary>
         /// Get a handle to the view controllers we are going to add elements to.
         /// </summary>
         public void AcquireUIElements()

+ 7 - 1
SongBrowserPlugin/UI/ScoreSaberDatabaseDownloader.cs

@@ -18,6 +18,8 @@ namespace SongBrowserPlugin.UI
 
         public ScoreSaberDataFile ScoreSaberDataFile;
 
+        public Action onScoreSaberDataDownloaded;
+
         /// <summary>
         /// Awake.
         /// </summary>
@@ -25,7 +27,10 @@ namespace SongBrowserPlugin.UI
         {
             _log.Trace("Awake()");
 
-            Instance = this;
+            if (Instance == null)
+            {
+                Instance = this;
+            }
         }
 
         /// <summary>
@@ -57,6 +62,7 @@ namespace SongBrowserPlugin.UI
                 {
                     this.ScoreSaberDataFile = (www.downloadHandler as CacheableDownloadHandlerScoreSaberData).ScoreSaberDataFile;
                     _log.Info("Success!");
+                    onScoreSaberDataDownloaded?.Invoke();
                 }
                 catch (System.InvalidOperationException)
                 {