package com.asteria.utility.json;
import java.util.Objects;
import com.asteria.game.location.Position;
import com.asteria.game.object.ObjectDirection;
import com.asteria.game.object.ObjectNode;
import com.asteria.game.object.ObjectNodeManager;
import com.asteria.game.object.ObjectType;
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 object nodes.
*
* @author lare96 <http://github.com/lare96>
*/
public final class ObjectNodeLoader extends JsonLoader {
/**
* Create a new {@link ObjectNodeLoader}.
*/
public ObjectNodeLoader() {
super("./data/json/objects/object_nodes.json");
}
@Override
public void load(JsonObject reader, Gson builder) {
int id = reader.get("id").getAsInt();
Position position = Objects.requireNonNull(builder.fromJson(reader.get("position"), Position.class));
ObjectDirection face = Objects.requireNonNull(ObjectDirection.valueOf(reader.get("direction").getAsString()));
ObjectType type = Objects.requireNonNull(ObjectType.valueOf(reader.get("type").getAsString()));
Preconditions.checkState(!ObjectNodeManager.REMOVE_OBJECTS.contains(position));
ObjectNodeManager.register(new ObjectNode(id, position, face, type));
}
}