/// <summary> /// Returns a Dictionary who's keys are Guids which represent Octgn Sets, and who's values are corresponding /// ConverterSet objects. /// </summary> /// <param name="game">The Octgn.DataNew.Entities.Game object to use to read sets from</param> /// <returns>A Dictionary of Octgn Set Guids and corresponding ConverterSet objects</returns> private static Dictionary<Guid, ConverterSet> BuildCardDatabase(Octgn.DataNew.Entities.Game game) { if (game == null) { throw new ArgumentNullException(); } // MTG has a property "MultiVerseId" which should be grabbed if it exists Octgn.DataNew.Entities.PropertyDef multiverseIdPropertyDef = game.CustomProperties.FirstOrDefault(p => p.Name.Equals("MultiVerseId", StringComparison.InvariantCultureIgnoreCase)); Dictionary<Guid, ConverterSet> sets = new Dictionary<Guid, ConverterSet>(); foreach (Octgn.DataNew.Entities.Set octgnSet in game.Sets()) { sets[octgnSet.Id] = new ConverterSet(octgnSet); foreach (Octgn.DataNew.Entities.Card card in octgnSet.Cards) { // Try to dig the MultiverseID property out of the Octgn.DataNew.Entities.Card // During testing, all properties seemed nested under the first KeyValuePair in card.Properties int multiverseID = 0; if (multiverseIdPropertyDef != null) { if (card.Properties.Count > 0) { KeyValuePair<string, Octgn.DataNew.Entities.CardPropertySet> firstCardPropertyKVP = card.Properties.First(); object multiverseIdString = null; if (firstCardPropertyKVP.Value.Properties.TryGetValue(multiverseIdPropertyDef, out multiverseIdString)) { int.TryParse(multiverseIdString.ToString(), out multiverseID); } } } sets[octgnSet.Id].AddNewConverterCard ( card.Id, card.Name, multiverseID ); } } foreach (KeyValuePair<Guid, ConverterSet> kvp in sets) { kvp.Value.SortConverterCards(); if (SettingsManager.SingletonInstance.SetsExcludedFromSearches.Contains(kvp.Key)) { kvp.Value.IncludeInSearches = false; } } return sets; }
/// <summary> /// Returns a Dictionary who's keys are Guids which represent Octgn Sets, and who's values are corresponding /// ConverterSet objects. /// </summary> /// <param name="game">The Octgn.DataNew.Entities.Game object to use to read sets from</param> /// <returns>A Dictionary of Octgn Set Guids and corresponding ConverterSet objects</returns> private static Dictionary<Guid, ConverterSet> BuildCardDatabase(Octgn.DataNew.Entities.Game game) { if (game == null) { throw new ArgumentNullException(); } // MTG has a property "MultiVerseId" which should be grabbed if it exists Octgn.DataNew.Entities.PropertyDef multiverseIdPropertyDef = game.CustomProperties.FirstOrDefault(p => p.Name.Equals("MultiVerseId", StringComparison.InvariantCultureIgnoreCase)); Dictionary<Guid, ConverterSet> sets = new Dictionary<Guid, ConverterSet>(); foreach (Octgn.DataNew.Entities.Set octgnSet in game.Sets()) { sets[octgnSet.Id] = new ConverterSet(octgnSet); foreach (Octgn.DataNew.Entities.Card card in octgnSet.Cards) { // Try to dig the MultiverseID property out of the Octgn.DataNew.Entities.Card // During testing, all properties seemed nested under the first KeyValuePair in card.Properties int multiverseID = 0; if (multiverseIdPropertyDef != null) { if (card.Properties.Count > 0) { KeyValuePair<string, Octgn.DataNew.Entities.CardPropertySet> firstCardPropertyKVP = card.Properties.First(); object multiverseIdString = null; if (firstCardPropertyKVP.Value.Properties.TryGetValue(multiverseIdPropertyDef, out multiverseIdString)) { int.TryParse(multiverseIdString.ToString(), out multiverseID); } } } string name = card.Name; // CoC uses special characters at the beginning of the card name to represent properties such as Unique and Steadfast. // These characters should not be included as part of the name for comparison. if (game.Id == ConvertEngine.Game.CoC.GameGuidStatic) { name = name.Trim(new Char[] { '{', '}', '[', ']', '<', '>', '_', '^', '*', ' ' }); } sets[octgnSet.Id].AddNewConverterCard ( card.Id, name, multiverseID ); } } foreach (KeyValuePair<Guid, ConverterSet> kvp in sets) { kvp.Value.SortConverterCards(); if (SettingsManager.SingletonInstance.SetsExcludedFromSearches.Contains(kvp.Key)) { kvp.Value.IncludeInSearches = false; } } return sets; }