using UnityEngine; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Mono.Data.Sqlite; using System.IO; public class UmaDatabaseController { private static UmaDatabaseController instance; /// /// Database Loader instance /// public static UmaDatabaseController Instance { get { if (instance == null) { instance = new UmaDatabaseController(); } return instance; } } /// /// https://prd-storage-umamusume.akamaized.net/dl/resources/ /// public static string ServerUrl = "https://prd-storage-umamusume.akamaized.net/dl/resources/"; /// /// Android/assetbundles/ /// public static string AssetUrl = "Windows/assetbundles/"; /// /// 3d/chara/body/ /// public static string BodyPath = "3d/chara/body/"; /// /// 3d/chara/head/ /// public static string HeadPath = "3d/chara/head/"; /// /// 3d/motion/ /// public static string MotionPath = "3d/motion/"; public IEnumerable MetaEntries; public IEnumerable CharaData; /// /// Meta Database Connection /// private SqliteConnection metaDb; /// /// Master Database Connection /// private SqliteConnection masterDb; /// /// Loads the file database /// public UmaDatabaseController() { metaDb = new SqliteConnection($@"Data Source={Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "Low"}\Cygames\umamusume\meta;"); metaDb.Open(); MetaEntries = ReadMeta(metaDb); Debug.Log("1"); masterDb = new SqliteConnection($@"Data Source={Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "Low"}\Cygames\umamusume\master\master.mdb;"); masterDb.Open(); CharaData = ReadMaster(masterDb); Debug.Log("2"); } static IEnumerable ReadMeta(SqliteConnection conn) { List entries = new List(); SqliteCommand sqlite_cmd = conn.CreateCommand(); sqlite_cmd.CommandText = "SELECT m,n,h,c,d FROM a"; SqliteDataReader sqlite_datareader = sqlite_cmd.ExecuteReader(); while (sqlite_datareader.Read()) { try { UmaDatabaseEntry entry = new UmaDatabaseEntry() { Type = (UmaFileType)Enum.Parse(typeof(UmaFileType), sqlite_datareader["m"] as String), Name = sqlite_datareader["n"] as String, Url = sqlite_datareader["h"] as String, Checksum = sqlite_datareader["c"].ToString(), Prerequisites = sqlite_datareader["d"] as String }; entries.Add(entry); } catch(Exception e) { Debug.LogError("Error caught: " + e); } } return entries; //conn.Close(); } static IEnumerable ReadMaster(SqliteConnection conn) { SqliteCommand sqlite_cmd = conn.CreateCommand(); sqlite_cmd.CommandText = "SELECT id,tail_model_id FROM chara_data"; SqliteDataReader sqlite_datareader = sqlite_cmd.ExecuteReader(); while (sqlite_datareader.Read()) { UmaCharaData entry = new UmaCharaData() { id = sqlite_datareader.GetInt32(0), tail_model_id = sqlite_datareader.GetInt32(1).ToString(), }; yield return entry; } //conn.Close(); } }