package ch.epfl.isochrone.tiledmap;

/**
 * Classe servant à stocker des Tiles déjà créées pour ne pas les refaire à chaque fois
 * 
 * @author Charles Thiebaut (238935)
 * @author Arnaud Delamare (234841)
 * 
 */
public class CachedTileProvider implements TileProvider{
    private TileProvider tp;
    private TileCache cache;
    public int temp=0;
    
    
    /**
     * 
     * @param tp
     *       Le TileProvider dont les tiles doivent être stockées
     */
    public CachedTileProvider(TileProvider tp)
    {
        this.tp=tp;
        this.cache=new TileCache();
    }
    
    /**
     * 
     * @param zoom
     *        Le zoom de la Tile
     *        
     * @param x
     *        La position x de la Tile
     *        
     * @param y
     *        La position y de la Tile
     */
    @Override
    public Tile tileAt(int zoom, int x, int y) {
        Tile t = cache.get(zoom, x, y); 
        
        if (t==null)
        {
            t = tp.tileAt(zoom, x, y);
            cache.put(zoom, x, y, t);
        }

        return t;
    }
}
