예제 #1
0
        public static void MigrateDatabase(IModHelper helper, string fromPath, ref StoredGiftDatabase newDb)
        {
            GiftDatabaseModel fromDatabaseModel = helper.ReadJsonFile <GiftDatabaseModel>(fromPath);

            if (newDb.Database.Entries.Keys.Count == 0)
            {
                newDb.Database = fromDatabaseModel;
            }
            else
            {
                // Merge
                // TODO: Clean this up a bit.
                foreach (string npcName in fromDatabaseModel.Entries.Keys)
                {
                    CharacterTasteModel fromTasteModel = fromDatabaseModel.Entries[npcName];
                    if (!newDb.Database.Entries.ContainsKey(npcName))
                    {
                        newDb.Database.Entries.Add(npcName, fromTasteModel);
                        continue;
                    }

                    Dictionary <GiftTaste, List <GiftModel> > newEntries  = newDb.Database.Entries[npcName].Entries;
                    Dictionary <GiftTaste, List <GiftModel> > fromEntries = fromTasteModel.Entries;
                    foreach (GiftTaste taste in fromEntries.Keys)
                    {
                        if (!newEntries.ContainsKey(taste))
                        {
                            newEntries.Add(taste, fromEntries[taste]);
                            continue;
                        }

                        newEntries[taste] = fromEntries[taste]
                                            .Concat(newEntries[taste])
                                            .DistinctBy(gift => gift.ItemId)
                                            .ToList();
                    }
                }
            }
            newDb.Write();
        }
예제 #2
0
 public GiftDatabase(IModHelper helper, GiftDatabaseModel database)
 {
     this.Helper   = helper;
     this.Database = database;
 }
예제 #3
0
 public GiftDatabase(IModHelper helper)
 {
     this.Helper   = helper;
     this.Database = new GiftDatabaseModel();
 }