/// <summary> /// Creates an instance of <see cref="LocationsViewModel"/> /// </summary> public LocationsViewModel(Compendium compendium, LocationSearchService locationSearchService, LocationSearchInput locationSearchInput, StringService stringService, DialogService dialogService, XMLImporter xmlImporter, DocumentService documentService, DataManager dataManager) { _compendium = compendium; _locationSearchService = locationSearchService; _locationSearchInput = locationSearchInput; _stringService = stringService; _dialogService = dialogService; _xmlImporter = xmlImporter; _documentService = documentService; _dataManager = dataManager; _selectLocationCommand = new RelayCommand(obj => true, obj => SelectLocation(obj as ListItemViewModel <LocationModel>)); _editLocationCommand = new RelayCommand(obj => true, obj => EditLocation(obj as LocationViewModel)); _exportLocationCommand = new RelayCommand(obj => true, obj => ExportLocation(obj as LocationViewModel)); _cancelEditLocationCommand = new RelayCommand(obj => true, obj => CancelEditLocation()); _saveEditLocationCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditLocation()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedLocation != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedLocation != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); Search(); }
/// <summary> /// Creates an instance of <see cref="BackgroundsViewModel"/> /// </summary> public BackgroundsViewModel(Compendium compendium, BackgroundSearchService backgroundSearchService, BackgroundSearchInput backgroundSearchInput, StringService stringService, DialogService dialogService, XMLImporter xmlImporter, XMLExporter xmlExporter) { _compendium = compendium; _backgroundSearchService = backgroundSearchService; _backgroundSearchInput = backgroundSearchInput; _stringService = stringService; _dialogService = dialogService; _xmlImporter = xmlImporter; _xmlExporter = xmlExporter; _selectBackgroundCommand = new RelayCommand(obj => true, obj => SelectBackground(obj as BackgroundListItemViewModel)); _editBackgroundCommand = new RelayCommand(obj => true, obj => EditBackground(obj as BackgroundViewModel)); _exportBackgroundCommand = new RelayCommand(obj => true, obj => ExportBackground(obj as BackgroundViewModel)); _cancelEditBackgroundCommand = new RelayCommand(obj => true, obj => CancelEditBackground()); _saveEditBackgroundCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditBackground()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedBackground != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedBackground != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); Search(); }
/// <summary> /// Creates an instance of <see cref="EncountersViewModel"/> /// </summary> public EncountersViewModel(Compendium compendium, EncounterSearchService encounterSearchService, EncounterSearchInput encounterSearchInput, StringService stringService, DialogService dialogService, XMLImporter xmlImporter, DocumentService documentService, DataManager dataManager) { _compendium = compendium; _encounterSearchService = encounterSearchService; _encounterSearchInput = encounterSearchInput; _stringService = stringService; _dialogService = dialogService; _xmlImporter = xmlImporter; _documentService = documentService; _dataManager = dataManager; _selectEncounterCommand = new RelayCommand(obj => true, obj => SelectEncounter(obj as EncounterListItemViewModel)); _editEncounterCommand = new RelayCommand(obj => true, obj => EditEncounter(obj as EncounterViewModel)); _exportEncounterCommand = new RelayCommand(obj => true, obj => ExportEncounter(obj as EncounterViewModel)); _cancelEditEncounterCommand = new RelayCommand(obj => true, obj => CancelEditEncounter()); _saveEditEncounterCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditEncounter()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedEncounter != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedEncounter != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); _compendium.CharacterChanged += _compendium_CharacterChanged; _compendium.EncounterChanged += _compendium_EncounterChanged; Search(); }
/// <summary> /// Creates an instance of <see cref="TablesViewModel"/> /// </summary> public TablesViewModel(Compendium compendium, TableSearchService tableSearchService, TableSearchInput tableSearchInput, StringService stringService, DialogService dialogService, XMLImporter xmlImporter, DocumentService documentService, DataManager dataManager) { _compendium = compendium; _tableSearchService = tableSearchService; _tableSearchInput = tableSearchInput; _stringService = stringService; _dialogService = dialogService; _xmlImporter = xmlImporter; _documentService = documentService; _dataManager = dataManager; _selectTableCommand = new RelayCommand(obj => true, obj => SelectTable(obj as ListItemViewModel <RandomTableModel>)); _editTableCommand = new RelayCommand(obj => true, obj => EditTable(obj as RandomTableViewModel)); _exportTableCommand = new RelayCommand(obj => true, obj => ExportTable(obj as RandomTableViewModel)); _cancelEditTableCommand = new RelayCommand(obj => true, obj => CancelEditTable()); _saveEditTableCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditTable()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedTable != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedTable != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); Search(); }
/// <summary> /// Creates an instance of <see cref="NPCsViewModel"/> /// </summary> public NPCsViewModel(Compendium compendium, NPCSearchService npcSearchService, NPCSearchInput npcSearchInput, StringService stringService, DialogService dialogService, XMLImporter xmlImporter, DocumentService documentService, DataManager dataManager) { _compendium = compendium; _npcSearchService = npcSearchService; _npcSearchInput = npcSearchInput; _stringService = stringService; _dialogService = dialogService; _xmlImporter = xmlImporter; _documentService = documentService; _dataManager = dataManager; _selectNPCCommand = new RelayCommand(obj => true, obj => SelectNPC(obj as ListItemViewModel <NPCModel>)); _editNPCCommand = new RelayCommand(obj => true, obj => EditNPC(obj as NPCViewModel)); _exportNPCCommand = new RelayCommand(obj => true, obj => ExportNPC(obj as NPCViewModel)); _cancelEditNPCCommand = new RelayCommand(obj => true, obj => CancelEditNPC()); _saveEditNPCCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditNPC()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedNPC != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedNPC != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); Search(); }
/// <summary> /// Creates an instance of <see cref="FeatsViewModel"/> /// </summary> public FeatsViewModel(Compendium compendium, FeatSearchService classSearchService, FeatSearchInput featSearchInput, StringService stringService, DialogService dialogService, XMLImporter xmlImporter, XMLExporter xmlExporter) { _compendium = compendium; _featSearchService = classSearchService; _featSearchInput = featSearchInput; _stringService = stringService; _dialogService = dialogService; _xmlImporter = xmlImporter; _xmlExporter = xmlExporter; _selectFeatCommand = new RelayCommand(obj => true, obj => SelectFeat(obj as FeatListItemViewModel)); _editFeatCommand = new RelayCommand(obj => true, obj => EditFeat(obj as FeatViewModel)); _exportFeatCommand = new RelayCommand(obj => true, obj => ExportFeat(obj as FeatViewModel)); _cancelEditFeatCommand = new RelayCommand(obj => true, obj => CancelEditFeat()); _saveEditFeatCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditFeat()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedFeat != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedFeat != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); Search(); }
/// <summary> /// Creates an instance of <see cref="ItemsViewModel"/> /// </summary> public ItemsViewModel(Compendium compendium, ItemSearchService itemSearchService, ItemSearchInput itemSearchInput, StringService stringService, DialogService dialogService, XMLImporter xmlImporter, XMLExporter xmlExporter, DocumentService documentService) { _compendium = compendium; _itemSearchService = itemSearchService; _itemSearchInput = itemSearchInput; _stringService = stringService; _dialogService = dialogService; _xmlImporter = xmlImporter; _xmlExporter = xmlExporter; _documentService = documentService; _selectItemCommand = new RelayCommand(obj => true, obj => SelectItem(obj as ItemListItemViewModel)); _editItemCommand = new RelayCommand(obj => true, obj => EditItem(obj as ItemViewModel)); _exportItemCommand = new RelayCommand(obj => true, obj => ExportItem(obj as ItemViewModel)); _cancelEditItemCommand = new RelayCommand(obj => true, obj => CancelEditItem()); _saveEditItemCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditItem()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedItem != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedItem != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); Search(); }
private void ReadXMLFile(string fileLocation) { XMLImporter xmlImporter = new XMLImporter(_stringService); xmlImporter.LoadFileXML(fileLocation); _backgrounds = xmlImporter.ReadBackgrounds(); _classes = xmlImporter.ReadClasses(); _conditions = xmlImporter.ReadConditions(); _feats = xmlImporter.ReadFeats(); _items = xmlImporter.ReadItems(); _monsters = xmlImporter.ReadMonsters(); _races = xmlImporter.ReadRaces(); _spells = xmlImporter.ReadSpells(); _languages = xmlImporter.LanguagesFound; OnPropertyChanged(nameof(BackgroundCount)); OnPropertyChanged(nameof(ClassCount)); OnPropertyChanged(nameof(ConditionCount)); OnPropertyChanged(nameof(FeatCount)); OnPropertyChanged(nameof(ItemCount)); OnPropertyChanged(nameof(LanguageCount)); OnPropertyChanged(nameof(MonsterCount)); OnPropertyChanged(nameof(RaceCount)); OnPropertyChanged(nameof(SpellCount)); }
/// <summary> /// Creates an instance of <see cref="DataManager"/> /// </summary> public DataManager(XMLImporter xmlImporter, XMLExporter xmlExporter) { _xmlImporter = xmlImporter; _xmlExporter = xmlExporter; _saveDataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Crit Compendium"); _lastVersionLaunched = Assembly.GetExecutingAssembly().GetName().Version.ToString(); _runCount = 0; CheckFirstLaunch(); }
static void Main(string[] args) { IImporter importer; string command; string argument; if (args.Length != 2) { MessageAndExit("Špatný počet parametrů."); } command = args[0]; argument = args[1]; switch (command) { case "import": string extension = Path.GetExtension(argument).ToLower(); if (extension == ".xml") { //primitive form of dependency injection importer = new XMLImporter(new DataConnectorDB()); importer.Import(argument); } else if (extension == ".xls" || extension == ".xlsx") { importer = new ExcelImporter(new DataConnectorDB()); importer.Import(argument); } else { MessageAndExit("Špatný formát souboru (koncovka)."); } break; case "list": DateTime date; bool isDate = DateTime.TryParse(argument, out date); if (!isDate) { MessageAndExit("Špatný formát data (má být RRRR-MM-DD)."); } new DataConnectorDB().OutputList(date); break; default: break; } Console.WriteLine("Hotovo"); Console.WriteLine("Press Any Key To Continue"); Console.ReadLine(); }
private void ReadEncounterArchive(string fileLocation) { XMLImporter xmlImporter = new XMLImporter(_stringService); using (FileStream fileStream = File.Open(fileLocation, FileMode.Open)) { using (ZipArchive archive = new ZipArchive(fileStream, ZipArchiveMode.Read)) { ZipArchiveEntry conditionsEntry = archive.GetEntry("resources/conditions.xml"); using (StreamReader reader = new StreamReader(conditionsEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _conditions = xmlImporter.ReadConditions(xml); } ZipArchiveEntry monstersEntry = archive.GetEntry("resources/monsters.xml"); using (StreamReader reader = new StreamReader(monstersEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _monsters = xmlImporter.ReadMonsters(xml); } foreach (ZipArchiveEntry characterEntry in archive.Entries.Where(x => x.Name.Contains(".ccca"))) { ReadCharacterArchive(characterEntry.Open()); } ZipArchiveEntry encounterEntry = archive.GetEntry("encounter.cce"); using (MemoryStream memoryStream = new MemoryStream()) { using (Stream stream = encounterEntry.Open()) { stream.CopyTo(memoryStream); _encounters.Add(memoryStream.ToArray()); } } } } OnPropertyChanged(nameof(CharacterCount)); OnPropertyChanged(nameof(EncounterCount)); OnPropertyChanged(nameof(BackgroundCount)); OnPropertyChanged(nameof(ClassCount)); OnPropertyChanged(nameof(ConditionCount)); OnPropertyChanged(nameof(FeatCount)); OnPropertyChanged(nameof(ItemCount)); OnPropertyChanged(nameof(LanguageCount)); OnPropertyChanged(nameof(MonsterCount)); OnPropertyChanged(nameof(RaceCount)); OnPropertyChanged(nameof(SpellCount)); }
private void btnImportXML_Click(object sender, EventArgs e) { this.openFileDialog1.Filter = "XML file(*.xml)|*.xml"; this.openFileDialog1.FileName = "xmlfile.xml"; if (this.openFileDialog1.ShowDialog(this) != DialogResult.OK) { return; } string path = this.openFileDialog1.FileName; try { this.xmlImporter = new XMLImporter(); this.xmlImporter.LoadXMLFile(path); this.dataGridViewXML.ColumnCount = this.xmlImporter.XMLDocumentNodes[0].ElementProperties.Count + 2; this.dataGridViewXML.Columns[0].Name = "Element type"; this.dataGridViewXML.Columns[1].Name = "Element InnerText"; for (int i = 0; i < this.xmlImporter.XMLDocumentNodes[0].ElementProperties.Keys.Count; i++) { this.dataGridViewXML.Columns[i + 2].Name = this.xmlImporter.XMLDocumentNodes[0].ElementProperties.Keys[i]; } foreach (var xmlDocumentNode in this.xmlImporter.XMLDocumentNodes) { DataGridViewRow row = new DataGridViewRow(); row.Cells.Add(new DataGridViewTextBoxCell { Value = xmlDocumentNode.ElementType }); row.Cells.Add(new DataGridViewTextBoxCell { Value = xmlDocumentNode.ElementValue }); foreach (string attribute in xmlDocumentNode.ElementProperties.AllKeys) { DataGridViewCell cell = new DataGridViewTextBoxCell(); cell.Value = xmlDocumentNode.ElementProperties[attribute]; row.Cells.Add(cell); } this.dataGridViewXML.Rows.Add(row); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
static void Main(string[] args) { Console.WriteLine("Select your option"); Console.WriteLine("1: Read from XML"); Console.WriteLine("2: Read from JSON"); var key = Console.ReadKey(false); IEnumerable <Horse> horses = new List <Horse>(); IImporter importer; while (key.Key == ConsoleKey.D1 || key.Key == ConsoleKey.D2) { if (key.Key == ConsoleKey.D1) { importer = new XMLImporter(); horses = importer.Import(); break; } else { importer = new JsonImporter(); horses = importer.Import(); break; } } //Console.WriteLine("Press any key to read from XML file and display horses"); Console.ReadKey(); Console.WriteLine("Now printing horses..."); //Ascending order of horses by price horses = horses.OrderBy(h => h.Price); Console.WriteLine("-----------------------------------------------"); Console.WriteLine("Ordering horses by ascending order of their prices."); Console.WriteLine("Horse Name | Price"); foreach (var horse in horses) { Console.WriteLine(horse.Name + " | " + horse.Price); } Console.WriteLine("Press any key to end"); Console.ReadKey(); }
/// <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 ReadCharacterArchive(string fileLocation) { XMLImporter xmlImporter = new XMLImporter(_stringService); using (FileStream fileStream = File.Open(fileLocation, FileMode.Open)) { ReadCharacterArchive(fileStream); } OnPropertyChanged(nameof(CharacterCount)); OnPropertyChanged(nameof(BackgroundCount)); OnPropertyChanged(nameof(ClassCount)); OnPropertyChanged(nameof(ConditionCount)); OnPropertyChanged(nameof(FeatCount)); OnPropertyChanged(nameof(ItemCount)); OnPropertyChanged(nameof(LanguageCount)); OnPropertyChanged(nameof(MonsterCount)); OnPropertyChanged(nameof(RaceCount)); OnPropertyChanged(nameof(SpellCount)); }
/// <summary> /// Creates an instance of <see cref="CharactersViewModel"/> /// </summary> public CharactersViewModel(Compendium compendium, CharacterSearchService characterSearchService, CharacterSearchInput characterSearchInput, StringService stringService, StatService statService, DialogService dialogService, XMLImporter xmlImporter, XMLExporter xmlExporter, DocumentService documentService, DataManager dataManager) { _compendium = compendium; _characterSearchService = characterSearchService; _characterSearchInput = characterSearchInput; _stringService = stringService; _statService = statService; _dialogService = dialogService; _xmlImporter = xmlImporter; _xmlExporter = xmlExporter; _documentService = documentService; _dataManager = dataManager; _selectCharacterCommand = new RelayCommand(obj => true, obj => SelectCharacter(obj as CharacterListItemViewModel)); _editCharacterCommand = new RelayCommand(obj => true, obj => EditCharacter(obj as CharacterViewModel)); _exportCharacterCommand = new RelayCommand(obj => true, obj => ExportCharacter(obj as CharacterViewModel)); _cancelEditCharacterCommand = new RelayCommand(obj => true, obj => CancelEditCharacter()); _saveEditCharacterCommand = new RelayCommand(obj => HasUnsavedChanges, obj => SaveEditCharacter()); _resetFiltersCommand = new RelayCommand(obj => true, obj => InitializeSearch()); _addCommand = new RelayCommand(obj => true, obj => Add()); _copyCommand = new RelayCommand(obj => _selectedCharacter != null, obj => Copy()); _deleteCommand = new RelayCommand(obj => _selectedCharacter != null, obj => Delete()); _importCommand = new RelayCommand(obj => true, obj => Import()); _selectNextCommand = new RelayCommand(obj => true, obj => SelectNext()); _selectPreviousCommand = new RelayCommand(obj => true, obj => SelectPrevious()); _selectInfoEditCommand = new RelayCommand(obj => true, obj => SelectInfoEdit()); _selectLevelsEditCommand = new RelayCommand(obj => true, obj => SelectLevelsEdit()); _selectAbilitiesEditCommand = new RelayCommand(obj => true, obj => SelectAbilitiesEdit()); _selectProficiencyEditCommand = new RelayCommand(obj => true, obj => SelectProficiencyEdit()); _compendium.CharacterChanged += _compendium_CharacterChanged; Search(); }
public SimplifyKroneckerDeltas2(XMLImporter xmlImporter, TextResolver textResolver, LayoutConverter layoutConverter) : base(xmlImporter, textResolver, layoutConverter) { }
public DefineThePoissonEquation(XMLImporter xmlImporter, TextResolver textResolver, LayoutConverter layoutConverter) : base(xmlImporter, textResolver, layoutConverter) { }
public CalculateTheBeatFrequency1(XMLImporter xmlImporter, TextResolver textResolver, LayoutConverter layoutConverter) : base(xmlImporter, textResolver, layoutConverter) { }
public EvaluateTheKroneckerDelta(XMLImporter xmlImporter, TextResolver textResolver, LayoutConverter layoutConverter) : base(xmlImporter, textResolver, layoutConverter) { }
private void ReadCharacterArchive(Stream stream) { XMLImporter xmlImporter = new XMLImporter(_stringService); using (ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read)) { ZipArchiveEntry backgroundsEntry = archive.GetEntry("resources/backgrounds.xml"); using (StreamReader reader = new StreamReader(backgroundsEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _backgrounds.AddRange(xmlImporter.ReadBackgrounds(xml)); } ZipArchiveEntry classesEntry = archive.GetEntry("resources/classes.xml"); using (StreamReader reader = new StreamReader(classesEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _classes.AddRange(xmlImporter.ReadClasses(xml)); } ZipArchiveEntry conditionsEntry = archive.GetEntry("resources/conditions.xml"); using (StreamReader reader = new StreamReader(conditionsEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _conditions.AddRange(xmlImporter.ReadConditions(xml)); } ZipArchiveEntry featsEntry = archive.GetEntry("resources/feats.xml"); using (StreamReader reader = new StreamReader(featsEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _feats.AddRange(xmlImporter.ReadFeats(xml)); } ZipArchiveEntry itemsEntry = archive.GetEntry("resources/items.xml"); using (StreamReader reader = new StreamReader(itemsEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _items.AddRange(xmlImporter.ReadItems(xml)); } ZipArchiveEntry languagesEntry = archive.GetEntry("resources/languages.csv"); using (StreamReader reader = new StreamReader(languagesEntry.Open(), Encoding.UTF8)) { while (!reader.EndOfStream) { string languageLine = reader.ReadLine(); if (!String.IsNullOrWhiteSpace(languageLine)) { string[] parts = languageLine.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length == 2) { if (Guid.TryParse(parts[0], out Guid id)) { LanguageModel languageModel = new LanguageModel(); languageModel.Id = id; languageModel.Name = parts[1].Trim(); _languages.Add(languageModel); } } } } } ZipArchiveEntry monstersEntry = archive.GetEntry("resources/monsters.xml"); using (StreamReader reader = new StreamReader(monstersEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _monsters.AddRange(xmlImporter.ReadMonsters(xml)); } ZipArchiveEntry racesEntry = archive.GetEntry("resources/races.xml"); using (StreamReader reader = new StreamReader(racesEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _races.AddRange(xmlImporter.ReadRaces(xml)); } ZipArchiveEntry spellsEntry = archive.GetEntry("resources/spells.xml"); using (StreamReader reader = new StreamReader(spellsEntry.Open(), Encoding.UTF8)) { string xml = reader.ReadToEnd(); _spells.AddRange(xmlImporter.ReadSpells(xml)); } ZipArchiveEntry characterEntry = archive.GetEntry("character.ccc"); using (MemoryStream memoryStream = new MemoryStream()) { using (Stream characterEntryStream = characterEntry.Open()) { characterEntryStream.CopyTo(memoryStream); _characters.Add(memoryStream.ToArray()); } } } }
private void button1_Click(object sender, EventArgs e) { var importer = new XMLImporter(); importer.Import(); }
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(); } }