Пример #1
0
        private void ParseSeriesBonus(JsonReader r, SeriesBonus bonus)
        {
            if (!r.Read() || r.TokenType != JsonToken.StartArray) throw new InvalidOperationException();

            while (r.Read() && r.TokenType != JsonToken.EndArray) {
                if (r.TokenType != JsonToken.StartObject) throw new InvalidOperationException();

                if (!r.Read() || r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

                var bonusKey = r.Value.ToString();

                if (!r.Read() || r.TokenType != JsonToken.StartObject) throw new InvalidOperationException();
                if (!r.Read() || r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

                var paramKey = Convert.ToInt32(r.Value);
                var value = r.ReadInt32();

                bonus.Bonuses.Add(new KeyValuePair<string, Bonus>(bonusKey, new Bonus { BaseParam = paramKey, Value = value }));

                if (!r.Read() || r.TokenType != JsonToken.EndObject) throw new InvalidOperationException();
                if (!r.Read() || r.TokenType != JsonToken.EndObject) throw new InvalidOperationException();
            }
        }
Пример #2
0
        private Bonus ParseBonus(JsonReader r)
        {
            if (r.TokenType != JsonToken.StartObject) throw new InvalidOperationException();
            if (!r.Read() || r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

            var key = Convert.ToInt32(r.Value);
            var value = r.ReadInt32();

            if (!r.Read() || r.TokenType != JsonToken.EndObject) throw new InvalidOperationException();

            return new Bonus { BaseParam = key, Value = value };
        }
Пример #3
0
        private System.Drawing.Color ParseColor(JsonReader reader)
        {
            if (!reader.Read() || reader.TokenType != JsonToken.StartArray) throw new InvalidOperationException();

            var r = reader.ReadInt32();
            var g = reader.ReadInt32();
            var b = reader.ReadInt32();

            if (!reader.Read() || reader.TokenType != JsonToken.EndArray) throw new InvalidOperationException();

            return System.Drawing.Color.FromArgb(r, g, b);
        }
Пример #4
0
        private Action ParseAction(JsonReader r)
        {
            if (r.TokenType != JsonToken.StartObject) throw new InvalidOperationException();
            if (!r.Read() || r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

            var paramKey = Convert.ToInt32(r.Value);

            if (!r.Read()) throw new InvalidOperationException();

            Action value;
            if (r.TokenType == JsonToken.StartObject) {
                var act = new RelativeAction { BaseParam = paramKey };

                while (r.Read() && r.TokenType != JsonToken.EndObject) {
                    if (r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException();

                    switch (r.Value.ToString()) {
                        case "rate":
                            act.Rate = r.ReadInt32();
                            break;
                        case "limit":
                            act.Limit = r.ReadInt32();
                            break;
                        default:
                            Console.Error.WriteLine("Unknown 'Item'.'action' data key: {0}", r.Value);
                            throw new NotSupportedException();
                    }
                }

                value = act;
            } else if (r.TokenType == JsonToken.Integer || r.TokenType == JsonToken.String) {
                value = new FixedAction { BaseParam = paramKey, Value = Convert.ToInt32(r.Value) };
            } else
                throw new InvalidOperationException();

            if (!r.Read() || r.TokenType != JsonToken.EndObject) throw new InvalidOperationException();

            return value;
        }