/// <summary> /// Loads the default compendium. /// </summary> public void LoadDefaultCompendium() { XMLImporter importer = DependencyResolver.Resolve <XMLImporter>(); importer.LoadManifestResourceXML("default_compendium.xml"); _backgrounds = importer.ReadBackgrounds(); _classes = importer.ReadClasses(); _conditions = importer.ReadConditions(); _feats = importer.ReadFeats(); _items = importer.ReadItems(); _monsters = importer.ReadMonsters(); _races = importer.ReadRaces(); _spells = importer.ReadSpells(); _languages = importer.LanguagesFound; }
private void RestoreDefaultCompendium() { string message = "IMPORTANT!" + Environment.NewLine + Environment.NewLine + "This cannot be undone!" + Environment.NewLine + Environment.NewLine + "Restoring your default compendium will remove any custom or imported entries to your compendium. " + "Characters, Encounters, and any custom content they contain will not be removed but may be replaced." + Environment.NewLine + Environment.NewLine + "Are you sure you want to restore the default compendium?"; bool?result = _dialogService.ShowConfirmationDialog("Restore Default Compendium", message, "Yes", "No", null); if (result == true) { XMLImporter importer = new XMLImporter(_stringService); importer.LoadManifestResourceXML("default_compendium.xml"); List <BackgroundModel> backgrounds = importer.ReadBackgrounds(); List <ClassModel> classes = importer.ReadClasses(); List <ConditionModel> conditions = importer.ReadConditions(); List <FeatModel> feats = importer.ReadFeats(); List <ItemModel> items = importer.ReadItems(); List <MonsterModel> monsters = importer.ReadMonsters(); List <RaceModel> races = importer.ReadRaces(); List <SpellModel> spells = importer.ReadSpells(); List <LanguageModel> languages = importer.LanguagesFound; foreach (CharacterModel character in _compendium.Characters) { if (character.Background != null && !backgrounds.Any(x => x.Name.Equals(character.Background.Name, StringComparison.CurrentCultureIgnoreCase))) { backgrounds.Add(character.Background); } if (character.Race != null && !races.Any(x => x.Name.Equals(character.Race.Name, StringComparison.CurrentCultureIgnoreCase))) { races.Add(character.Race); } foreach (LevelModel level in character.Levels) { if (level.Class != null) { ClassModel defaultClass = classes.FirstOrDefault(x => x.Name.Equals(level.Class.Name, StringComparison.CurrentCultureIgnoreCase)); if (defaultClass == null) { classes.Add(level.Class); } else { if (defaultClass.AutoLevels.Count != level.Class.AutoLevels.Count) { classes.Add(level.Class); } else { for (int i = 0; i < level.Class.AutoLevels.Count; ++i) { if (level.Class.AutoLevels[i].Features.Count != defaultClass.AutoLevels[i].Features.Count) { classes.Add(level.Class); break; } } } } } foreach (FeatModel feat in level.Feats) { if (!feats.Any(x => x.Name.Equals(feat.Name, StringComparison.CurrentCultureIgnoreCase))) { feats.Add(feat); } } } foreach (LanguageModel language in character.Languages) { if (!languages.Any(x => x.Name.Equals(language.Name, StringComparison.CurrentCultureIgnoreCase))) { languages.Add(language); } } foreach (AppliedConditionModel appliedCondition in character.Conditions) { if (appliedCondition.ConditionModel != null && !conditions.Any(x => x.Name.Equals(appliedCondition.ConditionModel.Name, StringComparison.CurrentCultureIgnoreCase))) { conditions.Add(appliedCondition.ConditionModel); } } foreach (CompanionModel companion in character.Companions) { if (companion.MonsterModel != null && !monsters.Any(x => x.Name.Equals(companion.MonsterModel.Name, StringComparison.CurrentCultureIgnoreCase))) { monsters.Add(companion.MonsterModel); } } foreach (BagModel bag in character.Bags) { foreach (EquipmentModel equipment in bag.Equipment) { if (equipment.Item != null && !items.Any(x => x.Name.Equals(equipment.Item.Name, StringComparison.CurrentCultureIgnoreCase))) { items.Add(equipment.Item); } } } foreach (SpellbookModel spellbook in character.Spellbooks) { foreach (SpellbookEntryModel spellbookEntry in spellbook.Spells) { if (spellbookEntry.Spell != null && !spells.Any(x => x.Name.Equals(spellbookEntry.Spell.Name, StringComparison.CurrentCultureIgnoreCase))) { spells.Add(spellbookEntry.Spell); } } } } foreach (EncounterModel encounter in _compendium.Encounters) { foreach (EncounterMonsterModel encounterMonster in encounter.Creatures.Where(x => x is EncounterMonsterModel)) { if (encounterMonster.MonsterModel != null && !monsters.Any(x => x.Name.Equals(encounterMonster.MonsterModel.Name, StringComparison.CurrentCultureIgnoreCase))) { monsters.Add(encounterMonster.MonsterModel); } } } _compendium.SetCompendium(backgrounds, classes, conditions, feats, items, languages, monsters, races, spells); _compendium.SaveBackgrounds(); _compendium.SaveClasses(); _compendium.SaveConditions(); _compendium.SaveFeats(); _compendium.SaveItems(); _compendium.SaveMonsters(); _compendium.SaveRaces(); _compendium.SaveSpells(); _compendium.SaveLanguages(); _compendium.NotifyImportComplete(); base.OnAccept(); } }