Beispiel #1
0
        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;
        }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
 public static void SetCurrentSave(SaveInfo save)
 {
     currentSave = save;
 }