Пример #1
0
        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);
        }
Пример #2
0
        /// <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;
            }
        }