using Newtonsoft.Json.Linq; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using UnityEngine; using UnityEngine.UI; public class UmaViewerMain : MonoBehaviour { public static UmaViewerMain Instance; private UmaViewerUI UI => UmaViewerUI.Instance; private UmaViewerBuilder Builder => UmaViewerBuilder.Instance; public JArray UmaCharaData; public JArray UmaLiveData; public List Characters = new List(); public List Lives = new List(); public List AbList = new List(); [Header("Asset Memory")] public bool ShadersLoaded = false; public Dictionary LoadedBundles = new Dictionary(); enum Test { a,b,c,d } private void Awake() { Instance = this; Application.targetFrameRate = -1; AbList = UmaDatabaseController.Instance.MetaEntries.ToList(); } IEnumerator Start() { yield return UmaViewerDownload.DownloadText("https://www.tracenacademy.com/api/BasicCharaDataInfo", txt => { UmaCharaData = JArray.Parse(txt); foreach (var item in UmaCharaData) { //Debug.Log(item); if (!Characters.Where(c => c.Id == (int)item["charaId"]).Any()) { Characters.Add(new CharaEntry() { Name = (string)item["charaNameEnglish"], Id = (int)item["charaId"] }); } } UI.LoadModelPanels(); UI.LoadMiniModelPanels(); UI.LoadPropPanel(); UI.LoadMapPanel(); }); yield return UmaViewerDownload.DownloadText("https://www.tracenacademy.com/api/BasicLiveDataInfo", txt => { UmaLiveData = JArray.Parse(txt); var asset = AbList.FirstOrDefault(a => a.Name.Equals("livesettings")); if(asset != null) { string filePath = UmaDatabaseController.GetABPath(asset); if (File.Exists(filePath)) { AssetBundle bundle = AssetBundle.LoadFromFile(filePath); foreach (var item in UmaLiveData) { if (!Lives.Where(c => c.MusicId == (int)item["musicId"]).Any()) { if (bundle.Contains((string)item["musicId"])) { TextAsset liveData = bundle.LoadAsset((string)item["musicId"]); Lives.Add(new LiveEntry(liveData.text) { MusicId = (int)item["musicId"], songName = (string)item["songName"] }); } } } UI.LoadLivePanels(); } } }); } public void OpenUrl(string url) { Application.OpenURL(url); } [System.Serializable] public class CharaEntry { public string Name; public int Id; } [System.Serializable] public class LiveEntry { public int MusicId; public string songName; public string BackGroundId; public List LiveSettings = new List(); public LiveEntry(string data) { string[] lines = data.Split("\n"[0]); for (int i = 1; i < lines.Length; i++) { LiveSettings.Add(lines[i].Split(',')); } BackGroundId = LiveSettings[1][2]; } } }