コード例 #1
0
        public static async Task <Dictionary <string, IDatabaseEntry> > GetBackup <T>(this IGameDatabase db) where T : IDatabaseEntry
        {
            var entryNames = await db.GetAll <T>();

            var dataTasks = new List <Task <T> >();

            foreach (var entryName in entryNames)
            {
                dataTasks.Add(db.GetData <T>(entryName));
            }

            await Task.WhenAll(dataTasks);

            var allData = dataTasks.Select(x =>
            {
                var value = x.Result;
                return(new KeyValuePair <string, IDatabaseEntry>(value.DatabaseIndex, value));
            }).ToDictionary(x => x.Key, x => x.Value);

            return(allData);
        }
コード例 #2
0
        public static async Task <Dictionary <string, Dictionary <string, IDatabaseEntry> > > GetBackup(this IGameDatabase db)
        {
            var mainCollection = new Dictionary <string, Dictionary <string, IDatabaseEntry> >
            {
                [nameof(EntryListData)] = new Dictionary <string, IDatabaseEntry>(),
                [nameof(RoundData)]     = new Dictionary <string, IDatabaseEntry>(),
                [nameof(MatchData)]     = new Dictionary <string, IDatabaseEntry>(),
                [nameof(LevelData)]     = new Dictionary <string, IDatabaseEntry>(),
                [nameof(TagData)]       = new Dictionary <string, IDatabaseEntry>(),
                [nameof(PlayerData)]    = new Dictionary <string, IDatabaseEntry>(),
            };

            foreach (var entryName in await db.GetAll <EntryListData>())
            {
                mainCollection [nameof(EntryListData)] [entryName] = await db.GetData <EntryListData>(entryName);
            }

            foreach (var entryName in await db.GetAll <RoundData>())
            {
                mainCollection [nameof(RoundData)] [entryName] = await db.GetData <RoundData>(entryName);
            }

            foreach (var entryName in await db.GetAll <MatchData>())
            {
                mainCollection [nameof(MatchData)] [entryName] = await db.GetData <MatchData>(entryName);
            }

            foreach (var entryName in await db.GetAll <LevelData>())
            {
                mainCollection [nameof(LevelData)] [entryName] = await db.GetData <LevelData>(entryName);
            }

            foreach (var entryName in await db.GetAll <TagData>())
            {
                mainCollection [nameof(TagData)] [entryName] = await db.GetData <TagData>(entryName);
            }

            foreach (var entryName in await db.GetAll <PlayerData>())
            {
                mainCollection [nameof(PlayerData)] [entryName] = await db.GetData <PlayerData>(entryName);
            }

            return(mainCollection);
        }
コード例 #3
0
 /// <summary>
 /// Ideally these two should not be used whatsoever, please deprecate after moving the code over
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="db"></param>
 public static async Task <List <T> > GetAllData <T>(this IGameDatabase db) where T : IDatabaseEntry
 {
     return(await db.GetAllData <T>(await db.GetAll <T>()));
 }
コード例 #4
0
 public static async Task IterateOverAll <T>(this IGameDatabase db, Func <T, Task <bool> > callback) where T : IDatabaseEntry
 {
     await db.IterateOver(callback, await db.GetAll <T>());
 }