package speiger.src.coreengine.assets;

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.nio.ByteBuffer;

import com.google.gson.JsonObject;

public interface IAsset extends Closeable
{
	public AssetLocation getLocation();
	
	public IAsset subAsset(String alternative);
	
	public InputStream getStream() throws IOException;
	
	public ByteBuffer getBytes() throws IOException;
	
	public BufferedReader getStringReader() throws IOException;
	
	public JsonObject getJsonObject() throws IOException;
	
	public BufferedImage getTexture() throws Exception;
	
	public <T> T getCustom(Class<T> clz) throws IOException;
}
