public void ParseJSON(JSONNode json) { Identity = json["identity"].AsDecodedURL(); MinCount = json["min-count"].AsInt; MaxCount = json["max-count"].AsInt; RequireAwoken = json["awoken"].AsBool; Quality = json["quality"].AsEnum <HeroQuality>(); ItemsGuaranteed = new RetireRewardDictionary(); ItemsRandom = new RetireRewardDictionary(); Types = new List <HeroType>(); //Parse the Key-Value pairs in the Guaranteed & Random items: var guaranteedItems = JSONManager.SplitKVFloats(json["guaranteed-items"]); var randomItems = JSONManager.SplitKVFloats(json["random-items"]); foreach (var kv in guaranteedItems) { ItemsGuaranteed.Add(kv.Key, kv.Value); } foreach (var kv in randomItems) { ItemsRandom.Add(kv.Key, kv.Value); } //Validate this entry... if (MinCount > MaxCount) { JSONError("MinCount > MaxCount, should probably swap these in RetireRewards table."); } if (ItemsGuaranteed.Count == 0 && ItemsRandom.Count == 0) { JSONError("RetireReward doesn't have any Guaranteed -or- Random items!"); } //Tracer.trace(Debug()); }