From 8e75512cfadda58cf100cd699d2095e59737015f Mon Sep 17 00:00:00 2001 From: Oskar Wiksten Date: Mon, 21 Jan 2013 00:20:03 +0100 Subject: [PATCH] Fixes to JSON parsing of resource files. --- .../resource/parsers/ConversationListParser.java | 12 ++++++------ .../resource/parsers/MonsterTypeParser.java | 8 ++++---- .../AndorsTrail/resource/parsers/QuestParser.java | 2 +- .../resource/parsers/ResourceParserUtils.java | 4 ++-- .../parsers/json/JsonCollectionParserFor.java | 13 ++++++++++++- .../resource/parsers/json/JsonFieldNames.java | 3 --- 6 files changed, 25 insertions(+), 17 deletions(-) diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java index 8810b9acb..dfe3e2c3a 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ConversationListParser.java @@ -24,8 +24,8 @@ public final class ConversationListParser extends JsonCollectionParserFor(id, new Phrase( - o.optString(JsonFieldNames.Phrase.message) + o.optString(JsonFieldNames.Phrase.message, null) , _replies , _rewards )); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/MonsterTypeParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/MonsterTypeParser.java index d008f7084..781d0f703 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/MonsterTypeParser.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/MonsterTypeParser.java @@ -50,12 +50,12 @@ public final class MonsterTypeParser extends JsonCollectionParserFor 0 - , o.optString(JsonFieldNames.Monster.faction) + , o.optString(JsonFieldNames.Monster.faction, null) , o.optInt(JsonFieldNames.Monster.monsterClass, MonsterType.MONSTERCLASS_HUMANOID) - , ResourceParserUtils.parseSize(o.optString(JsonFieldNames.Monster.size), size1x1) //TODO: This could be loaded from the tileset size instead. + , ResourceParserUtils.parseSize(o.optString(JsonFieldNames.Monster.size, null), size1x1) //TODO: This could be loaded from the tileset size instead. , ResourceParserUtils.parseImageID(tileLoader, o.getString(JsonFieldNames.Monster.iconID)) , maxAP , maxHP diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/QuestParser.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/QuestParser.java index f5fa50894..b00d67e60 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/QuestParser.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/QuestParser.java @@ -21,7 +21,7 @@ public final class QuestParser extends JsonCollectionParserFor { protected QuestLogEntry parseObject(JSONObject o) throws JSONException { return new QuestLogEntry( o.getInt(JsonFieldNames.QuestLogEntry.progress) - ,o.getString(JsonFieldNames.QuestLogEntry.logText) + ,o.optString(JsonFieldNames.QuestLogEntry.logText, null) ,o.optInt(JsonFieldNames.QuestLogEntry.rewardExperience, 0) ,o.optInt(JsonFieldNames.QuestLogEntry.finishesQuest, 0) > 0 ); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java index c539d9395..7f9e9165a 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/ResourceParserUtils.java @@ -75,8 +75,8 @@ public final class ResourceParserUtils { public static StatsModifierTraits parseStatsModifierTraits(JSONObject o) throws JSONException { if (o == null) return null; - ConstRange boostCurrentHP = parseConstRange(o.getJSONObject(JsonFieldNames.StatsModifierTraits.increaseCurrentHP)); - ConstRange boostCurrentAP = parseConstRange(o.getJSONObject(JsonFieldNames.StatsModifierTraits.increaseCurrentAP)); + ConstRange boostCurrentHP = parseConstRange(o.optJSONObject(JsonFieldNames.StatsModifierTraits.increaseCurrentHP)); + ConstRange boostCurrentAP = parseConstRange(o.optJSONObject(JsonFieldNames.StatsModifierTraits.increaseCurrentAP)); if (boostCurrentHP == null && boostCurrentAP == null) { if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { L.log("OPTIMIZE: Tried to parseStatsModifierTraits , where hasEffect=" + o.toString() + ", but all data was empty."); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonCollectionParserFor.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonCollectionParserFor.java index e9ac10cd8..69ef744bd 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonCollectionParserFor.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonCollectionParserFor.java @@ -6,6 +6,8 @@ import com.gpl.rpg.AndorsTrail.util.Pair; import org.json.JSONArray; import org.json.JSONException; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -19,7 +21,16 @@ public abstract class JsonCollectionParserFor extends JsonParserFor o : objects) { diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonFieldNames.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonFieldNames.java index 3299950c2..0187e94fd 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonFieldNames.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/parsers/json/JsonFieldNames.java @@ -1,8 +1,5 @@ package com.gpl.rpg.AndorsTrail.resource.parsers.json; -import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionEffect; -import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnEquip; - public final class JsonFieldNames { public static final class ActorCondition { public static final String conditionTypeID = "id";