From 8df235a85b0557a6e2e6622582253634ebcb57f6 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Tue, 13 Jun 2023 16:55:02 -0400 Subject: [PATCH] let play mode start if no song file is loaded fix issue with loading large audio files --- Assets/Scripts/GameManager.cs | 21 +++++++++++++++++++-- Assets/Scripts/UI/PauseMenu.cs | 1 + Packages/packages-lock.json | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 4111f2cae..9df92edc4 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -46,6 +46,9 @@ namespace HeavenStudio [NonSerialized] public RiqEntity currentSection, nextSection; public double sectionProgress { get; private set; } + bool AudioLoadDone; + bool ChartLoadError; + public event Action onBeatChanged; public event Action onSectionChange; @@ -104,6 +107,8 @@ namespace HeavenStudio public void Init(bool preLoaded = false) { + AudioLoadDone = false; + ChartLoadError = false; currentPreEvent= 0; currentPreSwitch = 0; currentPreSequence = 0; @@ -141,6 +146,7 @@ namespace HeavenStudio } else { + RiqFileHandler.ClearCache(); NewRemix(); } @@ -163,7 +169,8 @@ namespace HeavenStudio } public void NewRemix() - { + { + AudioLoadDone = false; Beatmap = new("1", "HeavenStudio"); Beatmap.data.properties = Minigames.propertiesModel; Beatmap.AddNewTempoChange(0, 120f); @@ -171,10 +178,12 @@ namespace HeavenStudio Beatmap.data.offset = 0f; Conductor.instance.musicSource.clip = null; RiqFileHandler.WriteRiq(Beatmap); + AudioLoadDone = true; } public IEnumerator LoadMusic() { + ChartLoadError = false; IEnumerator load = RiqFileHandler.LoadSong(); while (true) { @@ -191,20 +200,27 @@ namespace HeavenStudio { Debug.LogWarning("chart has no music: " + f.Message); Conductor.instance.musicSource.clip = null; + AudioLoadDone = true; + yield break; } catch (Exception e) { Debug.LogError($"Failed to load music: {e.Message}"); GlobalGameManager.ShowErrorMessage("Error Loading Music", e.Message + "\n\n" + e.StackTrace); + AudioLoadDone = true; + ChartLoadError = true; yield break; } yield return current; } Conductor.instance.musicSource.clip = RiqFileHandler.StreamedAudioClip; + AudioLoadDone = true; } public void LoadRemix(bool editor = false) { + AudioLoadDone = false; + ChartLoadError = false; try { Beatmap = RiqFileHandler.ReadRiq(); @@ -213,6 +229,7 @@ namespace HeavenStudio { Debug.LogError($"Failed to load remix: {e.Message}"); GlobalGameManager.ShowErrorMessage("Error Loading RIQ", e.Message + "\n\n" + e.StackTrace); + ChartLoadError = true; return; } if (!editor) @@ -559,7 +576,7 @@ namespace HeavenStudio // wait for first game to be loaded yield return new WaitUntil(() => Beatmap != null && Beatmap.Entities.Count > 0); //wait for audio clip to be loaded - yield return new WaitUntil(() => Conductor.instance.musicSource.clip != null); + yield return new WaitUntil(() => AudioLoadDone || (ChartLoadError && !GlobalGameManager.IsShowingDialog)); SkillStarManager.instance.KillStar(); TimingAccuracyDisplay.instance.StopStarFlash(); diff --git a/Assets/Scripts/UI/PauseMenu.cs b/Assets/Scripts/UI/PauseMenu.cs index bdf87db25..81c9f19d2 100644 --- a/Assets/Scripts/UI/PauseMenu.cs +++ b/Assets/Scripts/UI/PauseMenu.cs @@ -42,6 +42,7 @@ namespace HeavenStudio.Common void Pause() { + if (GlobalGameManager.IsShowingDialog) return; if (!Conductor.instance.isPlaying) return; Conductor.instance.Pause(); pauseBeat = Conductor.instance.songPositionInBeatsAsDouble; diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index cfc095163..d80b6b2ff 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -7,7 +7,7 @@ "dependencies": { "com.unity.nuget.newtonsoft-json": "3.2.1" }, - "hash": "769b4fe2c85792b34defb00e051e823442b78564" + "hash": "f1813255c1d322b6fe207de4361bbf288f9cda03" }, "com.unity.2d.sprite": { "version": "1.0.0",