public static IDictionary <string, StatusCondition> BuildDictionary(StatusConditionConfig config) { IDictionary <string, StatusCondition> statusConditions = new Dictionary <string, StatusCondition>(); foreach (IList <object> row in config.Query.Data) { try { IList <string> stat = row.Select(r => r.ToString()).ToList(); string name = ParseHelper.SafeStringParse(stat, config.Name, "Name", false); if (string.IsNullOrEmpty(name)) { continue; } if (!statusConditions.TryAdd(name, new StatusCondition(config, stat))) { throw new NonUniqueObjectNameException("status condition"); } } catch (Exception ex) { throw new StatusConditionProcessingException((row.ElementAtOrDefault(config.Name) ?? string.Empty).ToString(), ex); } } return(statusConditions); }
/// <summary> /// Constructor. /// </summary> public StatusCondition(StatusConditionConfig config, IList <string> data) { this.Name = ParseHelper.SafeStringParse(data, config.Name, "Name", true); this.SpriteURL = ParseHelper.SafeURLParse(data, config.SpriteURL, "Sprite URL", false); this.Type = ParseStatusConditionType(data, config.Type); this.Turns = ParseHelper.OptionalInt_NonZeroPositive(data, config.Turns, "Turns", 0); this.TextFields = ParseHelper.StringListParse(data, config.TextFields); //Check if status condition effects are configured if (config.Effect != null) { this.Effect = BuildStatusConditionEffect(ParseHelper.SafeStringParse(data, config.Effect.Type, "Status Condition Effect Type", false), ParseHelper.StringListParse(data, config.Effect.Parameters, true)); } else { this.Effect = null; } }