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(); } }
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 }; }
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); }
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; }