public static List<ModelDB> LoadData(SaveInfo save = null) { if (save != null) { SetCurrentSave(save); } var _conn = new SQLiteConnection(Conf.savePath + currentSave.Filename, SQLiteOpenFlags.ReadWrite); var loadedData = new List<ModelDB>(); var subclasses = GameState.GetGeneratedModelTypes(); foreach(var c in subclasses) { var instance = Activator.CreateInstance(c); try { _conn.Table(instance).ToList(); var query = _conn.GetType().GetMethod("Table", new Type[] { }) .MakeGenericMethod(c) .Invoke(_conn, null) as IEnumerable; foreach (var item in query) { loadedData.Add((ModelDB)item); } } catch (SQLiteException) { // it's gonna complain about missing tables. ignore them } } return loadedData; }
public static void SaveData(List<ModelDB> data, SaveInfo save = null) { if (save != null) { SetCurrentSave(save); } var _conn = new SQLiteConnection(Conf.savePath + currentSave.Filename, SQLiteOpenFlags.ReadWrite); // remember types we already created tables for var types = new List<Type>(); foreach(ModelDB v in data) { var type = v.GetType(); if (!types.Contains(type)) { _conn.CreateTable(v.GetType()); types.Add(type); } _conn.InsertOrReplace(v); } }
public static void SetCurrentSave(SaveInfo save) { currentSave = save; }