/// <summary> /// Gets group names of registered effects. /// </summary> /// <param name="sortAlpha">True to sort group names by alpha.</param> /// <param name="craftingStations">Filter by allowed magic crafting stations.</param> /// <returns>Array of group names.</returns> public string[] GetGroupNames(bool sortAlpha = true, MagicCraftingStations craftingStations = MagicCraftingFlags_All) { List <string> groupNames = new List <string>(); // Get group list foreach (BaseEntityEffect effect in magicEffectTemplates.Values) { // Skip effects not fitting at least one station requirement if ((craftingStations & effect.Properties.AllowedCraftingStations) == 0) { continue; } // Ignore duplicate groups if (!groupNames.Contains(effect.Properties.GroupName)) { groupNames.Add(effect.Properties.GroupName); } } // Sort if required if (sortAlpha) { groupNames.Sort(); } return(groupNames.ToArray()); }
/// <summary> /// Gets interface to all effect templates belonging to group name. /// </summary> /// <param name="groupName">The group name to collect effects from.</param> /// <param name="craftingStations">Filter by allowed magic crafting stations.</param> /// <returns>List of effect templates.</returns> public List <IEntityEffect> GetEffectTemplates(string groupName, MagicCraftingStations craftingStations = MagicCraftingFlags_All) { List <IEntityEffect> effectTemplates = new List <IEntityEffect>(); foreach (IEntityEffect effectTemplate in magicEffectTemplates.Values.Where(effect => effect.Properties.GroupName == groupName)) { // Skip effects not fitting at least one station requirement if ((craftingStations & effectTemplate.Properties.AllowedCraftingStations) == 0) { continue; } effectTemplates.Add(effectTemplate); } return(effectTemplates); }
/// <summary> /// Gets subgroup names of registered effects. /// </summary> /// <param name="groupName">The group name to collect subgroups of.</param> /// <param name="sortAlpha">True to sort subgroup names by alpha.</param> /// <param name="craftingStations">Filter by allowed magic crafting stations.</param> /// <returns>Array of subgroup names.</returns> public string[] GetSubGroupNames(string groupName, bool sortAlpha = true, MagicCraftingStations craftingStations = MagicCraftingFlags_All) { List <string> subGroupNames = new List <string>(); foreach (BaseEntityEffect effect in magicEffectTemplates.Values.Where(effect => effect.Properties.GroupName == groupName)) { // Skip effects not fitting at least one station requirement if ((craftingStations & effect.Properties.AllowedCraftingStations) == 0) { continue; } subGroupNames.Add(effect.Properties.SubGroupName); } // Sort if required if (sortAlpha) { subGroupNames.Sort(); } return(subGroupNames.ToArray()); }