using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame.Beatmap; using Sirenix.OdinInspector; using UniRx; using UnityEngine; namespace Ichni { public class ProjectLoader { public static readonly ES3Settings SaveSettings = new ES3Settings { compressionType = ES3.CompressionType.None, encryptionType = ES3.EncryptionType.None, format = ES3.Format.JSON, location = ES3.Location.Resources }; private static readonly ES3Settings LoadSettings = new ES3Settings { compressionType = ES3.CompressionType.Gzip, encryptionType = ES3.EncryptionType.AES, encryptionPassword = "Soullies515", format = ES3.Format.JSON, location = ES3.Location.Resources }; [Button("TestLoad")] public void TestLoad() { ThemeBundleManager.instance.LoadThemeBundles(new List(){"departure_to_multiverse"}); Observable.EveryUpdate().Where(_ => ThemeBundleManager.instance.waitingBundleAmount.Value == 0).First().Subscribe(_ => { Load(InformationTransistor.instance.chapterName, InformationTransistor.instance.songName, InformationTransistor.instance.difficultyName); }); Observable.EveryUpdate() .Where(_ => ThemeBundleManager.instance.waitingBundleAmount.Value == 0 && (GameManager.instance.beatmapContainer.matchedBM as BeatmapContainer_BM).remainingElementAmount.Value == 0) .First().Subscribe(_ => { GameManager.instance.audioManager.songPlayer.PlaySong(); }); } public void Load(string chapterName, string musicName, string difficultyName) { string beatMapFolderPath = "Beatmaps/" + chapterName + "/" + musicName + "/" + difficultyName; LoadProjectInfo(beatMapFolderPath); LoadSongInfo(beatMapFolderPath); LoadCommandScripts(beatMapFolderPath); LoadBeatMap(beatMapFolderPath); } private void LoadProjectInfo(string beatMapFolderPath) { string projectInfoPath = beatMapFolderPath + "/ProjectInfo.bytes"; ES3.Load("ProjectInformation", projectInfoPath, LoadSettings).ExecuteBM(); } private void LoadSongInfo(string beatMapFolderPath) { string songInfoPath = beatMapFolderPath + "/SongInfo.bytes"; ES3.Load("SongInformation",songInfoPath, LoadSettings).ExecuteBM(); } private void LoadBeatMap(string beatMapFolderPath) { string beatmapPath = beatMapFolderPath + "/Beatmap.json"; Debug.Log(ES3.FileExists(beatmapPath, SaveSettings)); ES3.Load("Beatmap", beatmapPath, SaveSettings).ExecuteBM(); } private void LoadCommandScripts(string beatMapFolderPath) { string commandScriptsPath = beatMapFolderPath + "/CommandScripts.bytes"; ES3.Load("CommandScripts", commandScriptsPath, LoadSettings).ExecuteBM(); } } }