mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-02-23 15:38:29 +01:00
WIP on parsing resource data as json instead of the old resource format.
This commit is contained in:
@@ -1,39 +1,35 @@
|
||||
package com.gpl.rpg.AndorsTrail.resource.parsers;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.traits.AbilityModifierTraits;
|
||||
import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader;
|
||||
import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonCollectionParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonFieldNames;
|
||||
import com.gpl.rpg.AndorsTrail.util.Pair;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public final class ActorConditionsTypeParser extends ResourceParserFor<ActorConditionType> {
|
||||
public final class ActorConditionsTypeParser extends JsonCollectionParserFor<ActorConditionType> {
|
||||
|
||||
private final DynamicTileLoader tileLoader;
|
||||
|
||||
public ActorConditionsTypeParser(final DynamicTileLoader tileLoader) {
|
||||
super(30);
|
||||
this.tileLoader = tileLoader;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Pair<String, ActorConditionType> parseRow(String[] parts) {
|
||||
final String conditionTypeID = parts[0];
|
||||
|
||||
AbilityModifierTraits stats = null;
|
||||
if (ResourceParserUtils.parseBoolean(parts[18], false)) {
|
||||
stats = ResourceParserUtils.parseAbilityModifierTraits(parts, 19);
|
||||
}
|
||||
|
||||
return new Pair<String, ActorConditionType>(conditionTypeID, new ActorConditionType(
|
||||
protected Pair<String, ActorConditionType> parseObject(JSONObject o) throws JSONException {
|
||||
final String conditionTypeID = o.getString(JsonFieldNames.ActorCondition.conditionTypeID);
|
||||
ActorConditionType result = new ActorConditionType(
|
||||
conditionTypeID
|
||||
, parts[1]
|
||||
, ResourceParserUtils.parseImageID(tileLoader, parts[2])
|
||||
, Integer.parseInt(parts[3])
|
||||
, ResourceParserUtils.parseBoolean(parts[4], false)
|
||||
, ResourceParserUtils.parseBoolean(parts[5], false)
|
||||
, ResourceParserUtils.parseStatsModifierTraits(parts, 6)
|
||||
, ResourceParserUtils.parseStatsModifierTraits(parts, 12)
|
||||
, stats
|
||||
));
|
||||
,o.getString(JsonFieldNames.ActorCondition.name)
|
||||
,ResourceParserUtils.parseImageID(tileLoader, o.getString(JsonFieldNames.ActorCondition.iconID))
|
||||
,o.getInt(JsonFieldNames.ActorCondition.category)
|
||||
,o.optInt(JsonFieldNames.ActorCondition.isStacking) > 0
|
||||
,o.optInt(JsonFieldNames.ActorCondition.isPositive) > 0
|
||||
,ResourceParserUtils.parseStatsModifierTraits(o.optJSONObject(JsonFieldNames.ActorCondition.roundEffect))
|
||||
,ResourceParserUtils.parseStatsModifierTraits(o.optJSONObject(JsonFieldNames.ActorCondition.fullRoundEffect))
|
||||
,ResourceParserUtils.parseAbilityModifierTraits(o.optJSONObject(JsonFieldNames.ActorCondition.abilityEffect))
|
||||
);
|
||||
return new Pair<String, ActorConditionType>(conditionTypeID, result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,65 +1,76 @@
|
||||
package com.gpl.rpg.AndorsTrail.resource.parsers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.conversation.Phrase;
|
||||
import com.gpl.rpg.AndorsTrail.conversation.Phrase.Reply;
|
||||
import com.gpl.rpg.AndorsTrail.conversation.Phrase.Reward;
|
||||
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
|
||||
import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer;
|
||||
import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonCollectionParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonFieldNames;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.util.Pair;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public final class ConversationListParser extends ResourceParserFor<Phrase> {
|
||||
import java.util.ArrayList;
|
||||
|
||||
public final class ConversationListParser extends JsonCollectionParserFor<Phrase> {
|
||||
|
||||
public ConversationListParser() {
|
||||
super(4);
|
||||
}
|
||||
|
||||
private final ResourceFileTokenizer replyResourceTokenizer = new ResourceFileTokenizer(6);
|
||||
private final ResourceObjectParser<Reply> replyParser = new ResourceObjectParser<Reply>() {
|
||||
private final JsonParserFor<Reply> replyParser = new JsonParserFor<Reply>() {
|
||||
@Override
|
||||
public Reply parseRow(String[] parts) {
|
||||
protected Reply parseObject(JSONObject o) throws JSONException {
|
||||
JSONObject requires = o.optJSONObject(JsonFieldNames.Reply.requires);
|
||||
String requiresProgress = null;
|
||||
String requiresItemTypeID = null;
|
||||
int requiresItemQuantity = 0;
|
||||
int itemRequirementType = Reply.ITEM_REQUIREMENT_TYPE_INVENTORY_REMOVE;
|
||||
if (requires != null) {
|
||||
requiresProgress = requires.optString(JsonFieldNames.ReplyRequires.progress);
|
||||
JSONObject requiresItem = o.optJSONObject(JsonFieldNames.ReplyRequires.item);
|
||||
if (requiresItem != null) {
|
||||
requiresItemTypeID = requiresItem.getString(JsonFieldNames.ReplyRequiresItem.itemID);
|
||||
requiresItemQuantity = requiresItem.getInt(JsonFieldNames.ReplyRequiresItem.quantity);
|
||||
itemRequirementType = requiresItem.getInt(JsonFieldNames.ReplyRequiresItem.requireType);
|
||||
}
|
||||
}
|
||||
return new Reply(
|
||||
parts[0] // text
|
||||
, parts[1] // nextPhrase
|
||||
, QuestProgress.parseQuestProgress(parts[2]) // requiresProgress
|
||||
, ResourceParserUtils.parseNullableString(parts[3]) // requiresItemType
|
||||
, ResourceParserUtils.parseInt(parts[4], 0) // requiresItemQuantity
|
||||
, ResourceParserUtils.parseInt(parts[5], Reply.ITEM_REQUIREMENT_TYPE_INVENTORY_REMOVE) // itemRequirementType
|
||||
);
|
||||
o.optString(JsonFieldNames.Reply.text)
|
||||
,o.optString(JsonFieldNames.Reply.nextPhraseID)
|
||||
,QuestProgress.parseQuestProgress(requiresProgress)
|
||||
,requiresItemTypeID
|
||||
,requiresItemQuantity
|
||||
,itemRequirementType
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
private final ResourceFileTokenizer rewardResourceTokenizer = new ResourceFileTokenizer(3);
|
||||
private final ResourceObjectParser<Reward> rewardParser = new ResourceObjectParser<Reward>() {
|
||||
private final JsonParserFor<Reward> rewardParser = new JsonParserFor<Reward>() {
|
||||
@Override
|
||||
public Reward parseRow(String[] parts) {
|
||||
protected Reward parseObject(JSONObject o) throws JSONException {
|
||||
return new Reward(
|
||||
Integer.parseInt(parts[0]) // rewardType
|
||||
, parts[1] // rewardID
|
||||
, ResourceParserUtils.parseInt(parts[2], 0) // value
|
||||
);
|
||||
o.getInt(JsonFieldNames.PhraseReward.rewardType)
|
||||
,o.getString(JsonFieldNames.PhraseReward.rewardID)
|
||||
,o.getInt(JsonFieldNames.PhraseReward.value)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public Pair<String, Phrase> parseRow(String[] parts) {
|
||||
// [id|message|rewards[rewardType|rewardID|value|]|replies[text|nextPhraseID|requires_Progress|requires_itemID|requires_Quantity|requires_Type|]|];
|
||||
|
||||
protected Pair<String, Phrase> parseObject(JSONObject o) throws JSONException {
|
||||
final String id = o.getString(JsonFieldNames.Phrase.phraseID);
|
||||
|
||||
final ArrayList<Reply> replies = new ArrayList<Reply>();
|
||||
replyResourceTokenizer.tokenizeArray(parts[3], replies, replyParser);
|
||||
replyParser.parseRows(o.optJSONArray(JsonFieldNames.Phrase.replies), replies);
|
||||
final Reply[] _replies = replies.toArray(new Reply[replies.size()]);
|
||||
|
||||
|
||||
final ArrayList<Reward> rewards = new ArrayList<Reward>();
|
||||
rewardResourceTokenizer.tokenizeArray(parts[2], rewards, rewardParser);
|
||||
rewardParser.parseRows(o.optJSONArray(JsonFieldNames.Phrase.rewards), rewards);
|
||||
Reward[] _rewards = rewards.toArray(new Reward[rewards.size()]);
|
||||
if (_rewards.length == 0) _rewards = null;
|
||||
|
||||
return new Pair<String, Phrase>(parts[0], new Phrase(
|
||||
ResourceParserUtils.parseNullableString(parts[1]) // message
|
||||
, _replies // replies
|
||||
, _rewards // rewards
|
||||
));
|
||||
|
||||
return new Pair<String, Phrase>(id, new Phrase(
|
||||
o.optString(JsonFieldNames.Phrase.message)
|
||||
, _replies
|
||||
, _rewards
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,45 +6,46 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.DropList;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemTypeCollection;
|
||||
import com.gpl.rpg.AndorsTrail.model.item.DropList.DropItem;
|
||||
import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer;
|
||||
import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonCollectionParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonFieldNames;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.util.L;
|
||||
import com.gpl.rpg.AndorsTrail.util.Pair;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public final class DropListParser extends ResourceParserFor<DropList> {
|
||||
public final class DropListParser extends JsonCollectionParserFor<DropList> {
|
||||
|
||||
private final JsonParserFor<DropItem> dropItemParser;
|
||||
|
||||
private final ResourceFileTokenizer droplistItemResourceTokenizer = new ResourceFileTokenizer(4);
|
||||
private final ResourceObjectParser<DropItem> dropItemParser;
|
||||
|
||||
public DropListParser(final ItemTypeCollection itemTypes) {
|
||||
super(2);
|
||||
this.dropItemParser = new ResourceObjectParser<DropItem>() {
|
||||
this.dropItemParser = new JsonParserFor<DropItem>() {
|
||||
@Override
|
||||
public DropItem parseRow(String[] parts) {
|
||||
protected DropItem parseObject(JSONObject o) throws JSONException {
|
||||
return new DropItem(
|
||||
itemTypes.getItemType(parts[0]) // Itemtype
|
||||
, ResourceParserUtils.parseChance(parts[3]) // Chance
|
||||
, ResourceParserUtils.parseQuantity(parts[1], parts[2]) // Quantity
|
||||
);
|
||||
itemTypes.getItemType(o.getString(JsonFieldNames.DropItem.itemID))
|
||||
,ResourceParserUtils.parseChance(o.getString(JsonFieldNames.DropItem.chance))
|
||||
,ResourceParserUtils.parseQuantity(o.getJSONObject(JsonFieldNames.DropItem.quantity))
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pair<String, DropList> parseRow(String[] parts) {
|
||||
// [id|items[itemID|quantity_Min|quantity_Max|chance|]|];
|
||||
|
||||
String droplistID = parts[0];
|
||||
|
||||
protected Pair<String, DropList> parseObject(JSONObject o) throws JSONException {
|
||||
String droplistID = o.getString(JsonFieldNames.DropList.dropListID);
|
||||
|
||||
JSONArray array = o.getJSONArray(JsonFieldNames.DropList.items);
|
||||
final ArrayList<DropItem> items = new ArrayList<DropItem>();
|
||||
droplistItemResourceTokenizer.tokenizeArray(parts[1], items, dropItemParser);
|
||||
DropItem[] items_ = items.toArray(new DropItem[items.size()]);
|
||||
|
||||
dropItemParser.parseRows(array, items);
|
||||
|
||||
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
|
||||
if (items_.length <= 0) {
|
||||
if (items.size() <= 0) {
|
||||
L.log("OPTIMIZE: Droplist \"" + droplistID + "\" has no dropped items.");
|
||||
}
|
||||
}
|
||||
return new Pair<String, DropList>(droplistID, new DropList(items_));
|
||||
|
||||
return new Pair<String, DropList>(droplistID, new DropList(items));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,24 @@
|
||||
package com.gpl.rpg.AndorsTrail.resource.parsers;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.model.item.ItemCategory;
|
||||
import com.gpl.rpg.AndorsTrail.resource.ResourceFileTokenizer.ResourceParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonCollectionParserFor;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonFieldNames;
|
||||
import com.gpl.rpg.AndorsTrail.util.Pair;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public final class ItemCategoryParser extends ResourceParserFor<ItemCategory> {
|
||||
|
||||
public ItemCategoryParser() {
|
||||
super(5);
|
||||
}
|
||||
public final class ItemCategoryParser extends JsonCollectionParserFor<ItemCategory> {
|
||||
|
||||
@Override
|
||||
public Pair<String, ItemCategory> parseRow(String[] parts) {
|
||||
String id = parts[0];
|
||||
final ItemCategory itemType = new ItemCategory(
|
||||
protected Pair<String, ItemCategory> parseObject(JSONObject o) throws JSONException {
|
||||
final String id = o.getString(JsonFieldNames.ItemCategory.itemCategoryID);
|
||||
ItemCategory result = new ItemCategory(
|
||||
id
|
||||
, parts[1] // displayName
|
||||
, ResourceParserUtils.parseInt(parts[2], 0) // actionType
|
||||
, ResourceParserUtils.parseInt(parts[3], -1) // inventorySlot
|
||||
, ResourceParserUtils.parseInt(parts[4], 0) // size
|
||||
);
|
||||
return new Pair<String, ItemCategory>(id, itemType);
|
||||
,o.getString(JsonFieldNames.ItemCategory.name)
|
||||
,o.optInt(JsonFieldNames.ItemCategory.actionType, 0)
|
||||
,o.optInt(JsonFieldNames.ItemCategory.inventorySlot, -1)
|
||||
,o.optInt(JsonFieldNames.ItemCategory.size, 0)
|
||||
);
|
||||
return new Pair<String, ItemCategory>(id, result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,13 @@ import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.traits.AbilityModifierTraits;
|
||||
import com.gpl.rpg.AndorsTrail.model.ability.traits.StatsModifierTraits;
|
||||
import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader;
|
||||
import com.gpl.rpg.AndorsTrail.util.ConstRange;
|
||||
import com.gpl.rpg.AndorsTrail.util.L;
|
||||
import com.gpl.rpg.AndorsTrail.util.Range;
|
||||
import com.gpl.rpg.AndorsTrail.util.Size;
|
||||
import com.gpl.rpg.AndorsTrail.resource.parsers.json.JsonFieldNames;
|
||||
import com.gpl.rpg.AndorsTrail.util.*;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public final class ResourceParserUtils {
|
||||
|
||||
@@ -155,6 +158,7 @@ public final class ResourceParserUtils {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static final ConstRange zero_or_one = new ConstRange(1, 0);
|
||||
private static final ConstRange one = new ConstRange(1, 1);
|
||||
@@ -162,9 +166,9 @@ public final class ResourceParserUtils {
|
||||
private static final ConstRange ten = new ConstRange(10, 10);
|
||||
public static ConstRange parseQuantity(String min, String max) {
|
||||
if (min.equals("0") && max.equals("1")) return zero_or_one;
|
||||
else if (min.equals("1") && max.equals("1")) return one;
|
||||
else if (min.equals("5") && max.equals("5")) return five;
|
||||
else if (min.equals("10") && max.equals("10")) return ten;
|
||||
if (min.equals("1") && max.equals("1")) return one;
|
||||
if (min.equals("5") && max.equals("5")) return five;
|
||||
if (min.equals("10") && max.equals("10")) return ten;
|
||||
return parseConstRange(min, max);
|
||||
}
|
||||
|
||||
@@ -197,4 +201,64 @@ public final class ResourceParserUtils {
|
||||
}
|
||||
else return new ConstRange(100, parseInt(v, 10));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static ConstRange parseConstRange(JSONObject o) throws JSONException {
|
||||
if (o == null) return null;
|
||||
|
||||
return new ConstRange(o.getInt(JsonFieldNames.Range.max), o.getInt(JsonFieldNames.Range.min));
|
||||
}
|
||||
|
||||
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));
|
||||
if (boostCurrentHP == null && boostCurrentAP == null) {
|
||||
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
|
||||
L.log("OPTIMIZE: Tried to parseStatsModifierTraits , where hasEffect=" + o.toString() + ", but all data was empty.");
|
||||
}
|
||||
return null;
|
||||
} else {
|
||||
return new StatsModifierTraits(
|
||||
o.optInt(JsonFieldNames.StatsModifierTraits.visualEffectID, StatsModifierTraits.VISUAL_EFFECT_NONE)
|
||||
,boostCurrentHP
|
||||
,boostCurrentAP
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public static AbilityModifierTraits parseAbilityModifierTraits(JSONObject o) throws JSONException {
|
||||
if (o == null) return null;
|
||||
|
||||
ConstRange increaseAttackDamage = parseConstRange(o.optJSONObject(JsonFieldNames.AbilityModifierTraits.increaseAttackDamage));
|
||||
return new AbilityModifierTraits(
|
||||
o.optInt(JsonFieldNames.AbilityModifierTraits.increaseMaxHP, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseMaxAP, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseMoveCost, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseUseItemCost, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseReequipCost, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseAttackCost, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseAttackChance, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseBlockChance, 0)
|
||||
,increaseAttackDamage.current
|
||||
,increaseAttackDamage.max
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseCriticalSkill, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.setCriticalMultiplier, 0)
|
||||
,o.optInt(JsonFieldNames.AbilityModifierTraits.increaseDamageResistance, 0)
|
||||
);
|
||||
}
|
||||
|
||||
public static ConstRange parseQuantity(JSONObject obj) throws JSONException {
|
||||
final int min = obj.getInt(JsonFieldNames.Range.min);
|
||||
final int max = obj.getInt(JsonFieldNames.Range.max);
|
||||
if (min == 0 && max == 1) return zero_or_one;
|
||||
if (min == 1 && max == 1) return one;
|
||||
if (min == 5 && max == 5) return five;
|
||||
if (min == 10 && max == 10) return ten;
|
||||
return parseConstRange(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.gpl.rpg.AndorsTrail.resource.parsers.json;
|
||||
|
||||
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
|
||||
import com.gpl.rpg.AndorsTrail.util.L;
|
||||
import com.gpl.rpg.AndorsTrail.util.Pair;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
public abstract class JsonCollectionParserFor<T> extends JsonParserFor<Pair<String, T>> {
|
||||
public HashSet<String> parseRows(String input, HashMap<String, T> dest) {
|
||||
|
||||
HashSet<String> ids = new HashSet<String>();
|
||||
ArrayList<Pair<String, T>> objects = new ArrayList<Pair<String, T>>();
|
||||
|
||||
try {
|
||||
parseRows(new JSONArray(input), objects);
|
||||
} catch (JSONException e) {
|
||||
L.log("ERROR loading resource data: " + e.toString());
|
||||
}
|
||||
|
||||
for (Pair<String, T> o : objects) {
|
||||
final String id = o.first;
|
||||
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
|
||||
if (id == null || id.length() <= 0) {
|
||||
L.log("WARNING: Entity " + o.second.toString() + " has empty id.");
|
||||
} else if (dest.containsKey(id)) {
|
||||
L.log("WARNING: Entity " + id + " is duplicated.");
|
||||
}
|
||||
}
|
||||
dest.put(id, o.second);
|
||||
ids.add(id);
|
||||
}
|
||||
return ids;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.gpl.rpg.AndorsTrail.resource.parsers.json;
|
||||
|
||||
public final class JsonFieldNames {
|
||||
public static final class ActorCondition {
|
||||
public static final String conditionTypeID = "id";
|
||||
public static final String name = "name";
|
||||
public static final String iconID = "iconID";
|
||||
public static final String category = "category";
|
||||
public static final String isStacking = "isStacking";
|
||||
public static final String isPositive = "isPositive";
|
||||
public static final String roundEffect = "roundEffect";
|
||||
public static final String fullRoundEffect = "fullRoundEffect";
|
||||
public static final String abilityEffect = "abilityEffect";
|
||||
}
|
||||
|
||||
public static final class StatsModifierTraits {
|
||||
public static final String visualEffectID = "visualEffectID";
|
||||
public static final String increaseCurrentHP = "increaseCurrentHP";
|
||||
public static final String increaseCurrentAP = "increaseCurrentAP";
|
||||
}
|
||||
|
||||
public static final class AbilityModifierTraits {
|
||||
public static final String increaseMaxHP = "increaseMaxHP";
|
||||
public static final String increaseMaxAP = "increaseMaxAP";
|
||||
public static final String increaseMoveCost = "increaseMoveCost";
|
||||
public static final String increaseUseItemCost = "increaseUseItemCost";
|
||||
public static final String increaseReequipCost = "increaseReequipCost";
|
||||
public static final String increaseAttackCost = "increaseAttackCost";
|
||||
public static final String increaseAttackChance = "increaseAttackChance";
|
||||
public static final String increaseCriticalSkill = "increaseCriticalSkill";
|
||||
public static final String setCriticalMultiplier = "setCriticalMultiplier";
|
||||
public static final String increaseAttackDamage = "increaseAttackDamage";
|
||||
public static final String increaseBlockChance = "increaseBlockChance";
|
||||
public static final String increaseDamageResistance = "increaseDamageResistance";
|
||||
}
|
||||
|
||||
public static final class ItemCategory {
|
||||
public static final String itemCategoryID = "id";
|
||||
public static final String name = "name";
|
||||
public static final String actionType = "actionType";
|
||||
public static final String inventorySlot = "inventorySlot";
|
||||
public static final String size = "size";
|
||||
}
|
||||
|
||||
public static final class DropList {
|
||||
public static final String dropListID = "id";
|
||||
public static final String items = "items";
|
||||
}
|
||||
|
||||
public static final class DropItem {
|
||||
public static final String itemID = "itemID";
|
||||
public static final String quantity = "quantity";
|
||||
public static final String chance = "chance";
|
||||
}
|
||||
|
||||
public static final class Range {
|
||||
public static final String min = "min";
|
||||
public static final String max = "max";
|
||||
}
|
||||
|
||||
public static final class Phrase {
|
||||
public static final String phraseID = "id";
|
||||
public static final String message = "message";
|
||||
public static final String rewards = "rewards";
|
||||
public static final String replies = "replies";
|
||||
}
|
||||
|
||||
public static final class Reply {
|
||||
public static final String text = "text";
|
||||
public static final String nextPhraseID = "nextPhraseID";
|
||||
public static final String requires = "requires";
|
||||
}
|
||||
|
||||
public static final class ReplyRequires {
|
||||
public static final String progress = "progress";
|
||||
public static final String item = "item";
|
||||
}
|
||||
|
||||
public static final class ReplyRequiresItem {
|
||||
public static final String itemID = "itemID";
|
||||
public static final String quantity = "quantity";
|
||||
public static final String requireType = "requireType";
|
||||
}
|
||||
|
||||
public static final class PhraseReward {
|
||||
public static final String rewardType = "rewardType";
|
||||
public static final String rewardID = "rewardID";
|
||||
public static final String value = "value";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.gpl.rpg.AndorsTrail.resource.parsers.json;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public abstract class JsonParserFor<T> {
|
||||
public void parseRows(JSONArray array, ArrayList<T> dest) throws JSONException {
|
||||
if (array == null) return;
|
||||
|
||||
for (int i = 0; i < array.length(); ++i) {
|
||||
JSONObject o = array.getJSONObject(i);
|
||||
dest.add(parseObject(o));
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract T parseObject(JSONObject o) throws JSONException;
|
||||
}
|
||||
Reference in New Issue
Block a user