Merge pull request #469 from minenice55/jukebox-update

Jukebox Package Update
This commit is contained in:
minenice55 2023-06-13 21:39:15 +00:00 committed by GitHub
commit 4fde418c33
6 changed files with 34 additions and 12 deletions

View file

@ -55,7 +55,7 @@ namespace HeavenStudio
{
if (editorGO == null && OpeningManager.OnOpenFile.IndexOfAny(Path.GetInvalidPathChars()) == -1)
{
if (File.Exists(OpeningManager.OnOpenFile))
if (File.Exists(OpeningManager.OnOpenFile) && Path.GetExtension(OpeningManager.OnOpenFile) == ".riq")
{
input = OpeningManager.OnOpenFile;
fromCmd = true;

View file

@ -6,8 +6,7 @@ using UnityEngine;
using Starpelly;
using Jukebox;
using Jukebox.Legacy;
using Newtonsoft.Json;
using HeavenStudio.Util;
using HeavenStudio.Games;
using HeavenStudio.Common;
@ -47,6 +46,9 @@ namespace HeavenStudio
[NonSerialized] public RiqEntity currentSection, nextSection;
public double sectionProgress { get; private set; }
bool AudioLoadDone;
bool ChartLoadError;
public event Action<double> onBeatChanged;
public event Action<RiqEntity> onSectionChange;
@ -105,6 +107,8 @@ namespace HeavenStudio
public void Init(bool preLoaded = false)
{
AudioLoadDone = false;
ChartLoadError = false;
currentPreEvent= 0;
currentPreSwitch = 0;
currentPreSequence = 0;
@ -142,6 +146,7 @@ namespace HeavenStudio
}
else
{
RiqFileHandler.ClearCache();
NewRemix();
}
@ -165,6 +170,7 @@ namespace HeavenStudio
public void NewRemix()
{
AudioLoadDone = false;
Beatmap = new("1", "HeavenStudio");
Beatmap.data.properties = Minigames.propertiesModel;
Beatmap.AddNewTempoChange(0, 120f);
@ -172,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)
{
@ -192,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();
@ -214,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)
@ -237,6 +253,15 @@ namespace HeavenStudio
{
SetGame("noGame");
}
if (editor)
{
Debug.Log(Beatmap.data.riqOrigin);
if (Beatmap.data.riqOrigin != "HeavenStudio")
{
GlobalGameManager.ShowErrorMessage("Warning", "This chart was made for another game,\nand thus may not be playable in Heaven Studio.\n<color=\"yellow\">You may be able to edit this chart in Heaven Studio to be used in its original game.</color>\n\n<alpha=#AA>Chart Origin: " + Beatmap.data.riqOrigin.DisplayName());
}
}
}
public void ScoreInputAccuracy(double accuracy, bool late, double time, double weight = 1, bool doDisplay = true)
@ -551,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();

View file

@ -386,9 +386,7 @@ namespace HeavenStudio.Editor
{
var extensions = new[]
{
new ExtensionFilter("All Supported Files ", new string[] { "riq", "tengoku", "rhmania" }),
new ExtensionFilter("Heaven Studio Remix File ", new string[] { "riq" }),
new ExtensionFilter("Legacy Heaven Studio Remix ", new string[] { "tengoku", "rhmania" })
};
StandaloneFileBrowser.OpenFilePanelAsync("Open Remix", "", extensions, false, (string[] paths) =>

View file

@ -170,15 +170,13 @@ namespace HeavenStudio
if (item.Key == "track")
continue;
if (item.Value == null)
{
e[item.Key] = 0;
}
continue;
var value = item.Value;
if (value.GetType() == typeof(long))
value = new EntityTypes.Integer(int.MinValue, int.MaxValue, (int)value);
else if (value.GetType() == typeof(double))
value = new EntityTypes.Float(float.NegativeInfinity, float.PositiveInfinity, (float)value);
parameters.Add(new Minigames.Param(item.Key, value, item.Key, "[inferred from remix.json]"));
parameters.Add(new Minigames.Param(item.Key, value, item.Key.DisplayName(), "[inferred from remix.json]"));
}
action = new Minigames.GameAction(actionName, actionName.DisplayName(), e.length, true, parameters);
game.actions.Add(action);

View file

@ -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;

View file

@ -7,7 +7,7 @@
"dependencies": {
"com.unity.nuget.newtonsoft-json": "3.2.1"
},
"hash": "619442ba26163fb6a00dd50ba52e2fdeaea33e37"
"hash": "f1813255c1d322b6fe207de4361bbf288f9cda03"
},
"com.unity.2d.sprite": {
"version": "1.0.0",