using System; using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame.Beatmap; using Sirenix.OdinInspector; using UniRx; using UnityEngine; namespace Ichni { public class ProjectLoader { public float loadPercent; 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() { string beatMapFolderPath = "Beatmaps/" + InformationTransistor.instance.chapterName + "/" + InformationTransistor.instance.songName + "/" + InformationTransistor.instance.difficultyName; LoadProjectInfo(beatMapFolderPath); LoadSongInfo(beatMapFolderPath); LoadCommandScripts(beatMapFolderPath); ThemeBundleManager.instance.LoadThemeBundles(GameManager.instance.projectInformation.selectedThemeBundleList); loadPercent = 0f; Observable.EveryUpdate() .Where(_ => ThemeBundleManager.instance.waitingBundleAmount.Value == 0) .First() .Subscribe(_ => { LoadBeatMap(beatMapFolderPath); }); Observable.EveryUpdate() .Where(_ => ThemeBundleManager.instance.waitingBundleAmount.Value == 0 && (GameManager.instance.beatmapContainer.matchedBM as BeatmapContainer_BM).remainingElementAmount.Value == 0) .First() .Subscribe(_ => { Observable.Timer(TimeSpan.FromSeconds(2)).First().Subscribe(_ => { GameManager.instance.audioManager.isStarting = false; }); }); Observable.EveryUpdate() .Where(_ => !GameManager.instance.audioManager.isStarting) .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.bytes"; ES3.Load("Beatmap", beatmapPath, LoadSettings).ExecuteBM(); } private void LoadCommandScripts(string beatMapFolderPath) { string commandScriptsPath = beatMapFolderPath + "/CommandScripts.bytes"; ES3.Load("CommandScripts", commandScriptsPath, LoadSettings).ExecuteBM(); } } }