package com.asteria.utility.json; import java.util.Objects; import com.asteria.game.item.ItemDefinition; import com.asteria.utility.JsonLoader; import com.google.gson.Gson; import com.google.gson.JsonObject; /** * The {@link JsonLoader} implementation that loads all item definitions. * * @author lare96 <http://github.com/lare96> */ public final class ItemDefinitionLoader extends JsonLoader { /** * Creates a new {@link ItemDefinitionLoader}. */ public ItemDefinitionLoader() { super("./data/json/items/item_definitions.json"); } @Override public void load(JsonObject reader, Gson builder) { int index = reader.get("id").getAsInt(); String name = Objects.requireNonNull(reader.get("name").getAsString()); String description = Objects.requireNonNull(reader.get("examine").getAsString()); int equipmentSlot = reader.get("equipmentType").getAsInt(); boolean noteable = reader.get("noteable").getAsBoolean(); boolean stackable = reader.get("stackable").getAsBoolean(); int specialPrice = reader.get("specialStorePrice").getAsInt(); int generalPrice = reader.get("generalStorePrice").getAsInt(); int highAlchValue = reader.get("highAlchValue").getAsInt(); int lowAlchValue = reader.get("lowAlchValue").getAsInt(); double weight = reader.get("weight").getAsDouble(); int[] bonus = builder.fromJson(reader.get("bonuses").getAsJsonArray(), int[].class); boolean twoHanded = reader.get("twoHanded").getAsBoolean(); boolean platebody = reader.get("platebody").getAsBoolean(); boolean fullHelm = reader.get("fullHelm").getAsBoolean(); boolean tradeable = reader.get("tradeable").getAsBoolean(); ItemDefinition.DEFINITIONS[index] = new ItemDefinition(index, name, description, equipmentSlot, noteable, stackable, specialPrice, generalPrice, lowAlchValue, highAlchValue, weight, bonus, twoHanded, fullHelm, platebody, tradeable); } }