package com.asteria.utility.json;
import java.util.Objects;
import com.asteria.game.character.player.content.Requirement;
import com.asteria.utility.JsonLoader;
import com.google.common.base.Preconditions;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
/**
* The {@link JsonLoader} implementation that loads all equipment level
* requirements.
*
* @author lare96 <http://github.com/lare96>
*/
public final class EquipmentRequirementLoader extends JsonLoader {
/**
* Creates a new {@link EquipmentRequirementLoader}.
*/
public EquipmentRequirementLoader() {
super("./data/json/equipment/equipment_requirements.json");
}
@Override
public void load(JsonObject reader, Gson builder) {
int id = reader.get("id").getAsInt();
Requirement[] requirements = Objects.requireNonNull(builder.fromJson(reader.get("requirements"), Requirement[].class));
Preconditions.checkState(requirements.length > 0);
if (Requirement.REQUIREMENTS.containsKey(id))
throw new IllegalStateException("Duplicate key values [" + id + "] for equipment requirements.");
Requirement.REQUIREMENTS.put(id, requirements);
}
}