public static Creature fromJSONObject(JSONObject json) { int creatureId = (int)json.GetField("creatureId").n; string creatureName = json.GetField("creatureName").str; CreatureStats baseStats = CreatureStats.fromJSONObject(json.GetField("baseStats")); //TODO deserialize Abilities Ability ability = null; HashSet <Move> moves = new HashSet <Move>(); foreach (JSONObject moveName in json.GetField("moves").list) { string n = moveName.str; moves.Add(MoveLibrary.get(n)); } FocalPoints focalPoints = FocalPoints.fromJSONObject(json.GetField("focalPoints")); CreatureForm baseForm = CreatureForm.fromJSONObject(json.GetField("baseForm")); List <CreatureForm> availableForms = new List <CreatureForm>(); foreach (JSONObject formJSON in json.GetField("availableForms").list) { CreatureForm creatureForm = CreatureForm.fromJSONObject(formJSON); availableForms.Add(CreatureForm.fromJSONObject(formJSON)); } Creature result = new Creature(creatureId, creatureName, moves, focalPoints, ability, baseStats, baseForm, availableForms); return(result); }
public void testCreatureFormDeserialization() { string form1 = "{" + "\"creatureTypes\":[\"Flame\"]," + "\"statMods\":{" + "\"STR\":[5, 1]," + "\"ARM\":[0, 2]," + "\"SPD\":[-40, .85] " + "}," + "\"moveId\":null," + "\"abilityId\":1," + "\"revealAction\":null" + "}"; CreatureForm result = CreatureForm.fromJSONObject(JSONObject.Create(form1)); List <Pair <StatName, StatModifier> > expectedMods = new List <Pair <StatName, StatModifier> >(); expectedMods.Add(new Pair <StatName, StatModifier>(StatName.STR, new StatModifier(5, 1))); expectedMods.Add(new Pair <StatName, StatModifier>(StatName.ARM, new StatModifier(0, 2))); expectedMods.Add(new Pair <StatName, StatModifier>(StatName.SPD, new StatModifier(-40, .85))); HashSet <CreatureType> creatureTypes = new HashSet <CreatureType>(); creatureTypes.Add(CreatureType.creatureTypesByName["Flame"]); CreatureForm expected = new CreatureForm(creatureTypes, expectedMods, null, null, null); CreatureForm actual = CreatureForm.fromJSONObject(JSONObject.Create(form1)); Assert.That(expected.Equals(actual)); }